如何使用SetWindowsHookEx在Windows上钩住特定API?

如何使用SetWindowsHookEx在Windows上钩住特定API?,windows,api,hook,Windows,Api,Hook,我试图在Windows上的其他进程(我可能不知道进程ID)中挂接API(比如MessageBox()),我知道我必须使用SetWindowsHookEx()函数。但我仍然有三个问题: 1) SetWindowsHookEx()函数能否使钩子全局化,即不限于当前进程?(当其他应用程序调用此API时,它被钩住了?) 2) 如果我想用我自己的函数替换被钩住的API,我应该怎么做 3) 我读了很多资料,发现了“钩子过程”或“钩子函数”这个术语。我该如何理解这一点?目前,我将它作为替换API(再说一遍,M

我试图在Windows上的其他进程(我可能不知道进程ID)中挂接API(比如MessageBox()),我知道我必须使用SetWindowsHookEx()函数。但我仍然有三个问题:

1) SetWindowsHookEx()函数能否使钩子全局化,即不限于当前进程?(当其他应用程序调用此API时,它被钩住了?)

2) 如果我想用我自己的函数替换被钩住的API,我应该怎么做


3) 我读了很多资料,发现了“钩子过程”或“钩子函数”这个术语。我该如何理解这一点?目前,我将它作为替换API(再说一遍,MessageBox)的函数。

这不是
SetWindowsHookEx
的用途
SetWindowsHookEx
用于挂接windows消息,而不是API(例如,如果您想知道窗口何时更改大小或何时创建)


挂钩API调用更复杂、更混乱。没有一种内在的方法可以做到这一点;您通常希望找到一个库来帮助您,例如。

这不是
SetWindowsHookEx
的用途
SetWindowsHookEx
用于挂接windows消息,而不是API(例如,如果您想知道窗口何时更改大小或何时创建)

挂钩API调用更复杂、更混乱。没有一种内在的方法可以做到这一点;您通常希望找到一个库来帮助您,例如。

您可以使用它。使用此库,即使使用.NET,您也可以在10行代码中钩住任何API 迂回的不同之处在于,您不必编写插入每个进程的代码。您可以钩住所有需要的进程,只需附加它们。然后,您可以在自己的流程中接收呼叫。

您可以使用此功能。使用此库,即使使用.NET,您也可以在10行代码中钩住任何API
迂回的不同之处在于,您不必编写插入每个进程的代码。您可以钩住所有需要的进程,只需附加它们。然后,您将在自己的流程中接收呼叫。

谢谢!事实上,我知道一些迂回的情况,但我想使用SetWindowsHookEx()来钩住API。现在我在做这件事时遇到了一些问题。无论如何,感谢您对“SetWindowsHookEx()”的解释,我将尝试使用Detours。还有一个问题,任何Detours API能否实现全局钩子?谢谢!事实上,我知道一些迂回的情况,但我想使用SetWindowsHookEx()来钩住API。现在我在做这件事时遇到了一些问题。无论如何,感谢您对“SetWindowsHookEx()”的解释,我将尝试使用Detours。还有一个问题,任何Detours API是否可以实现全局钩子?我导航到了Devare的网站,发现它确实很实用。但是,它似乎不支持C/C++。我想用C/C++实现这个钩子。我已经下载了一些设备供以后使用。谢谢它支持C/C++,它是COM对象,可以用任何语言使用。谢谢,我回到DeBaLead论坛,发现没有C++样本。如果没有一个样本,我可能需要很长时间才能开始。我浏览了Deviare的网站,发现它真的很实用。但是,它似乎不支持C/C++。我想用C/C++实现这个钩子。我已经下载了一些设备供以后使用。谢谢它支持C/C++,它是COM对象,可以用任何语言使用。谢谢,我回到DeBaLead论坛,发现没有C++样本。如果没有样品,我可能会觉得时间太长。