Announcement

Collapse
No announcement yet.

Warum funktioniert PostMessage, aber SendMessage nicht?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Warum funktioniert PostMessage, aber SendMessage nicht?

    Hallo,

    Mein Problem ist, dass ich einem anderen (nicht von mir erstellt) Programm einen Tastendruck mittels WM_KEYDOWN vermitteln möchte.
    Das geht mit : PostMessage(Flastcontrol,WM_KEYDOWN,l,p); echt prima, aber
    SendMessage(Flastcontrol,WM_KEYDOWN,l,p); erzeugt im anderen Programm keinen Tastendruck, kehrt aber ebenfalls sofort wieder an meinen Thread zurück. Ich arbeite mit Windows XP, hat jemand schon irgend etwas zu diesem Problem gehört ?

  • #2
    simulierte Key-Events müssen per PostMessage() gesendet werden, intern wird mit InSendMessage() eine mit SendMessage() gesendete Message ignoriert. Grundsätzlich verarbeiten die meisten Programme wm_KeyDown/wm_KeyUp Messages nicht, sondern sie überlassen es dem System aus diesen Messages wm_Char Messages zu erzeugen. Diese wm_Char Messages werden durch das System gepostet.<br>

    Also, entweder versuchst du mit wm_Char zu arbeiten oder aber mit keyb_event() einen Tastenanschlag zu simulieren.

    Gruß Hage

    Comment


    • #3
      Leider verarbeitet die zu steuernde Anwendung nur WM_KEYDOWN Messages und keine WM_CHAR (jedenfalls nicht richtig, es handelt sich um eine Combobox mit Datenbankzugriff, die nur bei WM_KEYDOWN eine Suche anstösst...komisch).

      Aber mit keyb_event kann ich bestimmt was anfangen, obwohl man dann ja nicht direkt an ein Editfeld senden kann... Aber evtl. kann man ja die entsprechende Anwendung in den Vordergrund bringen, bevor das Ereignis simuliert wird.

      Auf jeden Fall allerbesten Dank für die Info, dass SendMessage intern ignoriert wird.

      Gruss, Matthia

      Comment


      • #4
        Ah, Vorsicht bei ComboBox'en. Diese bestehen aus bis zu DREI separaten Fensteren. Eins für die ComboBox und deren "Rahmen", darin eingebettet ein Edit-Fenster ohne Rahmen falls man eine Eingabe tätigen kann, und das Dritte als ListBox-Fenster wenn die ComboBox aufgeklappt ist. Jenach Zustand der ComboBox sind diese Fenster aktiv/sichtbar/fokusiert oder eben nicht aktiv/sichtbar/fokusiert.<br>
        In vielen Fällen ignorieren Fenster Messages die die Fokusierung der Fenster benötigen. Das sind eben z.B. Key-Messages.<br>

        Gruß Hage

        Comment

        Working...
        X