钩子前景窗口

本文关键字:窗口 | 更新日期: 2023-09-27 18:16:28

如何钩住前景窗口?

目前我正在尝试

using (Process processTmp = Process.GetCurrentProcess())
{
  using (ProcessModule module = processTmp.MainModule)
  {
    IntPtr hModule = Win32.GetModuleHandle(module.ModuleName);
    uint threadid = Win32.GetWindowThreadProcessId(Win32.GetForegroundWindow(), IntPtr.Zero);
    //WH_CALLWNDPROC = 4
    m_HookId = Win32.SetWindowsHookEx(4, m_HookProcedure, hModule, threadid); 
    if (m_HookId == IntPtr.Zero)
    {
      int tmp =
        Marshal.GetLastWin32Error();
    }
  }
}

但是m_HookID总是IntPtr。没有模块句柄(ERROR_HOOK_NEEDS_HMOD)就不能设置非本地钩子。所以看起来hModule有问题。

有什么建议吗?Tnx .

钩子前景窗口

不能将托管程序集注入到进程中。需要一个本地DLL,用C、c++或Delphi等语言编写。这个项目可以作为您需要的DLL的源代码。