Как отправить коды сканирования клавиатуры вручную?


Я работаю над проектом, который должен эмулировать нажатие клавиши Windows. Я пробовал отправить ключи.Посылать бесполезно.

В частности, ключ windows должен быть согласован с кнопкой. То есть я хочу отправить ключ Windows и плюс / минус.

4 4

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