Я хочу, чтобы определить, является ли CTRL ключ ЛЕВЫЙ CTRL или RIGHT CTRL клавиша при нажатии. Как я могу это сделать?Могу ли я определить, нажата ли клавиша Ctrl слева Ctrl или Right Ctrl?
ответ
AFAIK Вы не можете получить доступ к этой информации изнутри .net.
Однако вы можете использовать Win32 API GetAsyncKeyState
, чтобы проверить, нет ли в настоящий момент определенных клавиш, и это может отличать клавиши влево и вправо. (Если вы пишете игру, это, скорее всего, будет хорошо работать для вас, чем обработчики Keydown, поскольку GetAsyncKeyState проверяет, выключен ли ключ «сейчас», а не был ли он нажат «в какой-то момент в прошлом», что дает значительно более отзывчивость).
Видимо, не из .NET, но это возможно из API Win32.
- В System.Windows.Forms.Key перечисление дорожек влево, вправо, и средней кнопки мыши, но имеет только один флаг для ключей управления, так что нет способа определить, влево или вправо для клавиш управления.
- Console.ReadKey() method также испытывает такую же проблему.
- Возможно, вы сможете что-то сделать на уровне Win32. WM_KEYDOWN message будет отслеживать расширенные ключи (правый Alt, правый элемент управления), поэтому Windows отслеживает эти данные ... он просто не передается .NET. Вы сами по себе относитесь к использованию Win32 API в .NET.
Поскольку вы пишете игру, это может быть полезно также использовать DirectInput ... Winforms это на самом деле не предназначено для да gaimez IMO ...
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. Elm проверить, нажата ли клавиша Ctrl onClick
- 3. Как определить, что нажата клавиша Ctrl + R?
- 4. как проверить, нажата ли клавиша CTRL в приложении консоли C#
- 5. Проверьте, не нажата ли клавиша Ctrl с помощью C#
- 6. Simulate Ctrl-кнопка нажата
- 7. Как определить ctrl нажата, прежде чем нажимать?
- 8. Detect, если кнопка Ctrl нажата
- 9. Visual Studio Расширение Ctrl + K, Ctrl + D
- 10. Проверьте, нажата ли CTRL-C или пакетный пакет для ожидания.
- 11. Как отключить прокрутку в ScrollViewer, пока нажата клавиша Ctrl
- 12. JQuery drag & move, но оставить оригинал, если нажата клавиша CTRL?
- 13. Может ли Emacs различать ctrl-r и ctrl-shift-r?
- 14. Windows Constants для Ctrl + X, Ctrl + C и Ctrl + V
- 15. FabricJs Ctrl C + Ctrl V
- 16. Перетаскиваемый элемент на ctrl
- 17. Linux C/C++ клавиатура ctrl + [somekey] и ctrl + alt + [somekey}
- 18. Gif появляется, когда нажимается Ctrl-клавиша
- 19. VS2010 Клавиша CTRL + M перестала работать
- 20. Включает ли экран CTRL + T?
- 21. Могу ли я сделать Python 2.5 выходом на ctrl-D в Windows вместо ctrl-Z?
- 22. Могу ли я подражать CTRL-a, CTRL-c в Adobe PDF-читателе от студии vb?
- 23. Vim Ctrl-Left/Ctrl-Вправо поведение
- 24. История появления Ctrl-Enter
- 25. Как проверить, нажата ли клавиша прямо сейчас
- 26. клавиши Ctrl сдерживала после имитации клавиши Ctrl вниз событий и Ctrl ключа до события
- 27. Сделать выбор мышью Ctrl нажата в javascript?
- 28. Правильная клавиша отправки для Ctrl + Shift +;
- 29. Ctrl + T, Ctrl + O, не работает правильно
- 30. e.which коды CTRL + A и Ctrl + E
Что у вас есть? Кроме того, любая конкретная причина, по которой вы хотите провести различие между этими двумя? – Gishu
Можете ли вы дать дополнительную информацию? – jfs
Поскольку никто другой не спросил ... почему вы хотите разграничить их? – jrista