Frage zu PostMessage( ), für Tasten Kombination (z.B. Strg + S ect. )



  • Hi,
    ich will an ein anderes Programm Tasten befehle schicken, klappt auch ganz wunderbar via' PostMessage( hWnd, WM_KEYDOWN, VK_KEY, 0 ), aber wie kann ich eine Tasten Kombination senden, wie Strg/Alt/Shift + Taste ???

    Gruß Tobi.


  • Mod



  • Entschuldige, aber ich find da nicht wirklich die Antwort auf miene Frage.



  • lol hast du den Blog überhaupt gelesen? Da wird doch gezeigt das du WM_KEYDOWN nicht nutzen sollst und eine alternative wird doch auch genannt!

    @Martin, schöne Seite 👍



  • Wie schon gesagt: Verwende SendInput...



  • Steht doch auch was zu inner FAQ 😉 .



  • "SendInput reiht die Eingaben ein in die Eingabequeue für das gesamte Windows System ein und liefert diese an die aktive Applikation aus und an das Fenster, das den aktuellen Eingabefokus hat."

    Das kann ich aber nicht gebrauchen. Wenn ich jetzt in einer Anderen anwendung bin sei es nen Computergame ala CS ect., dann ist die andere Anwendung nicht aktive, sondern eher minimiert. Mit postMessage klappt das an minimierte anwendungen WM_KEYDOWN messages zu senden.


  • Mod

    Es spricht jedoch nichts das entsprechende Fenster zum aktiven Fenster zu machen oder?

    Wenn wenn Du es nicht gebrauchen kannst, dann lass es bleiben. Es gibt keinen anderen Weg... Lies mein Bog und versuche die Einwände zu verstehen.
    Ansonsten scheinst Du es ja besser zu wissen, wie man es macht... 👎



  • Jetzt sei doch nicht gleich eingeschnapt, ich frag doch nur. Aber wenn ich veranlasse das die Andere Anwendung den Focus erhält dann kann ich doch in der anderen Anwendung nicht mehr agieren?!

    Oder sollte ich das so machen das ich der Anwendung kurz den fokus gebe meine SendInput mache und dann den fokus zum alten fenster setze?

    Gruß Tobi.



  • T0bi schrieb:

    Jetzt sei doch nicht gleich eingeschnapt

    Tobi, mein alter Freund, es ist leider so, dass du in jedem deiner Threads eine gewisse Attitüde an den Tag legst, die Einschätzungen, wie die Martins auf den Plan ruft.

    T0bi schrieb:

    Aber wenn ich veranlasse das die Andere Anwendung den Focus erhält dann kann ich doch in der anderen Anwendung nicht mehr agieren?!

    Sagt dir Multitasking was?

    greetz, Swordfish



  • Hallo,
    ich arbeite gerade an einem ähnlichen Problem. Ich will ein Programm schreiben, dass bei Google Earth eine Tour abspiel. Dabei sol alle paar Millisekunden auf Bild kopieren geklickt werden, das ganze dann in Paint eingefügt werden und anschließend gespeichert werden.
    Somit erhält man dann von der Tour viele einzelen Bilder, die man hinterher in einem Videoprogramm zusammenfügen kann.

    Dafür habe ich erstmal ein kleines Testprogramm angefangen, weil ich bei diesen Dingen bisher kaum Erfahrung habe.

    HWND  hwnd       = FindWindow(NULL, _T("Unbenannt - Editor")); 
    SetForegroundWindow(hwnd); 
     keybd_event(VK_CONTROL,0,0,0);
     keybd_event('S',0,0,0);
     keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
     keybd_event('S',0,KEYEVENTF_KEYUP,0);
    
     keybd_event('H',0,0,0);	
      keybd_event('H',0,KEYEVENTF_KEYUP,0);	
      keybd_event(0x2E,0,0,0);	
       keybd_event(0x2E,0,KEYEVENTF_KEYUP,0);
       keybd_event('T',0,0,0);	
      keybd_event('T',0,KEYEVENTF_KEYUP,0);
       keybd_event('X',0,0,0);	
      keybd_event('X',0,KEYEVENTF_KEYUP,0);
       keybd_event('T',0,0,0);	
      keybd_event('T',0,KEYEVENTF_KEYUP,0);
    

    Dieser Quellcode soll einfach mal versuchen, die Daten, die im Editor stehen zu speichern.
    Leider klappt das aber nur manchmal. Häufig öffnet sich der Speichern unter Dialog gar nicht. Zudem gibt es immer Probleme, wenn es ein Popup eines anderen Programms gibt, z.B. vom Virenprogramm. Dann hat er anscheinen sofort den Fokus verloren und alle Eingaben gehen daneben....
    Ist SendInput dagegen immuner?

    Ein weiteres Problem ist, dass es in Google Earth z.B. die Play-Taste gibt, womit man die Tour abspielen kann oder pausieren kann. Mit PostMessage hätte ich diesen Button doch direkt adressieren können, (über Spy++ kann man ja die Namen herausfinden), aber wie geht das denn jetzt bei keybd_event oder SendInput?

    Noch eine letzte Frage 😉 :
    Bei Paint gibt es nur einen Shortcut für "Speichern", was muss ich denn machen, wenn ich will, dass mein Programm "Speichern unter" auswählt?

    Auf jeden Fall vielen Dank für eine Antwort.
    Über ein kleines Codebeispiel würde ich mich natürlich auch sehr freuen, da ich bisher in diesem Bereich noch nicht programmier habe 😞

    Viele Grüße
    Andreas


Anmelden zum Antworten