问题标签 [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.

0 投票
1 回答
5881 浏览

c# - SetWindowsHookEx WH_KEYBOARD_LL 没有收到事件

我正在使用 SetWindowsHookEx() 创建键盘挂钩。创建似乎成功,但注册的过程永远不会被调用。有什么我做错了吗?

=

=

=

0 投票
1 回答
226 浏览

visual-c++ - 如何发送,键盘消息镜像到edit1控件

gMsgHook = SetWindowsHookEx(WH_KEYBOARD_LL, GetMsgHookProc, ghInstDll, 0);

…………

0 投票
1 回答
13335 浏览

c++ - WH_KEYBOARD 和 WH_KEYBOARD_LL 之间的区别?

两者的工作有什么区别?对于WH_KEYBOARD_LL我读到它安装了一个监视低级键盘输入事件的钩子程序。低级键盘事件是什么意思?

0 投票
0 回答
923 浏览

winapi - Win32 全局密钥挂钩 / SetWindowsHook / GetAsyncKeyState 有时不起作用

我有一个关于虚拟键挂钩的问题。我想为我的应用程序定义全局快捷方式(RegisterHotkey 不够)。但是,我尝试了两种方法来实现快捷方式:

  1. 我注册了一个 WH_KEYBOARD_LL 钩子。我将所有挂钩代码放入一个 DLL 中,它工作正常!但是:当特殊应用程序(例如 CCleaner )具有焦点时,钩子不再起作用!我的申请没有任何结果。我尝试使用 32 位和 64 位 DLL。

  2. 我试图通过频繁调用 GetAsyncKeyState 而不是使用钩子来解决问题。此版本也运行良好,直到特殊应用程序(再次 CCleaner)成为焦点。此时 GetAsyncKeyState 为所有键返回 0,即使它们被按下。

有谁知道如何解决这个问题?

顺便说一句,似乎禁用我的钩子的应用程序是用 Delphi 编写的。此外,这些“邪恶”应用程序不会对任何输入做出反应,这意味着对这些应用程序窗口的 ShowWindow 调用没有效果。SetWindowLong 等也是如此。

非常感谢您的回复!

0 投票
0 回答
506 浏览

winapi - WH_KEYBOARD_LL 钩子不捕获自己进程中的输入

我正在使用低级键盘挂钩 (WH_KEYBOARD_LL) 来禁用某些输入,例如 Alt-Tab。我在带有消息泵的线程上创建了钩子,因此我可以正确处理通知。

只要我不关注创建钩子的窗口(即我的主窗口),钩子的回调函数就能够处理键盘事件,但是一旦我激活该窗口,钩子中不会出现任何事件,直到我停用再次窗口,输入改为传播到窗口的 WindowProc。

有人知道这里发生了什么吗?

更新:所以,事实证明这种行为是由于在同一进程中注册原始输入引起的。显然,每当我的进程窗口聚焦时,使用原始输入会导致我的低级键盘挂钩被禁用。有谁知道为什么以及如何解决这个问题?

0 投票
0 回答
551 浏览

c++ - 使用 SetWindowsHookEx MS-Windows API 函数的低级键盘挂钩应用程序

我目前正在开发一个挂钩应用程序。我正在使用 C++ 来实现这一点,并且我正在使用 MS-Windows 挂钩库中的函数。我的应用程序通过 .DLL 文件创建了一个全局挂钩,然后我可以向所有进程(到它们的主窗口)发送多个击键。我正在使用 SetWindowsHookEx MS-Windows API 函数,“挂钩类型”是 WH_KEYBOARD_LL。尽管它按预期工作,但在某些情况下(例如某些游戏),即使我发送“假”击键,游戏似乎也无法“理解”该击键。有没有人有类似的问题或建议?非常感谢。

0 投票
1 回答
1776 浏览

visual-studio-2010 - 在 Visual Basic 中执行没有焦点的 KeyDown 函数

这真的很简单。我希望应用程序即使没有焦点也能继续监视 KeyDown 事件。

上面的代码用于音乐播放器。按下媒体键时调用函数('Fn'+ 'Home'、'Fn' + 'Pg Up'...等)

在之前的评论中,有人建议研究 WH_KEYBOARD_LL 以寻求解决方案,但老实说,我并不太了解它。

更新:

建议的链接不是很好,因为“Declare”函数不支持“As Any”关键字。

这就是我已经走了多远......

Visual Studio 下划线的错误都以粗体书写

在“全局”悬停时,它会给出“语法错误”

0 投票
2 回答
1330 浏览

.net - 解释 SetWindowsHookEx / WH_KEYBOARD_LL 的正确逻辑

将消息从SetWindowsHookExwithWH_KEYBOARD_LL转换为有用的按键表示的正确方法是什么?

我知道这很可能涉及理解本地键盘的映射。(注意:为了简单起见,我只考虑何时按下一个键,而不是何时释放它)

从广义上讲,似乎存在三种情况:

  • 按下特殊键(Ctrl/Escape/Shift/Alt)
  • 按下标准键(A-Z,0-9等...请注意,a两者A都读作A
  • 一些难以定义的情况,如数字键盘和F1-F12

可以根据需要处理特殊键,并且有一些有用的查找System.Windows.Forms.Keys

但是如果我要(在英式英语键盘上)一个感叹号,它会被检测为Shift-Down1Shift up

由于在代码通过键盘“转换”层后,我的水平太低(我相信)无法获取代码,我很好奇我将如何正确解释它们。

至于我为什么要这样做。它一开始是为了给我编写的媒体播放器提供方便的快捷方式,它可以在任何地方工作,甚至在游戏内部(有些游戏似乎会拦截击键并阻止它们传播到操作系统)。实际上,只要是我使用该应用程序(仅限可能的用户),我实际上已经得到了足够的东西,但我的好奇心被激起了,如果我愿意,我该如何进一步发展。

0 投票
0 回答
401 浏览

windows - windows WH_KEYBOARD_LL 和 SendInput()

我正在尝试仅通过键盘激活鼠标。

但是我的代码让我的电脑出错了。执行它的时间不长,它运行良好,但几分钟后,所有鼠标输入都无法很好地接受。例如,我无法单击任务栏上的程序,也无法单击 Windows 开始按钮,不仅通过我的程序(键盘)而且通过我的真实鼠标。即使在退出我的程序后,也可以脱钩。

这是代码。由 C 编写,由 cl.exe 编译

如果我按A或S,然后SendInput分别发送鼠标左键或右键单击,并通过返回1忽略所有其他钩子。(我还添加了鼠标移动的方法,但我认为它没有问题)

0 投票
0 回答
662 浏览

c# - 从 Windows 服务捕获鼠标移动和键盘按下事件

我目前正在尝试编写一个 Windows 服务,该服务将在系统/用户不活动预定时间后关闭计算机。为了做到这一点(在登录屏幕和登录时),我需要监视任何键盘事件或鼠标移动。

我知道“LASTINPUTINFO”方法。这仅在用户登录时有效。

我也知道系统级挂钩。我可以让它在应用程序中完美运行,但不能作为 Windows 服务。

我是否需要编写驱动程序或其他东西以在系统级别连接到 WH_KEYBOARD_LL 或 WH_MOUSE_LL?