Handle ermitteln
-
Hi @all
ich weiss, dass es hier im Forum und bei Google bereits Beispiele für mein Problem gibt, denoch konnte ich es bisher nicht lösen.

Ich starte eine fremde exe auf meinem Code, bring dann mein eigenes Fenster auf den Bildschrim und stell dort ein paar Infos dar (einfach ein wenig Text). Danach sollte ich jedoch das "fremde" Programm in den Vordergurnd bringen. Das Problem das ich jetzt habe: Wie krige ich den Handle von dem Prog? Der Text der links oben im Fensterrahmen dargestellt wird ist immer der selbe: "Info - DLG". Ich habe es mit dem folgenden Code versucht, ohne Erfolg, das fremde Fenster bleibt im Hintergrund.
ShellExecute(0,"open","C:\\Programme\\my Progs\\DummyFolder\\Start.exe","/quiet",0,SW_SHOW ); // Hier wird mein eigenes Fenster dargestellt und die Infos ausgegeben // ... // ... // Das fremde Prog wieder in den Vordergrund schieben: hWindow = FindWindowEx(FindWindow(0,"Info - DLG"), 0, 0, 0); if(!hWindow) MessageBox(0,"Fenster nicht gefunden",0,0); else SetForegroundWindow(hWindow);Zu erwähnen ist, dass die Messagebox nicht auftaucht. D.h. hWindow ist ungleich Null!
-
GetModuleHandle?
-
Windows 98, Windows 2000: The system restricts which processes can set the foreground window. A process can set the foreground window only if one of the following conditions is true:
The process is the foreground process.
The process was started by the foreground process.
The process received the last input event.
There is no foreground process.
The foreground process is being debugged.
The foreground is not locked (see LockSetForegroundWindow).
The foreground lock time-out has expired (see SPI_GETFOREGROUNDLOCKTIMEOUT in SystemParametersInfo).
Windows 2000: No menus are active.
With this change, an application cannot force a window to the foreground while the user is working with another window. Instead, SetForegroundWindow will activate the window (see SetActiveWindow) and call the FlashWindowEx function to notify the user.
-
Warum FindWindowEx? Du willst doch das Handle von dem Dialog haben und nicht von einem Kindfenster. Ergo FindWindow benutzen.
-
@Gast Luckie: Dein Vorschlag funktioniert bei mir nicht. Ich habe es mit einem Notpaddokument ausprobiert. Mit FindWindowEx() kann ich in das txt-File reinschreiben, mit FindWindow nicht...
@mgs_: Ich arbeite mit WinXP, SP2
-
Die Regeln gelten auch für XP. Außer in den aufgeführten Fällen kannst Du mit SetForegroundWindow keine Fenster nach vorne holen.
-
1. Nimm SetWindowPos

2.Mit FindWindowEx() kann ich in das txt-File reinschreiben, mit FindWindow nicht...
Normal sollte das (Rich-)Edit Feld ja auch ein Child des MainWnds sein -.-
-
black_sheep_thomas schrieb:
@Gast Luckie: Dein Vorschlag funktioniert bei mir nicht. Ich habe es mit einem Notpaddokument ausprobiert. Mit FindWindowEx() kann ich in das txt-File reinschreiben, mit FindWindow nicht...
Logisch, das Memo ist ja auch ein Kind des Hauptfensters. Aber du willst ja ein Fenster in den Vordergund holen. Die Kindfenster dieses Fensters interessieren dich ja nicht. Oder habe ich da jetzt was falsch verstanden?