SetWindowsHookEx失败,错误1428

时间:2012-09-10 18:50:29

标签: c# windows setwindowshookex

我尝试通过以下代码挂钩到开始按钮。

// Create an instance of HookProc.
StartHookProcedure = new CallBack(StartHookProc);
IntPtr desktop = FindWindowEx(
  IntPtr.Zero, IntPtr.Zero, "Progman", null);                
uint procId = 0;
uint threadId = GetWindowThreadProcessId(desktop, out procId);
Process process = Process.GetCurrentProcess();
ProcessModule module = process.MainModule;

IntPtr hModule = GetModuleHandle(null); // get my module handle...
//IntPtr start = FindWindowEx(desktop, IntPtr.Zero, "Button", null);

hHook = SetWindowsHookEx(WH_GETMESSAGE,
  StartHookProcedure, hModule, (int)threadId);
//If the SetWindowsHookEx function fails.
if (hHook == 0)
{
  int err = Marshal.GetLastWin32Error();
  MessageBox.Show("SetWindowsHookEx Failed" + err.ToString());
  return;
}

SetWindowHookEx总是遇到错误1428 ERROR_HOOK_NEEDS_HMOD

  

如果没有模块句柄,则无法设置非本地挂钩。

我无法理解这一点。虽然我正在呼叫GetModuleHandle(null),但它失败了。

0 个答案:

没有答案