SendMessage, когда использовать KEYDOWN, SYSKEYDOWN и т. Д.?

Я пишу приложение, которое отправляет нажатия клавиш в другое приложение, используя.SendMessage

[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);

Я экспериментировал с различными аргументами и заметил, что, в зависимости от того, какое нажатие клавиши я посылаю, я должен передать различные аргументы параметру.int Msg

Например, я определил следующие возможные значения для.Msg

private static ushort WM_SYSKEYDOWN = 0x0104;
private static ushort WM_CHAR = 0x0102;
private static ushort WM_KEYDOWN = 0x0100;

и следующие тестовые ключи, которые передаются третьему параметру:wParam

private static ushort VK_F1 = 0x70;
private static ushort VK_A = 0x41;
private static ushort VK_TAB = 0x09;

Когда я хочу отправитьF1 ключ (VK_F1) это работает только тогда, когда это использованиеWM_SYSKEYDOWN, когда я хочу отправить ключ это работает только когда я используюWM_CHARи когда я хочу отправитьTAB ключ это работает только когда я использую.WM_KEYDOWN

Мой вопрос: есть ли какая-то документация, которая говорит мне, когда использовать,WM_KEYDOWNWM_SYSKEYDOWNи т. д. в зависимости от того, какой ключ отправляется? Или, возможно, я делаю это неправильно, и есть один последовательный метод, который работает для любого ключа?

Ответы на вопрос(1)

Ваш ответ на вопрос