Fenster an die oberste Stelle führen
-
Hallo,
ich muss in einem programm nach gewissen arbeitsschritten immer mal wieder die returntaste drücken. Ich habe dies nun mit einem Keyboard Event in mein Programm eingebaut und funktioniert auch so. Mein Problem ist dabei nur, dass sobald das programmfenster nicht an erster stelle steht (bzw. gerade aktiv ist) das Returntasten-Ereignis auf das gerade aktuell aktive Fenster (z.B. ein Word-Dokument oder so) angewandt wird, was dann eigentlich gar nicht mehr so lustig ist. Gibt es einen Befehl, mit welchem das Fenster in dem das exe-programm läuft aktiviert wird, bzw. an die oberste stelle kommt?
Vielen Dank euch schon mal.Grüße,
Markus
-
...und was hat das jeztz mit C++ zu tun?
Ich rat mal: Du verwendest die WinAPISetFocus()
Greetz, Swordfish
-
HWND des Zielfensters rausfinden udn dann dauernd WM_RETURN als nachrichtn ( Sendmessage oder PostMessage ) senden.
-
@sdfdsfds: mhmmm
Greetz, Swordfish
-
Sorry Swordfish,
hab mich wohl ins verkehrte Forum eingeloggt.
ok, set focus, das verstehe ich, und wie bekomme ich die hwnd (ist das eine Art Code des Fensters?) des Fensters, indem das exe programm läuft raus?
danke
-
Markus Anfänger schrieb:
ok, set focus, das verstehe ich, und wie bekomme ich die hwnd (ist das eine Art Code des Fensters?) des Fensters, indem das exe programm läuft raus?
Ein HWND ist ein Handle zu einem Fenster. Ein ".exe-Programm" läuft nicht "in einem Fenster" sondern erstellt selbst das Fenster.
Du willst
FindWindow()
Greetz, Swordfish
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
SetForegroundWindow
Aber beachte die Kommentare in der Doku!!!
-
mmmhh , irgendwie klappts nicht, sowohl mit setforeground als auch mit setfocus nicht, ich glaub dass das programm den handle nicht findet. hier der ausschnitt aus meinem code
//aktuelles Fenster nach vorne bringen
HWND aktuell;
LPCTSTR text = "programm.exe";
aktuell = FindWindow( 0,text);SetForegroundWindow(aktuell);
// returntaste drücken
keybd_event( VK_RETURN,
0,
KEYEVENTF_EXTENDEDKEY | 0,
0 );// returntaste loslassen
keybd_event( VK_RETURN,
0,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
-
Glauben bringt dir nicht viel. Wieso prüfst du es nicht einfach!?
MfG,
*Ranner*
-
hallo ranner,
da geb ich dir recht, dass das glauben nicht viel bringt. wie kann ich es denn prüfen?
-
Wenn du dir die MSDN für
FindWindow() nicht angesehen, 'neh? FindWindow() liefert 0 bei Fehler und erwartet als zweiten Parameter den Namen des Fensters und nicht der .exe.
HWND aktuell = FindWindow( 0, "Dokument 1 - Microsoft Word" ); if( !aktuell ) { MessageBox( 0, "Das Fenster konnte nicht gefunden werden!", "Fehler:", MB_OK ); }
Greetz, Swordfish