Window Mover

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Window Mover

Beitrag 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) 
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Window Mover

Beitrag von Kiffi »

Praktisch. Danke! :allright:

Grüße ... Kiffi
a²+b²=mc²
Antworten