SendInput() an ein bestimmtes Programm



  • Hallo,

    ich möchte gerne eine Anwendung z.B. Winamp ein Tastendruck zusenden.
    Wie kann ich das genau machen??
    Ich habe mir bereits die Funktion SendInput() angesehen, jedoch ist die ja für das aktuell aktive Fesnter nur zu gebrauchen.
    Mein Ziel ist es ein Tastendruck an Winamp zu schicken, ohne dass es aufpoppt.

    Wie kann ich das anstellen?



  • HWND hwnd = FindWindow("NameDesProgramms", NULL);
     SetForegroundWindow(hwnd);
     keybd_event(VK_ESCAPE, 0, 0, 0);
     keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0);
    

    Wenn das Fenster minimiert ist, wird es auch nicht angezeigt, sondern bleibt minimiert! Eventuell könntest du anstadt SetForegroundWindow auch SetFocus benutzen, währe warscheinlich besser, bin mir aber nicht sicher ob es dann noch unktioniert!



  • Vielen Dank aber kommt man auch irgendwie anders an den HWND als mit FindWindow()?
    Denn bei Winamp ändert sich je nach Lied ständig der Fenstername bzw geht das irgendwie über den Prozessen?!



  • Es ist ja nicht direkt der Fenstername, sondern der Prozessname, und ich glaube nicht das der sich ändert. Ich weiß zwar nicht was WinAMP ist, aber schau mal im Taskmanager unter Prozesse nach WinAMP, das müsste dann auch der Prozess name sein!



  • Nein, es ist der Fenstertitel, nicht der Prozessname. Du kannst optional den Name der Fensterklasse angeben (2. Parameter), übergib dann als erstes Argument NULL. Den Name der Fensterklasse von WinAMP findest du z.Bsp. mit WinID heraus. Und btw. ist keybd_event() obsolet. Dazu siehe MSDN.



  • Wie kann ich mit WinID den Namen der Fensterklasse herraus finden bzw wo finde ich diese Funktion oder dieses Programm??

    Kann man nichts mit der Process ID anfangen oder so?!



  • Okay ich habe das Programm gefunden und hab auch den Namen der Fensterklasse herrausfinden können. Bei Winamp heißt der Winamp v1.x aber mit der Funktion SetForegroundWindow() wird z.B. wenn ich ein Spiel spiele, dieses Fenster von dem Spiel minimiert und das sollte nach Möglichkeit nicht vorkommen.
    Also müsste ich eine andere Methode finden, mit der ich ein Tastendruck an Winamp schicken könnte.

    Gibt es da vielleicht eine andere Möglichkeit??



  • Benutzt du bereits SendInput? SetForegroundWindow() lass mal lieber weg!



  • Jo aber wie kann ich dann SendInput an ein bestimmtes Fenster schicken??



  • Mit der Forensuche findest du sehr viel zu SendInput().



  • Jo da finde ich auch sehr viel aber immer seh ich da sehe ich nur, dass man das Fester bei SendInput den Fokus geben muss oder ähnliches.
    Ich würde ja gerne Winamp einen Tastendruck schicken, ohne dass sich mein Spiel minimiert!
    Geht das nicht irgendwie damit?!

    Oder womit könnte das noch gehen??
    Nur mit SendMessage??


Anmelden zum Antworten