按键时卡住
本文关键字: | 更新日期: 2023-09-27 18:00:46
我在这里使用turotial
http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx
这会捕获按键并将其打印到控制台。有人知道如何使这对控制和另一个密钥(比如ctrl + w
)有效吗?如果是的话,我可以得到一些指导吗?或者你可以建议我需要研究什么来找出答案吗?
感谢
System.Windows.Forms.Control.ModifierKeys
应该做到这一点,告诉您是否按下了shift、alt和/或control。
例如;
if (Keys.W == (Keys)vkCode && Keys.Control == Control.ModifierKeys)
应根据您的链接检查^W
组合。
如果你想知道按下了哪个键,那么你可以使用文本框的KeyPress事件。
它有KeyPressEventArgs对象,该对象包含"KeyChar"属性,该属性存储按键的字符。
查看此链接如何制作一个只接受数字的文本框?
这里的问题不同,但提供的解决方案也可以帮助您。
这里真正的元问题是:如何实现热键,例如Ctrl-W,您可以使用Win32 RegisterHotKey API来实现。
您链接到的示例使用了一个低级键盘挂钩,虽然它们有自己的用途,但它们往往是罕见的和专门的(可能是一个自动测试输入记录应用程序,或类似的应用程序)。LL键盘挂钩也有一些性能问题,请注意,它们可以监听键,但即使你的代码对键做出反应,原始键仍然会继续到它最初要使用的应用程序上。此外,你必须小心你在hookproc中所做的事情——不要做任何可能阻止的事情。最好的做法是做一些基本的检查(例如,检查它是否是你想要的钥匙),然后给自己发一条信息,然后在空闲时处理该信息。
对于大多数通用应用程序,通常有一种更好的方法。如果你正在考虑热键,RegisterHotKey就是你的选择。