Это во многом зависит от того, что вы хотите. Вы хотите отправить ключи на
- ваше приложение
- другое фиксированное приложение
- Имитация глобального нажатия клавиш
Глобальное моделирование клавиш
Все это приведет к проблемам с таргетингом на конкретное приложение и изменениям в активном окне.
SendKeys
Отправляет сообщения в активное приложение. Это функция высокого уровня, принимающая строку, кодирующую последовательность клавиш.
keybd_event
очень низкий уровень и вводит глобальное нажатие клавиши. В большинстве случаев SendKeys
проще в использовании.
mouse_event
имитирует ввод мыши.
SendInput
заменяет эти функции. Он более гибкий, но немного сложнее в использовании.
Отправка в определенное окно
При работе с фиксированным целевым окном отправка сообщений может работать в зависимости от того, как работает окно. Но так как не обновляет все состояния , это может не всегда работать. Но у вас нет условий гонки с изменением фокуса окна, что стоит много.
WM_CHAR
отправляет символ в основной многоязычной плоскости (16 бит)
WM_UNICHAR
отправляет символ, поддерживающий весь диапазон Unicode
WM_KEYDOWN
и WM_KEYUP
Отправляет клавиши, которые будут преобразованы в символы с помощью раскладки клавиатуры.
Моя рекомендация заключается в том, чтобы при нацеливании на конкретное окно / приложение сначала попытаться использовать сообщения, и только в случае неудачи попробовать одно из решений более низкого уровня.