问题标签 [wh-keyboard-ll]
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# - SetWindowsHookEx WH_KEYBOARD_LL 没有收到事件
我正在使用 SetWindowsHookEx() 创建键盘挂钩。创建似乎成功,但注册的过程永远不会被调用。有什么我做错了吗?
=
=
=
visual-c++ - 如何发送,键盘消息镜像到edit1控件
gMsgHook = SetWindowsHookEx(WH_KEYBOARD_LL, GetMsgHookProc, ghInstDll, 0);
…………
c++ - WH_KEYBOARD 和 WH_KEYBOARD_LL 之间的区别?
两者的工作有什么区别?对于WH_KEYBOARD_LL
,我读到它安装了一个监视低级键盘输入事件的钩子程序。低级键盘事件是什么意思?
winapi - Win32 全局密钥挂钩 / SetWindowsHook / GetAsyncKeyState 有时不起作用
我有一个关于虚拟键挂钩的问题。我想为我的应用程序定义全局快捷方式(RegisterHotkey 不够)。但是,我尝试了两种方法来实现快捷方式:
我注册了一个 WH_KEYBOARD_LL 钩子。我将所有挂钩代码放入一个 DLL 中,它工作正常!但是:当特殊应用程序(例如 CCleaner )具有焦点时,钩子不再起作用!我的申请没有任何结果。我尝试使用 32 位和 64 位 DLL。
我试图通过频繁调用 GetAsyncKeyState 而不是使用钩子来解决问题。此版本也运行良好,直到特殊应用程序(再次 CCleaner)成为焦点。此时 GetAsyncKeyState 为所有键返回 0,即使它们被按下。
有谁知道如何解决这个问题?
顺便说一句,似乎禁用我的钩子的应用程序是用 Delphi 编写的。此外,这些“邪恶”应用程序不会对任何输入做出反应,这意味着对这些应用程序窗口的 ShowWindow 调用没有效果。SetWindowLong 等也是如此。
非常感谢您的回复!
winapi - WH_KEYBOARD_LL 钩子不捕获自己进程中的输入
我正在使用低级键盘挂钩 (WH_KEYBOARD_LL) 来禁用某些输入,例如 Alt-Tab。我在带有消息泵的线程上创建了钩子,因此我可以正确处理通知。
只要我不关注创建钩子的窗口(即我的主窗口),钩子的回调函数就能够处理键盘事件,但是一旦我激活该窗口,钩子中不会出现任何事件,直到我停用再次窗口,输入改为传播到窗口的 WindowProc。
有人知道这里发生了什么吗?
更新:所以,事实证明这种行为是由于在同一进程中注册原始输入引起的。显然,每当我的进程窗口聚焦时,使用原始输入会导致我的低级键盘挂钩被禁用。有谁知道为什么以及如何解决这个问题?
c++ - 使用 SetWindowsHookEx MS-Windows API 函数的低级键盘挂钩应用程序
我目前正在开发一个挂钩应用程序。我正在使用 C++ 来实现这一点,并且我正在使用 MS-Windows 挂钩库中的函数。我的应用程序通过 .DLL 文件创建了一个全局挂钩,然后我可以向所有进程(到它们的主窗口)发送多个击键。我正在使用 SetWindowsHookEx MS-Windows API 函数,“挂钩类型”是 WH_KEYBOARD_LL。尽管它按预期工作,但在某些情况下(例如某些游戏),即使我发送“假”击键,游戏似乎也无法“理解”该击键。有没有人有类似的问题或建议?非常感谢。
visual-studio-2010 - 在 Visual Basic 中执行没有焦点的 KeyDown 函数
这真的很简单。我希望应用程序即使没有焦点也能继续监视 KeyDown 事件。
上面的代码用于音乐播放器。按下媒体键时调用函数('Fn'+ 'Home'、'Fn' + 'Pg Up'...等)
在之前的评论中,有人建议研究 WH_KEYBOARD_LL 以寻求解决方案,但老实说,我并不太了解它。
更新:
建议的链接不是很好,因为“Declare”函数不支持“As Any”关键字。
这就是我已经走了多远......
Visual Studio 下划线的错误都以粗体书写
在“全局”悬停时,它会给出“语法错误”
.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
由于在代码通过键盘“转换”层后,我的水平太低(我相信)无法获取代码,我很好奇我将如何正确解释它们。
至于我为什么要这样做。它一开始是为了给我编写的媒体播放器提供方便的快捷方式,它可以在任何地方工作,甚至在游戏内部(有些游戏似乎会拦截击键并阻止它们传播到操作系统)。实际上,只要是我使用该应用程序(仅限可能的用户),我实际上已经得到了足够的东西,但我的好奇心被激起了,如果我愿意,我该如何进一步发展。
windows - windows WH_KEYBOARD_LL 和 SendInput()
我正在尝试仅通过键盘激活鼠标。
但是我的代码让我的电脑出错了。执行它的时间不长,它运行良好,但几分钟后,所有鼠标输入都无法很好地接受。例如,我无法单击任务栏上的程序,也无法单击 Windows 开始按钮,不仅通过我的程序(键盘)而且通过我的真实鼠标。即使在退出我的程序后,也可以脱钩。
这是代码。由 C 编写,由 cl.exe 编译
如果我按A或S,然后SendInput分别发送鼠标左键或右键单击,并通过返回1忽略所有其他钩子。(我还添加了鼠标移动的方法,但我认为它没有问题)
c# - 从 Windows 服务捕获鼠标移动和键盘按下事件
我目前正在尝试编写一个 Windows 服务,该服务将在系统/用户不活动预定时间后关闭计算机。为了做到这一点(在登录屏幕和登录时),我需要监视任何键盘事件或鼠标移动。
我知道“LASTINPUTINFO”方法。这仅在用户登录时有效。
我也知道系统级挂钩。我可以让它在应用程序中完美运行,但不能作为 Windows 服务。
我是否需要编写驱动程序或其他东西以在系统级别连接到 WH_KEYBOARD_LL 或 WH_MOUSE_LL?