Entwickler-Ecke

Windows API - WindowState anderer Fenster ändern?


crncpz - Fr 29.05.09 11:45
Titel: WindowState anderer Fenster ändern?
hallo

ich probiere gerade ein Fenster eines anderen Programmes im Vordergrund anzeigen zu lassen.


Delphi-Quelltext
1:
windows.showwindow(handle,sw_normal);                    

diese Lösung hat aber eine unschöne Eigenschaft, wenn man ein Fenster was maximiert ist, minimiert und dann mit showwindow aufruft, dann wird das Fenster nicht wie zuvor maximiert dargestellt.

ich habe auch versucht das Fenster aktiv zu setzen und mit Enter anzuzeigen, dies klappt aber auch nicht immer.

Delphi-Quelltext
1:
2:
windows.SetForegroundWindow(handle);
Sndkey32.SendKeys('{ENTER}', false);

gibt es eine Möglichkeit dieses Problem zu umgehen? Kann man vielleicht abfragen wie der Windowstate des fremden Fensters ist um dies dann beim anzeigen zu berücksichtigen?


bummi - Fr 29.05.09 14:37


Delphi-Quelltext
1:
windows.showwindow(f.handle,sw_restore);                    


Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt


crncpz - Fr 29.05.09 16:12

danke das klappt wunderbar, da hätte man vielleicht auch selbst drauf kommen können :P

habe auch gerade eine Antwort auf den Rest meiner Frage gefunden:
mit IsIconic lässt sich prüfen ob ein Fenster minimiert ist und mit IsZoomed ob es maximiert ist, alle anderen sollten dann ja den WindowState normal haben.