修改现有的C#键盘监听代码来拦截消息

发布于 2024-12-16 17:00:34 字数 457 浏览 0 评论 0原文

现有 堆栈溢出问题 中效果很好,但我需要防止按键通过。引用该帖子的原作者的话:

如果您出于某种原因想要拦截系统键(创建例如 Alt+Tab 替换)并阻止窗口处理它们,您必须将 BeginInvoke 更改为 Invoke。还向 KeyDown、KeyUp 事件添加 Handled 属性以查看是否正在处理。之后,您要么调用 CallNextHookEx,要么不调用。)

我为我的无知道歉,但我不知道如何处理这个问题。谁能指出我进行这些修改的正确方向?我愿意并且能够学习,只是不知道从哪里开始。

Existing stack overflow question works great, except I need to prevent the key press from going through. To quote the original author of the post:

If you for some reason want to intercept system keys (creating e.g. Alt+Tab replacement) and preventing windows of handling them you must change the BeginInvoke to Invoke. Also adding Handled property to KeyDown, KeyUp events to see if it is being handled. After that you either call the CallNextHookEx or not.)

I apologize for my ignorance but I do not know how to handle this. Can anyone point me in the right direction for making these modifications? I am willing and able to learn, just not sure where to start.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝颜夕 2024-12-23 17:00:34

如果您不希望其他应用程序看到这些按键,请不要调用 CallNextHookEx。

根据有关此 Win32 调用的 MSDN 文档,

调用CallNextHookEx是可选的,但强烈建议这样做;
否则,其他安装了钩子的应用程序将无法
接收挂钩通知,可能会导致行为不正确。你
应该调用 CallNextHookEx 除非你绝对需要阻止
被其他应用程序看到的通知。

If you don't want other apps to see the keys, don't invoke CallNextHookEx.

Per MSDN documentation on this Win32 call,

Calling CallNextHookEx is optional, but it is highly recommended;
otherwise, other applications that have installed hooks will not
receive hook notifications and may behave incorrectly as a result. You
should call CallNextHookEx unless you absolutely need to prevent the
notification from being seen by other applications.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文