Programme nutzt, passiert es häufig das Fenster z.B. auf dem Laptop
mit geringerer Bildschirmauflösung im Nirvana geöffnet werden.
Das kleine Tool verschiebt nun alle Fenster zurück, die sich ausserhalb des
Arbeitsbereiches befinden.
Code: Alles auswählen
; DiGe, German Forum 22/03/2007
Global WA.RECT
Procedure EnumProc(Handle.l, lParam.l)
If IsWindowVisible_(Handle)
GetWindowRect_ ( Handle, @rect.RECT )
If rect\right And rect\bottom
Titel.s = Space(#MAX_PATH)
GetWindowText_( Handle, Titel, #MAX_PATH )
Titel = Trim(Titel)
If Titel
GetWindowPlacement_ ( Handle, @wp.WINDOWPLACEMENT )
x = wp\rcNormalPosition\left
y = wp\rcNormalPosition\top
If x < WA\left Or x > WA\right
x = WA\left
EndIf
If y < WA\top Or y > WA\bottom
y = WA\top
EndIf
If x <> wp\rcNormalPosition\left Or y <> wp\rcNormalPosition\top
Titel + Chr(13) + Chr(10) + "Pos: " + Str(wp\rcNormalPosition\left) + ", " + Str(wp\rcNormalPosition\top)
If MessageRequester( "Fenster verschieben?", Titel, #MB_OKCANCEL ) & #IDOK
SetWindowPos_(Handle, #HWND_NOTOPMOST, x, y, -1, -1, #SWP_NOOWNERZORDER | #SWP_NOSIZE | #SWP_NOZORDER )
EndIf
EndIf
EndIf
EndIf
EndIf
ProcedureReturn #True
EndProcedure
SystemParametersInfo_( #SPI_GETWORKAREA, #Null, @WA, #Null )
EnumWindows_(@EnumProc(), 0)