SetWindowsHooks to Hook另一个程序

时间:2016-04-03 07:10:22

标签: c#

我是WindowHooks中的新手,我的目标是"挂钩鼠标,键盘,并从另一个进程找到信息",然后我想我会尝试挂钩它。我是用C#制作一个窗口应用程序(我不使用DLL)。

if(hHook == 0)
{
MouseHookProcedure = new HookProc(mainForm.MouseHookProc);
hHook = SetWindowsHookEx(WH_MOUSE,MouseHookProcedure,(IntPtr)0,GetCurrentThreadID())
if(hHook == 0)
MessageBox.Show("SetWindowsHookEx Failed");
return;

MH_MOUSE = 7;

和MouseHookProc是Windows应用程序中的公共静态int(我在windows应用程序中编写)。 钩子工作,但只在其自身,但我需要它挂钩另一个过程。我尝试从GetCurrentThreadID()更改为GetWindowThreadProcessID(hWnd, NULL),但它失败了,我不知道为什么。 代码有什么问题吗? p / s:我不太了解Window Hooks,我是从MSDN学到的,这里是link

2 个答案:

答案 0 :(得分:0)

嗯,我不知道这是否是您正在寻找的答案......

但是,在您的代码中,您已经编写了swtWindowsHookEx()而不是setWindowsHookEx()。

也许如果你纠正它,你就会得到你想要的东西。

欢呼和快乐的节目!

答案 1 :(得分:0)

感谢Hans Passant,我使用Global钩子获取所有信息,然后GetForegroundWindow()检查我有的列表句柄。这样,我不需要使用DLL,但我仍然可以通过鼠标/键盘消息来写入密钥日志。