Autor Beitrag
CodexX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

WinXP
Delphi XE
BeitragVerfasst: Fr 12.05.06 11:13 
Ich habe den Code aus der Delphi Library in mein Programm eingebaut.
Der Mehrfachstart wird verhindert und die laufende Instanz wird aus dem Tray wieder hochgeholt.
Jedoch landet das Programmfenster nicht im Vordergrund, sondern hinter allen Fenstern, die seit der letzten Programmanzeige aktiv waren.

ist
ausblenden Delphi-Quelltext
1:
2:
3:
    Application.Restore;
    SetForegroundWindow(Handle);
    SetActiveWindow(Handle);
nicht ausreichen oder gar fehlerhaft?
starsurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 334

Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
BeitragVerfasst: Fr 12.05.06 11:31 
haben das die Admins noch nicht geändert, dabei hat ichs doch gesagt *grml*

In dem Tut fehlt was:

die Procedure wo das drinne steht musst du noch mit dem onMessage Ereignis der Application verknüpfen:

ausblenden Delphi-Quelltext
1:
allication.onmessage:=ApplicationEvents1Message;					

Das Ganze kommt bei der Form in "oncreate" rein.

Delphi weis sonst nicht das es mit der Procedure auf die Messages reagieren soll.

_________________
GEIZ IST GEIL! - Ihr Sozialamt
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 12.05.06 11:50 
Ich habe dafür folgenden Lösungsweg gewählt:
Die Schweizer wieder

@user profile iconstarsurfer:
Sorry, das muss irgendwie untergegangen sein. Ich habe mir den Beitrag jetzt gekennzeichnet, damit eine entsprechende Ergänzung dort hineinkommt. Wird in den nächsten Tagen gemacht.
CodexX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

WinXP
Delphi XE
BeitragVerfasst: Fr 12.05.06 11:58 
user profile iconstarsurfer hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
allication.onmessage:=ApplicationEvents1Message;					

Das Ganze kommt bei der Form in "oncreate" rein.

geht. danke!
CodexX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 118

WinXP
Delphi XE
BeitragVerfasst: Sa 13.05.06 18:25 
Ich muss mich korrigieren.
Interessanter- und gleichzeitig dummerweise funktioniert das nur, wenn die erste Instanz des Programms vom Debugger aus gestartet wurde. Ein Aufruf der compilierten exe ruft das Fenster korrekt wieder in den Vordergrund.
Startet man die erste Instanz jedoch ganz normal über die exe, so besteht das gleiche Problem, wie bereits ganz am Anfang im ersten Posting beschrieben.

SetForegroundWindow versagt.

Diese muss durch die von jasocul verlinkte ForceForegroundWindow ersetzt werden. (Dort sind 3 Möglichkeiten verfügbar. Die zweite ist nicht empfehlenswert, da sie das Fenster durch ständiges de-/aktivieren zunächst unbrauchbar macht. Die erste Möglichkeit funktioniert dagegen tadellos.)