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_CHAR
und 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_SYSKEYDOWN
usw. 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?