Seite 1 von 1

Window Mover

Verfasst: 22.03.2007 13:20
von dige
Wenn man mit USB Stick an verschiedenen Systemen die gleichen
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) 

Re: Window Mover

Verfasst: 22.03.2007 13:39
von Kiffi
Praktisch. Danke! :allright:

Grüße ... Kiffi