gpt4 book ai didi

c# - 全局键盘拦截输入

转载 作者:行者123 更新时间:2023-11-30 17:36:46 26 4
gpt4 key购买 nike

我目前能够使用此解决方案在程序未处于焦点时捕获键盘输入。

Using global keyboard hook (WH_KEYBOARD_LL) in WPF / C#

但是我想知道是否有可能阻止其他应用程序使用符合某些条件的输入,我想用它在后台运行时将条形码捕获到我的程序中,但是如果你在记事本中工作,最好不要在记事本中输入条形码。

我添加了以下内容,但字符仍会添加到记事本中。

if (nCode >= 0)
{
if (wParam == (IntPtr)InterceptKeys.WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
RawKeyEventArgs rk = new RawKeyEventArgs(vkCode, false);

if (KeyDown != null)
KeyDown(this, rk);
if (rk.isHandled)
{
return (IntPtr)0;
}
}
}

return InterceptKeys.CallNextHookEx(hookId, nCode, wParam, lParam);

返回应该有所不同吗?

最佳答案

编辑 - 我似乎看到了错误的消息,所以我删除了整个旧答案。

这似乎是正确的回调函数LowLevelKeyboardProc callback function .这是它对返回值的说明:

如果 nCode 小于零, Hook 过程必须返回 CallNextHookEx 返回的值。

如果nCode大于或等于0,并且钩子(Hook)程序没有处理消息,强烈建议您调用CallNextHookEx并返回它返回的值;否则,其他已安装 WH_KEYBOARD_LL Hook 的应用程序将不会收到 Hook 通知,并可能因此行为不正确。 如果钩子(Hook)过程处理了消息,它可能会返回一个非零值以防止系统将消息传递给钩子(Hook)链的其余部分或目标窗口过程。

所以返回除零以外的任何东西都应该有效。

关于c# - 全局键盘拦截输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38993876/

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