繁体   English   中英

如何使用SetWindowsHookEx挂钩Windows上的特定API?

how to hook a specific API on Windows with SetWindowsHookEx?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

1)SetWindowsHookEx()函数可以使钩子全局,即不限于当前进程? (当其他应用程序调用此API时,它会被挂钩吗?)

2)如果我想用自己的函数替换需要连接的API,该怎么办?

3)我阅读了许多材料,并发现了术语“挂钩过程”或“挂钩功能”。 我应该如何理解? 当前,我将其用作替换API的函数(再说一遍,MessageBox)。

2 个回复

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

挂钩API调用更复杂,更混乱。 没有内置的方法可以做到。 您通常想找到一个图书馆来帮助您,例如Detours

您可以为此使用Deviare API Hook 使用此库,即使使用.NET,也可以将任何API插入10行代码中。与Detours的不同之处在于,您不必编写在每个过程中插入的代码。 您可以仅挂接它们就钩住所有想要的进程。 然后,您将以自己的方式接听电话。

1 SetWindowsHookEx仅挂钩特定的键盘

我正在尝试从充当楔形键盘的RFID扫描仪中捕获所有按键。 我有一个使用SetWindowsHooEx获取所有键盘按键按下的类。 这意味着它也在捕获实际的键盘。 我想知道是否可以通过名称或HID(最好是名称)指定要挂接到哪个键盘的方法? 如果有办法,将不胜感激代码示例。 下 ...

2 SetWindowsHookEx不能反复挂钩特定的应用程序

我想使用SetWindowsHookEx()来按下用户的键并单击鼠标。 而且我已经定义了一个全局键盘/鼠标挂钩,并与SetWindowsHookEx一起安装。 这些钩子几乎可以在所有应用程序上使用,但不能在特定应用程序上使用(例如Cain&Abel)。 问题是: 当我第一次单击C ...

7 SetWindowsHookEx挂钩停止工作

键盘钩子不触发事件并在处置时引发Win32异常 我的c#应用程序创建了用于处理键盘事件的键盘挂钩(许多读卡器,扫描仪和其他POS设备都模拟键盘)。 有时,我的应用程序创建的键盘挂钩没有错误,但不是引发事件,而是在处理时抛出异常: System.ComponentModel.Wi ...

8 SetWindowsHookEx(),挂钩不被维护? (可能)

我正在尝试学习Windows API。 目前,我在尝试上班时遇到了很多麻烦。 我有一些示例代码已经纠缠了几天-它有一个用C#或其他语言编写的GUI,以及一个用C ++编写的dll。 dll具有以下功能: CBT Proc是这个,也在dll中: 当我运行这些代码时,一切正常。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM