我想确定CTRL关键是左Ctrl或RIGHT CTRL键被按下时。我怎样才能做到这一点?我可以确定Ctrl键是按下Ctrl还是Right Ctrl?
1
A
回答
1
AFAIK您无法从.net中访问此信息。
但是,您可以使用Win32 API GetAsyncKeyState
来测试特定按键是否当前关闭,并且这可以区分左侧和右侧按键。 (如果你正在编写游戏,这比Keydown处理程序更适合你,因为GetAsyncKeyState测试键是否“现在”关闭,而不是在过去的某个时间被按下“更好的响应能力)。
1
显然不是来自.NET内部,但它可能来自Win32 APIs。
- 的System.Windows.Forms.Key枚举轨道左,右,和中间鼠标按钮,但只具有用于控制键一个标记,所以没有办法来确定用于控制键左边或右边。
- Console.ReadKey() method患有同样的问题。
- 您可能可以在Win32级别上做些什么。 WM_KEYDOWN message将跟踪扩展的键(右Alt,右控制),所以Windows正在跟踪这些数据......它只是没有被传递给.NET。关于从.NET内部进入Win32 API,你是独一无二的。
1
既然你写一个游戏,它可能是有帮助的也使用DirectInput的...的WinForms是不是真的意味着达gaimez IMO ......写在SO文本
Device di_device = new Device(SystemGUID.Keyboard);
di_device.SetCooperativeMode(Nonexclusive|othercrap);
di_device.Acquire();
if(di_device.GetKeyboardState()[Keys.LControl])
{
blargh;
}
代码,未经考验,就像那样。请注意,您必须包含Microsoft.DirectX.DirectInput
另请注意,我并不是说您每次需要输入时都应该初始化DirectInput设备。在初始化游戏时创建设备,在程序退出时处理它。
DirectInput为您提供了更多的控制...而且很可能您将要使用它。当然,在某些情况下,你需要使用Winforms [也就是说:当你的程序正在渲染时,如果用户很快按下按钮会怎么样? GKS不会告诉你]
相关问题
- 1. 是否按下'Ctrl'键?
- 2. 制作Ctrl + C(Ctrl + V,Ctrl + Z,Ctrl + X)键盘快捷键在Visual Studio中按下一个按钮
- 3. 我可以使Windows 2.5 ctrl-D退出而不是ctrl-Z吗?
- 4. 按键javascript ctrl键
- 5. ConsoleCancelEventHandler当按下Ctrl + C键
- 6. 检测Ctrl + Tab键按下
- 7. 的Java createText不按Ctrl C,Ctrl键V
- 8. 使用jquery.hotkeys.js绑定Ctrl和Ctrl +键
- 9. 接受CTRL +按键?
- 10. Ctrl键保存下来模拟ctrl键按下事件和ctrl键向上事件
- 11. 再结合的Eclipse快捷为Ctrl + M键,Ctrl + U键,Ctrl + J,或Ctrl + [失败
- 12. JavaFX KeyCodeCombination Control + LEFT或Ctrl + RIGHT键
- 13. 射击Ctrl + R键,Ctrl + A,按钮上按Ctrl + Q的事件单击
- 14. 如何按Ctrl-Tab和Ctrl-Shift-Tab键绑定在TMUX为mintty
- 15. 按下按键(Ctrl + A)Selenium WebDriver
- 16. 模拟按住Ctrl键同时按下
- 17. 如何确定ctrl是否在点击之前按下?
- 18. 绑定Alt + Shift键按住Ctrl键
- 19. linux组合键[Ctrl +,]和[Ctrl +。]被禁用?
- 20. 检测Ctrl + Return或Ctrl + Enter键
- 21. 多项选择,按CTRL键
- 22. jquery模仿按键“ctrl +”
- 23. ctrl的键码
- 24. 您可以使用.keypress()中的键码区分左Ctrl键和右Ctrl键吗?
- 25. 按下Ctrl + Shift + Del键outof Firefox扩展
- 26. 检测,如果Ctrl键被按下
- 27. 按下Ctrl + W wil触发按Ctrl + Shift + W winForms
- 28. 按Ctrl + K,Ctrl + C键是一个命令不再在Visual Studio 2010
- 29. 绑定Ctrl + Tab键和Ctrl + Shift + Tab键在TMUX
- 30. 按Ctrl +输入
你到目前为止有什么?另外,你想区分两者的具体原因是什么? – Gishu 2010-06-14 05:40:52
你能提供更多的细节吗? – jfs 2010-06-14 05:41:47
由于没有人问过......你为什么要区分这两者? – jrista 2010-06-14 05:50:16