gpt4 book ai didi

c# - 不在焦点时响应键盘? (C#, Vista)

转载 作者:可可西里 更新时间:2023-11-01 13:28:18 26 4
gpt4 key购买 nike

我正在尝试编写一个应用程序,无论当前哪个应用程序具有焦点,只要按下 Shift 键就会响应。

我用 SetWindowsHookEx()GetKeyboardState() 试过了,但是这两个都只在应用程序的窗口有焦点时才有效。我需要它在全局范围内工作。

我该怎么做?

最佳答案

所提供的答案都没有帮助我解决问题,但我自己找到了答案。在这里。

SetWindowsHookEx()WH_KEYBOARD_LL 一起使用是正确的方法。但是,SetWindowsHookEx() 的其他参数并不直观:

  • 最后一个参数dwThreadId需要为0。
  • 倒数第二个参数hMod 需要指向某个DLL。我用了User32,这是一个总是被加载并被所有人使用的 DLL使用 GUI 进行处理。我从 a CodeProject post about this 得到这个想法.

因此,代码看起来有点像这样:

instance = LoadLibrary("User32");
hhook = SetWindowsHookEx(WH_KEYBOARD_LL, hookFunction, instance, 0);

关于倒数第二个参数,文档并不清楚。它说:

The hMod parameter must be set to NULL [...] if the hook procedure is within the code associated with the current process.

它并没有说明这只适用于某些类型的钩子(Hook),而不适用于 WH_KEYBOARD_LLWH_MOUSE_LL

关于c# - 不在焦点时响应键盘? (C#, Vista),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com