日期:2014-05-18 浏览次数:21292 次
public void HookStart()
{
int wordCalcID = 0;
int wordCalcProcess = 0;
const int PROCESS_ALL_ACCESS = 0x1F0FFF;
const int PROCESS_VM_READ = 0x0010;
const int PROCESS_VM_WRITE = 0x0020;
if(wordWnd!= null)
{
GetWindowThreadProcessId((System.IntPtr)wordWnd, out wordCalcID);
wordCalcProcess = OpenProcess(PROCESS_ALL_ACCESS, false, wordCalcID);
}
else
{
MessageBox.Show("Not Found WordWindow");
}
if (hKeyboardHook == 0)
{
// 创建HookProc实例
KeyboardHookProcedure = new HookProc(KeyAndMouseHookProc);
// 设置线程钩子
if (wordCalcProcess !=0)
{
hKeyboardHook = SetWindowsHookEx(7, KeyboardHookProcedure,(System.IntPtr)wordCalcProcess,
0);
// 如果设置钩子失败
if (hKeyboardHook == 0)
{
HookStop();
throw new Exception("SetWindowsHookEx failed.");
}
}
else if (wordCalcProcess==0)
{
MessageBox.Show("ThreadId found error");
}
}
}