问题标签 [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.
windows - 检测/挂钩窗口移动/拖动其他外部进程
检测其他进程的窗口移动/拖动的最佳方法是什么?在 Windows7 64 位
我目前正在使用 C++ 和 C# 调查来自 DLL 的全局挂钩。这是一种痛苦,因为它不想正常工作。我在键盘和鼠标挂钩方面取得了一些成功。但是对于窗口消息,我只是不知道出了什么问题。
这是我的 .dll 文件中的代码
我正在考虑制作自己的 Aero Snap。这只是为了好玩。
谢谢你的帮助。
c# - SetWindowHookEx 在 C# 应用程序运行时失败
我正在构建一个应用程序使用钩子,我想启动另一个应用程序,在我构建我的应用程序之后,应用程序将获得另一个应用程序和 setwindowhook 的自动化窗口句柄。但我做不到。请帮助我:(。我的英语
当我得到所有应用程序时,变量窗口是 hwnd 是 windowform 正在运行
winapi - 子类化记事本的 Edit 类 (WINAPI)
我在记事本的 Edit 类上设置了 SetWindowsHookEx,但我不确定如何从这里继续。
我希望将 Edit 类子类化为我自己的过程,然后操作文本或将其保存到文件中,然后必须将其发回记事本控件/类。
有更简单的方法可以从记事本中获取文本,但我正在尝试学习 WINAPI 和子类化,所以这对我来说是学习它的好方法。
我的 SetWindowsHookEx 看起来像这样:
如何使用钩子类型:WH_GETMESSAGE从记事本中的 Edit 类中获取文本并将其传输到我的 GetMsgProc(I think) 函数?
它是正确的钩子类型吗?
我给它发消息吗?如果是,我该怎么做?
我的代码如下所示:
dllHeader.h:
dll.cpp:
exe文件
我对如何从这里开始有点迷茫……有什么提示吗?链接?提示?
我已经阅读了 MSDN 上关于SetWindowsHookEx函数的文档——但我没有在那里找到明确的答案。
c - SetWindowLongPtr 返回 ERROR_ACCESS_DENIED
我仍在与钩子作斗争。
我的目标是:
- 在 notepad.exe 中设置挂钩
- 子类化它(我的最终目标是子类化 Edit 类并在我自己的窗口中显示内容)
免责声明:我知道有更简单的方法可以从记事本中获取文本/内容,但这是我学习 C、winapi、子类化和钩子的一种方式。
我的问题是SetWindowLongPtr总是返回 ERROR_ACCESS_DENIED 错误(代码 5)。
2013 年 5 月 22 日:已修复!问题是 SetWindowLongPtr 放错了地方。它必须在 GetMsgProc 函数内。
这个问题变得有点冗长和混乱,所以我重新写了这个问题(使用更新的代码)
现在的问题是当目标是 notepad.exe 时不会调用 GetMsgProc。如果我将目标更改为 simple.exe,GetMsgProc 会被调用并正常工作!
(Simple.exe 只是一个简单的 GUI):
代码如下所示:
exe文件
dllHeader.h
dll.cpp:
任何提示,评论或提示都非常感谢......
winapi - Windows 资源管理器不接收 WM_DESTROY。如何检测用户何时关闭其资源管理器窗口?
我正在编写一个需要检测窗口何时关闭的程序。目前我正在使用 SetWindowsHookEx 注册一个可以监视窗口消息的钩子。
我正在监视 WM_DESTROY 事件以找出窗口何时被破坏。这适用于大多数窗口,Windows Explorer 是一个明显的例外。Windows 资源管理器在终止时似乎没有收到 WM_DESTROY 事件(但会收到大多数其他有趣的事件)。
Windows 资源管理器没有收到 WM_DESTROY 是否有原因?
更重要的是,除了侦听 WM_DESTROY 之外,是否有其他方法可以用来检测 Windows 资源管理器何时终止?
谢谢!
我正在使用 Windows 7(不确定此信息的相关性)
c++ - 来自非静态函数的 SetTimer
我编写了在窗口不在焦点时检测按键的代码:
当窗口没有聚焦时,我想在按键时启动计时器。我是否需要使用一些指针或从该函数调用 SetTimer 的内容。如果在应用程序没有焦点时让计时器在按键上工作有更好的问题,我想知道。
powershell-3.0 - 使用 Moles 观察 Windows GUI 程序对 Powershell 的使用情况
对我关于通过在 Windows GUI 中工作生成 Powershell 代码的问题的一个回答指出,Windows GUI 代码正在调用托管system.management.automation
库。
是否可以在我编写的 DLL 中使用 Moles,它可以挂钩 Windows GUI 程序对那些“自动化”API 的调用?它可能仅在通过系统范围的“Windows 挂钩”安装 DLL 时才有效(因此它位于 GUI 程序的地址空间内)。
我很确定我没有快速做到这一点的知识,但我个人认为这将是一个杀手级功能——微软可以比我们更容易构建的功能,但他们似乎没有除了在特定产品(如 System Center)中执行此操作。有没有人认为可以在相对较短的时间内完成——由具有合适技能的人完成(也许他们想尝试一下)?
有什么想法吗?
c# - SetWindowsHookEx 并在表单冻结时单击最小化/最大化/关闭按钮
设置全局挂钩 SetWindowsHookEx 标准表单的按钮后,工作异常。例如,如果我单击关闭按钮,则鼠标会冻结 5-10 秒并形成。
我找到了具有相同问题的主题C# 低级鼠标钩子和表单事件处理 ,但只有一个答案。而且我不喜欢那个解决方案,因为它需要每次 Hook,当表单停用时,以及 UnHook,当程序激活时......
有没有更好的方法来解决这个问题?
已编辑
这是我的代码:
c# - SetWindowsHookEx 失败并出现错误 126
我正在尝试在项目中使用Gma.UserActivityMonitor库,但我遇到了一个我自己无法克服的错误。
在文件中有一个使用以下代码(或多或少)HookManager.Callbacks.cs
调用的静态方法:EnsureSubscribedToGlobalMouseEvents
SetWindowsHookEx
总是返回,上面的0
代码不断抛出异常,消息The specified module could not be found
和调用Marshal.GetLastWin32Error
返回代码126
。我可以成功运行 Gma.UserActivityMonitor 的原始项目提供的演示,但由于我的项目有点太复杂,无法在这里解释,我无法详细解释它与我的区别。我只是希望有人能盲猜这个问题。
顺便说一句,在项目的常见问题解答中,据说只有在调试项目时才检查其他人的问题(SetWindowsHookEx
返回错误) 。Enable Visual Studio hosting process
所以我取消选中了我的那个框,但我仍然遇到同样的问题,不仅是在调试模式下,而且当我在 Windows 资源管理器中双击发布文件时(不涉及 Visual Studio)。
为了提供更多信息,在演示项目(工作正常)中,asm
变量指向{Gma.UserActivityMonitor.dll}
和我的项目中抛出异常的相同!
.net - 解释 SetWindowsHookEx / WH_KEYBOARD_LL 的正确逻辑
将消息从SetWindowsHookEx
withWH_KEYBOARD_LL
转换为有用的按键表示的正确方法是什么?
我知道这很可能涉及理解本地键盘的映射。(注意:为了简单起见,我只考虑何时按下一个键,而不是何时释放它)
从广义上讲,似乎存在三种情况:
- 按下特殊键(Ctrl/Escape/Shift/Alt)
- 按下标准键(
A-Z
,0-9
等...请注意,a
两者A
都读作A
) - 一些难以定义的情况,如数字键盘和F1-F12
可以根据需要处理特殊键,并且有一些有用的查找System.Windows.Forms.Keys
但是如果我要(在英式英语键盘上)一个感叹号,它会被检测为Shift-Down1Shift up
由于在代码通过键盘“转换”层后,我的水平太低(我相信)无法获取代码,我很好奇我将如何正确解释它们。
至于我为什么要这样做。它一开始是为了给我编写的媒体播放器提供方便的快捷方式,它可以在任何地方工作,甚至在游戏内部(有些游戏似乎会拦截击键并阻止它们传播到操作系统)。实际上,只要是我使用该应用程序(仅限可能的用户),我实际上已经得到了足够的东西,但我的好奇心被激起了,如果我愿意,我该如何进一步发展。