Как отправить коды сканирования клавиатуры вручную?
Я работаю над проектом, который должен эмулировать нажатие клавиши Windows. Я пробовал отправить ключи.Посылать бесполезно.
В частности, ключ windows должен быть согласован с кнопкой. То есть я хочу отправить ключ Windows и плюс / минус.
4 ответа:
Это может быть излишним, но вы можете попробовать использовать AutoItX, который является способом использования AutoIt в качестве DLL. Я писал только автономные сценарии, но я знаю, что AutoIt позволяет очень легко имитировать нажатие клавиши Windows.
Например, для открытия диалогового окна run достаточно:
Send ("#r"); Win + R = run
Я бы добавил, что это часто маловероятно для вас, чтобы найти функции более низкого уровня, как эти в .NET framework. Если вы были сбиты с толку относительно того, почему предложения оба указывали на "не C#" функции, то вы, вероятно, могли бы использовать некоторые детали на P/Invoke.
В основном существуют способы определения функций C#, которые "привязывают" их к функциям API Windows, которые не существуют в сборках .NET (вместо этого они обычно реализуются в C++ и доступны в виде стандартной библиотеки DLL). Этот процесс считается "вызовом платформы (Windows)" (таким образом, P/Invoke).
Сначала может быть немного шатко сопоставлять все типы данных между вызовами стилей C++ и C#, но, к счастью, есть и другие, которые проложили путь.
Предложенная функция, SendInput, имеет оболочку PInvoke над PInvoke.net этот класс-оболочка, если он доступен в вашей сборке, позволит вам вызывать SendInput, как если бы это была функция C#.
PInvoke.net это в основном PInvoke wiki для хорошо известных вызовов API в windows, и обычно имеет C#/VB.NET оболочку вызовов API.
Я думаю, что лучшим вариантом является использование keybd_event клавиша вниз (так называемый ExtendedKey) со значением Лвиная часть системы.Окна.Формы.Ключи перечисление, затем второй символ keydown ( + ) и keyup оба ключа.
Я не верю, что SendKeys работает с ключом Windows в качестве модификатора.
Попробуйте SendInput или более старый keybd_event