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_KEYDOWN
WM_SYSKEYDOWN
и т. д. в зависимости от того, какой ключ отправляется? Или, возможно, я делаю это неправильно, и есть один последовательный метод, который работает для любого ключа?