问题标签 [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# - WPF 应用程序中的全局 shell 钩子
我试图捕捉创建/销毁另一个应用程序的指定窗口的事件。为此我设置了WM_SHELLHOOK
.
这是我的 WPF 应用程序中的简化代码:
问题是SetWindowsHookEx
总是返回 0 并且最后一个错误是
1428 (ERROR_HOOK_NEEDS_HMOD) 不能在没有模块句柄的情况下设置非本地挂钩。
我看过另一个相关的问题。当我为鼠标、键盘等设置挂钩时 - 一切正常。
请指出我如何解决这个错误。谢谢。
c# - 如何挂钩应用程序?
我正在尝试在我的 C# 应用程序中创建一个窗口。
问题是,当点击我的按钮(在 Dummy.exe 中)时,我从来没有进入我的 Hook,我做错了什么?
谢谢。
编辑
程序.cs
NativeMethods.cs
对于假人,使用以下方法创建一个新表单:
delphi - WH_JOURNALRECORD 的 SetWindowsHookEx 在 Vista/Windows 7 下失败
我正在准备一个 Delphi 模块,它在线程中设置一个钩子来记录宏:
这在 WinXP 上运行良好,但在 Vista/Windows 7 上以ERROR_ACCESS_DENIED
. 我在谷歌(this)中找到了(that)。报价单:
较低权限的进程不能: … 使用日志挂钩来监控较高权限的进程。
试过没有成功:
- 以管理员身份运行应用程序。可能线程的启动权限低于主线程(尽管我不是 100% 确定)
- 使用管理员安全上下文模拟线程也无济于事。
代码示例:
LogonUser
并ImpersonateLoggedOnUser
执行没有错误。
其他尝试的可能性:
- 永久关闭 UAC。这有帮助,但我不能强迫模块用户这样做。
- 模块客户签署应用程序并将其放置在受信任的位置。没有尝试过,但这从根本上使用户的模块使用复杂化。
- 将模块放入一些签名的应用程序并分发 EXE。这将破坏一些核心功能。
您能否显示在 Visa/Windows 7 下设置挂钩的代码或建议可行的解决方案?
winapi - 有没有比系统范围的 WH_CBT 钩子更好的方法来监控击键?
我目前正在研究一种在计算机上记录用户操作的可靠方法。我创建了一个简单的应用程序,它可以在全局范围内挂钩WH_CBT
事件,现在它似乎工作正常。我读过应用程序有自己的WH_CBT
事件处理程序并且在处理它后不会调用CallNextHookEx()
函数的情况。我认为这种情况会阻止我使用系统范围的钩子自己处理该应用程序中的任何事件。
有没有其他(可能更好)的方法来劫持应用程序中的击键事件?也许与手动将 DLL 注入这样的进程有关:
- 挑选过程。
- 使用
CreateRemoteThreadEx()
. - DLL 挂钩(绕行)一些 winapi 函数并从它们收集有关击键或其他事件的信息。
在这种情况下,挂钩GetMessage()
或TranslateMessage()
功能就足够了吗?我是否正确,任何使用消息循环的进程都必须使用这些函数才能处理创建的窗口的事件?
c# - 使用 WH_JOURNLRECORD 和取消似乎确实返回了 WM_CANCELJOURNAL
我正在使用 C#,并且我已经让程序使用SetWindowsHookEx
with成功记录了日志消息WH_JOURNALRECORD
。
我的问题在该停下来的时候出现了。文档显示,如果用户按下 CTRL-ESC 或 CTRL-ALT-DELETEWM_CANCELJOURNAL
将发布一条消息,我可以查看该消息以了解何时停止。我的应用程序未绑定,但我似乎从未获得WM_CANCELJOURNAL
.
我有两个钩子设置。一个用来做日志记录的钩子和一个用来检查取消消息的钩子:
winapi - 检测由 3rd 方 DLL 创建的 MessageBox
我正在加载第 3 方 DLL,有时它们会打开停止应用程序流程的 MessageBox 窗口,我希望能够检测到何时发生此类事情。
我正在尝试使用SetWindowsHookEx
withWH_CBT
但我的回调没有被调用。
我试着这样称呼它:
但它没有奏效。
这个函数的正确调用应该是什么?
c - 如何编写一个包罗万象的 Windows 挂钩接收函数?
我想创建一个通用的、包罗万象的 Windows API(和应用程序函数)挂钩接收器,以允许动态和安全的挂钩。
这个想法是:
- 在目标函数上创建并设置一个钩子,由用户在运行时确定,
- 然后,一旦它被拦截,将值传递给 Lua 运行时,以便用户可以安全地动态检查值,或编辑
- 将控制权传递给原始函数。
将函数参数解码为有意义的值后,可以将它们留给 Lua 脚本。
欢迎任何提示,提示。
PS我正在考虑使用mhook2.3
delphi - SetWindowsHookEx 创建一个本地挂钩。如何让它全球化?
在 Delphi XE 应用程序中,我试图设置一个全局挂钩来监视焦点更改。钩子是在 dll 中创建的:
在同一个 dll 中,我有将消息发布到主机应用程序窗口的钩子过程:
这可行,但主机只接收应用程序本身内焦点更改的通知。主窗体上有一个备忘录和几个 TButton,在它们之间切换焦点会产生预期的消息。但是,从不报告应用程序本身之外的任何焦点更改。
我想这与将 DLL 的多个实例注入其他进程有关。有一个类似的问题,这里有一个接受的答复,但它是针对 C 的,我不太明白如何在 Delphi dll 中做同样的事情(例如,设置共享内存的 pragma 语句)。
(这主要是一个概念证明,但我仍然想让它工作。我需要知道在我的应用程序通过单击、alt+tab、激活热键等方式激活之前处于活动状态的窗口。问题是如果使用鼠标或 alt+tab, GetForegroundWindow 总是返回我自己的应用程序的窗口句柄, 无论我把它多早, 例如通过挂钩应用程序的主消息队列. 所以挂钩似乎是唯一可行的解决方案, 虽然我真的不喜欢这个主意。)
winapi - SetWindowsHookEx HCBT_CREATEWND GetWindowText
Anyboby 知道如何获取已创建窗口的文本吗?我设置了 hook on CreateWindow
,但GetWindowText
返回空字符串。
c++ - SetWindowsHookEx HOOKPROC 未声明标识符
为什么它说“未声明的标识符”我不明白!?