Offenes Programm in den Vordergrund rufen!
-
starte das programm mit createprocess() (s.o.), da erhälst du eine Process-ID.
suche dann nach allen top-level-fenstern mithilfe von EnumWindows() und schaue mithilfe von GetWindowThreadProcesId(), welches Fenster die obige Process-ID hat.
Hast du es gefunden, nimm das Window-Handle welches dir EnumWindows() lieferte und übergib es SetForegroundWindow().
-
Warum eigentlich CreateProcess und nicht ShellExecuteEx. Ich fand die etwas einfacher zu bedienen.
-
Sehe ich genauso, ich würde grundsätzlich eher ShellExecute(Ex) als CreateProcess verwenden.
-
CreateProcess startet direkt den Prozess. Mit ShellExecute wird die Datei _nur_ geöffnet. Man kann zB auch JPGs mit ShellExecute öffnen, wo dann der Standard-Viewer geöffnet wird.
Das macht bei Exen manchmal Probleme, wenn man da ShellExecute benutzt. Bei CreateProcess kann man dann zum Beispiel auch noch Kommandozeilenparameter übergeben, was bei Shellexecute nicht möglich ist.
Ausserdem kann man die Prozesse besser verwalten (neue Processgroups öffnen etc).
-
Natürlich kannst du auch bei ShellExecute(Ex) Parameter übergeben!
Und wie gesagt es ist einfacher und erfüllt auf jeden Fall seinen Zweck!schirrmie
-
oh sorry, stimmt, sehe ich grade.
aber du bist mit createprocess viel näher am system, wie ich schon geschrieben habe. du bekommst processid, etc zurück und kannst beim starten auch den process in einer neuen processgroup starten, etc. das geht alles mit shellexecute nicht...
-
Ja brauch man aber meist auch nicht. Und wenn man es nicht brauch wieso es sich dann "umständlich" mit CreateProcess machen. Es ist ja gut wenn jemand sagt das es das gibt (hier soll ja nix unterschlagen werden ;)) aber ich finde es falsch jemanden dies als DIE und nur DIE Lösung anzubieten. Es kommt immer auf den Anwendungsfall an! Und wie es sich anhört reicht ihm ShellExecute.
schirrmie
-
Das es DIE Lösung ist, wollte ich nicht rüberbringen

Es gibt aber zum Beispiel recht viele Probleme unter Vista mit ShellExecute.
Stichwort: Administratorrechte, eingeschränkter Nutzer, usw.Aber ich weiß ja nicht, ob er was Vistakompatibles machen woll

-
Was gibt es für Probleme mit ShellExecute unter Vista bitte?
-
Machine schrieb:
Stichwort: Administratorrechte, eingeschränkter Nutzer, usw.
Da oben stehts. Hab leider keine Zeit was genauer zu erläutern.