Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Fenster: Status- und Positionsinformationen eines Fensters
Def @Getwindowplacement(2) !USER32,GetWindowPlacement
Def @Getlasterror(0) !KERNEL32,GetLastError
Declare Notepad_handle&,Statusinfos&,Fehler&,Windowplacement#,Activewindow&,Setstate&,Show$
Windowstyle 31
Windowtitle Status und Positionsinformationen eines Fensters
Window 0,0-640,440
Let Statusinfos&=@Createbutton(%Hwnd,Statusinfos auslesen,20,100,200,30)
Let Setstate&=@Createbutton(%Hwnd,Fensterstatus setzen,20,150,200,30)
Case @Findwindow(Unbenannt - Editor)=0 : @Winexec(NOTEPAD.EXE,1)
Let Notepad_handle&=@Findwindow(Unbenannt - Editor)
@Showwindow(%Hwnd,2)
@Showwindow(%Hwnd,1)
While 0=0
Let Activewindow&=@Getactivewindow()
Sleep 100
If @Getfocus(Statusinfos&)
@Setactivewindow(Activewindow&)
Clearlist
Addstring Fensterhandle=+@Str$(Notepad_handle&)
Dim Windowplacement#,44
Clear Windowplacement#
Long Windowplacement#,0=44
Addstring Letzter API-Fehler=+@Str$(@Getlasterror())
Let Fehler&=@Getwindowplacement(Notepad_handle&,Windowplacement#)
Addstring Rückgabe von GetWindowPlacement=+@Str$(Fehler&)
Addstring Letzter API-Fehler=+@Str$(@Getlasterror())
Addstring Fenstererzeugungsflags=+@Str$(@Long(Windowplacement#,4))
If @Long(Windowplacement#,4) | $2=@Long(Windowplacement#,4)
Addstring Fenster wird bei der Erzeugung immer maximiert
Elseif @Long(Windowplacement#,4) | $1=@Long(Windowplacement#,4)
Addstring Fensterposition für die Minimierung ist festgelegt
Endif
Addstring ShowCmd=+@Str$(@Long(Windowplacement#,8))
If @Long(Windowplacement#,8)=$1
Addstring Status=Normale Größe
Elseif @Long(Windowplacement#,8)=$0
Addstring Status=Unsichtbar
Elseif @Long(Windowplacement#,8)=$2
Addstring Status=Minimiert
Elseif @Long(Windowplacement#,8)=$3
Addstring Status=Maximiert
Elseif @Long(Windowplacement#,8)=$4
Addstring Status=Normale Größe
Elseif @Long(Windowplacement#,8)=$5
Addstring Status=Letzte Fenstergröße
Elseif @Long(Windowplacement#,8)=$6
Addstring Status=Minimiert
Elseif @Long(Windowplacement#,8)=$7
Addstring Status=Minimiert
Elseif @Long(Windowplacement#,8)=$8
Addstring Status=Normale Größe
Elseif @Long(Windowplacement#,8)=$9
Addstring Status=Status=Normale Größe
Endif
Addstring X-Koordinate,wenn Fenster minimiert ist=+@Str$(@Long(Windowplacement#,12))
Addstring Y-Koordinate,wenn Fenster minimiert ist=+@Str$(@Long(Windowplacement#,16))
Addstring X-Koordinate,wenn Fenster maximiert ist=+@Str$(@Long(Windowplacement#,20))
Addstring Y-Koordinate,wenn Fenster maximiert ist=+@Str$(@Long(Windowplacement#,24))
Addstring X-Koordinate oben links, wenn Fenster in Normalzustand ist=+@Str$(@Long(Windowplacement#,28))
Addstring Y-Koordinate oben links, wenn Fenster in Normalzustand ist=+@Str$(@Long(Windowplacement#,32))
Addstring X-Koordinate unten rechts, wenn Fenster in Normalzustand ist=+@Str$(@Long(Windowplacement#,36))
Addstring Y-Koordinate unten rechts, wenn Fenster in Normalzustand ist=+@Str$(@Long(Windowplacement#,40))
Dispose Windowplacement#
@Listbox$(Status und Positionsinformat,1)
@Setfocus(Activewindow&)
Elseif @Getfocus(Setstate&)
Let Show$=@Input$(Zahl von 0 bis 9 eingeben:,Fensterstatus setzen,1)
If Show$<>
@Showwindow(Notepad_handle&,@Val(Show$))
Clearlist
Addstring Fensterhandle=+@Str$(Notepad_handle&)
Dim Windowplacement#,44
Long Windowplacement#,0=44
Addstring Letzter API-Fehler=+@Str$(@Getlasterror())
Let Fehler&=@Getwindowplacement(Notepad_handle&,Windowplacement#)
Addstring Rückgabe von GetWindowPlacement=+@Str$(Fehler&)
Addstring Letzter API-Fehler=+@Str$(@Getlasterror())
Addstring Fenstererzeugungsflags=+@Str$(@Long(Windowplacement#,4))
If @Long(Windowplacement#,4) | $2=@Long(Windowplacement#,4)
Addstring Fenster wird bei der Erzeugung immer maximiert
Elseif @Long(Windowplacement#,4) | $1=@Long(Windowplacement#,4)
Addstring Fensterposition für die Minimierung ist festgelegt
Endif
Addstring ShowCmd=+@Str$(@Long(Windowplacement#,8))
If @Long(Windowplacement#,8)=$1
Addstring Status=Normale Größe
Elseif @Long(Windowplacement#,8)=$0
Addstring Status=Unsichtbar
Elseif @Long(Windowplacement#,8)=$2
Addstring Status=Minimiert
Elseif @Long(Windowplacement#,8)=$3
Addstring Status=Maximiert
Elseif @Long(Windowplacement#,8)=$4
Addstring Status=Normale Größe
Elseif @Long(Windowplacement#,8)=$5
Addstring Status=Letzte Fenstergröße
Elseif @Long(Windowplacement#,8)=$6
Addstring Status=Minimiert
Elseif @Long(Windowplacement#,8)=$7
Addstring Status=Minimiert
Elseif @Long(Windowplacement#,8)=$8
Addstring Status=Normale Größe
Elseif @Long(Windowplacement#,8)=$9
Addstring Status=Status=Normale Größe
Endif
Addstring X-Koordinate,wenn Fenster minimiert ist=+@Str$(@Long(Windowplacement#,12))
Addstring Y-Koordinate,wenn Fenster minimiert ist=+@Str$(@Long(Windowplacement#,16))
Addstring X-Koordinate,wenn Fenster maximiert ist=+@Str$(@Long(Windowplacement#,20))
Addstring Y-Koordinate,wenn Fenster maximiert ist=+@Str$(@Long(Windowplacement#,24))
Addstring X-Koordinate oben links, wenn Fenster in Normalzustand ist=+@Str$(@Long(Windowplacement#,28))
Addstring Y-Koordinate oben links, wenn Fenster in Normalzustand ist=+@Str$(@Long(Windowplacement#,32))
Addstring X-Koordinate unten rechts, wenn Fenster in Normalzustand ist=+@Str$(@Long(Windowplacement#,36))
Addstring Y-Koordinate unten rechts, wenn Fenster in Normalzustand ist=+@Str$(@Long(Windowplacement#,40))
Dispose Windowplacement#
@Listbox$(Status und Positionsinformat,1)
@Setfocus(Activewindow&)
Endif
Endif
Wend