SendMessage, Wann wird KEYDOWN, SYSKEYDOWN usw. verwendet?

Ich schreibe eine Anwendung, mit der Tastatureingaben an eine andere Anwendung gesendet werdenSendMessage.

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

Ich habe mit den verschiedenen Argumenten experimentiert und festgestellt, dass ich je nach Tastendruck, den ich sende, unterschiedliche Argumente an den Parameter übergeben mussint Msg.

Zum Beispiel habe ich die folgenden als mögliche Werte für definiertMsg.

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

und die folgenden Testschlüssel, die an den 3. Parameter übergeben werdenwParam:

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

Wenn ich das senden willF1 Schlüssel (VK_F1) Es funktioniert nur, wenn es benutzt wirdWM_SYSKEYDOWN, wenn ich das senden willA Schlüssel funktioniert es nur, wenn ich benutzeWM_CHARund wenn ich das senden willTAB Schlüssel funktioniert es nur, wenn ich benutzeWM_KEYDOWN.

Meine Frage ist: Gibt es eine Dokumentation, die mir sagt, wann ich sie verwenden soll?WM_KEYDOWN, WM_SYSKEYDOWNusw. basierend auf welchem ​​Schlüssel, der gesendet wird? Oder mache ich es falsch und es gibt eine konsistente Methode, die für jeden Schlüssel funktioniert?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage