Stammtisch & Café | | | | |
Beschreibung:
GetWindowPlacement liest Informationen über den augenblicklichen Status und über die voraussichtliche Fensterposition aus, wenn sich ein Fenster in einem bestimmten Status befindet.
Deklaration:
DEF @GetWindowPlacement(2) !USER32,GetWindowPlacement
Parameter:
1.Parameter: WINDOWPLACEMENT Struktur oder 44 Byte große Bereichsvariable, die Informationen über den Status und die voraussichtliche Fensterposition aus, wenn sich ein Fenster in einem bestimmten Status befindet aufnimmt.=> -Byte 0-3 = Größe der Bereichsvariablen in Bytes -Byte 4-7 = Kombinationsflag für die Fenstererzeugung und Minimierung: $1 = (WPF_SETMINPOSITION) Fensterposition für die Minimierung ist festgelegt und steht in Byte 12 bis Byte 19. $2 = (WPF_RESTORETOMAXIMIZED) Fenster wird bei der Erzeugung immer maximiert. -Byte 8-11 = Ein Statusflag.=> $1 = (SW_SHOWNORMAL) Normale Fenstergröße. $2 = (SW_SHOWMINIMIZED) Minimiert $3 = (SW_SHOWMAXIMIZED) Maximiert -Byte 12-15 = X-Koordinate,wenn Fenster minimiert ist. -Byte 16-19 = Y-Koordinate,wenn Fenster minimiert ist. -Byte 20-23 = X-Koordinate,wenn Fenster maximiert ist. -Byte 24-27 = Y-Koordinate,wenn Fenster maximiert ist. -Byte 28-31 = X-Koordinate oben links, wenn Fenster in Normalzustand ist. -Byte 32-35 = Y-Koordinate oben links, wenn Fenster in Normalzustand ist. -Byte 36-39 = X-Koordinate unten rechts, wenn Fenster in Normalzustand ist. -Byte 40-43 = Y-Koordinate unten rechts, wenn Fenster in Normalzustand ist.
Rückgabewert:
1 bei erfolgreichem Auslesen, 0 bei Fehler.
Beispiele:
KompilierenMarkierenSeparierenDEF @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
Fenster Status Position vorausberechnen X Y Koordinaten minimiert maximiert Normalzustand normal
|
| | | | |
| | | | | | | |
|
AntwortenThemenoptionen | 1.325 Betrachtungen |
ThemeninformationenDieses Thema hat 2 Teilnehmer: |