问题标签 [setwindowshookex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何知道前台窗口何时更改
我正在用 c# 编写一个应用程序,我需要知道地面窗口何时发生变化我使用了 SetWindowsHookEx,但是在窗口之间切换时我没有收到回调
我的代码:
c# - c# - Outlook 功能区控件上的键盘钩子
我想挂钩特定控件(组合框)并接收在该控件中键入的所有键。组合框是 Outlook 功能区的一部分,没有按键或其他事件(只是 onChange 行为非常奇怪)。
这是代码:
我拥有的句柄和我得到的 ThreadID 是正确的(通过 Spy++ 验证)但没有捕获任何密钥。使用“0”作为 SetWindowsHookEx 函数的最后一个参数可以正常工作,但它当然是一个全局挂钩。
c++ - 调用 SetWindowsHookEx() 的应用程序可以捕获自动完成 URL 和密码吗?
我有一个应用程序,它使用 SetWindowsHookEx() 为击键记录设置键盘挂钩。这很好用,但是在 Web 浏览器自动完成 URL 或密码的情况下,应用程序当然不会捕获用户实际没有输入的字符。
我的老板发现一篇文章说:“调用 SetWindowsHookEx() 的应用程序甚至能够捕获自动完成密码。” 我在任何地方都找不到这个记录。实际上是否可以通过钩子获取自动完成文本,如果可以,如何?
delphi - SetWindowsHookEx for WH_KEYBOARD (Global) 不使用 Dll?
我试图让我的钩子在一个进程中全局工作,当将hMod和dwTID设置为 0时,它使用 _LL (LowLevel) 对我有用。
有没有办法让它在没有 .dll 的情况下工作?
winapi - SetWindowsHookEx() WM_KEYBOARD_LL 没有通过全屏 RDC
我正在尝试做一个像 Skype 这样的客场计时器风格的东西。如果用户“离开”了一段时间,我会触发一些东西。我一直在将 SetWindowsHookEx() 与 WM_KEYBOARD_LL 一起使用,效果很好。直到您打开 RDC 连接并使其全屏显示。然后我永远不会得到键盘事件。
有人遇到过这个吗?或者知道实现这一目标的更好方法?我实际上已经测试了Skype,并且使用全屏RDC,如果我输入RDC,它将正确地从Away转到Online。
谢谢
编辑:在 Raymond Chen 发表评论后,我做了一些测试,他是对的。不敢相信我经过所有的搜索后从未找到这种方法。它还解决了我遇到的 WPF 应用程序未触发 LL_Mouse/KEYBOARD 事件的问题。
再次感谢。基于此更新我接受的答案。如果您需要做 LL_MOUSE/KWYBOARD,另一个答案仍然很好。
c++ - 使用 SetWindowsHookEx MS-Windows API 函数的低级键盘挂钩应用程序
我目前正在开发一个挂钩应用程序。我正在使用 C++ 来实现这一点,并且我正在使用 MS-Windows 挂钩库中的函数。我的应用程序通过 .DLL 文件创建了一个全局挂钩,然后我可以向所有进程(到它们的主窗口)发送多个击键。我正在使用 SetWindowsHookEx MS-Windows API 函数,“挂钩类型”是 WH_KEYBOARD_LL。尽管它按预期工作,但在某些情况下(例如某些游戏),即使我发送“假”击键,游戏似乎也无法“理解”该击键。有没有人有类似的问题或建议?非常感谢。
c++ - SetWindowsHookEx 注入失败
我正在尝试拦截发送到在另一个进程中运行的窗口的消息,以便我可以对其中的一些做出反应。
注入应用程序是一个 x86 WPF 应用程序,它通过 p/invoke 调用此方法。我将句柄传递给另一个 x86 进程中的窗口。
我知道消息正在发送,因为结果是正确的值。但是 DLL 永远不会被其他进程加载,并且在没有我的钩子拦截它的情况下调用该消息。
mfc - SetWindowHookEx 在嵌套窗口中阻止 WM_ERASEBKGND
我有以下 MFC 应用程序 UI 结构:
CMFCTabCtrl 可以依次保存 CWnd 派生类等等……
如果你把它想象成一棵窗口树,让我们将上面的定义为深度 0。
当树的深度为 1 时会出现问题,这意味着:
我将以下代码添加到我的应用程序中:
然后我运行应用程序并调整主框架的大小,我注意到以下内容:
- 在树深度为 0 的情况下,
WM_ERASEBKGND
在对话中接收到消息。 - 在树深度为 1 的情况下,
WM_ERASEBKGND
对话中不会收到消息。
我希望我的解释足够清楚。
设置钩子会以如此戏剧性的方式影响行为,这似乎很奇怪。
你们之前有没有遇到过这种问题?
windows - SetWindowsHookEx 发送多个事件
我将 SetWindowsHookEx 与 C# 一起使用,以允许我缓冲键盘输入(用于文本框)。
现在的基本设置是,每次我创建一个新的文本框时,文本框都会在内部创建一个新的“KeyboardBuffer”对象,然后设置一个键盘挂钩:
(完整的代码可以在这里看到)
问题是,如果我有 N 个文本框,当我输入一个文本框时,我会收到 N 次相同的字符,问题源于 SetWindowsHookEx 不区分 .NET 实例。
我通过制作一个所有文本框都可以访问的静态 KeyboardBuffer 对象暂时解决了这个问题,但这导致了许多其他问题,而且在我看来,这看起来很简单。
有更好的解决方案吗?
提前致谢。
编辑:我对此进行了更多的考虑,并且我意识到我可以在禁用/启用缓冲区时删除/重置挂钩。设置挂钩是否有任何明显的开销?
keyboard-hook - 全局键盘挂钩
我需要捕获全局键盘消息,所以我使用 SetWindowsHookEx() 和 WH_KEYBOARD_LL。但它仅在应用程序处于焦点时有效,并且不会全局触发回调。几乎相同的代码适用于 mouse_LL(具有另一个结构等)请帮助!