Fenster relativ zur TaskBar verschieben

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
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Fenster relativ zur TaskBar verschieben

Beitrag von Kai »

Da ich in meinen aktuellen Projekt solch eine Funktion benötige,
und glaube das auch andere diese gebrauchen können,
poste ich sie einfach mal hier.

Die Funktion verschiebt ein Fenster in der unteren rechten Ecke am Bildschirm und beachtet dabei die TaskBar.

Code: Alles auswählen

Procedure MoveWindowAtTaskBar(hWnd, Gap)
 If IsWindow_(hWnd) <> 0
 
  Protected DesktopW.l, DesktopH.l
  DesktopW = GetSystemMetrics_(#SM_CXSCREEN)
  DesktopH = GetSystemMetrics_(#SM_CYSCREEN)
 
  Protected W.RECT, WindowW.l, WindowH.l
  GetWindowRect_(hWnd, @W)
  WindowW = W\right - W\left
  WindowH = W\bottom - W\top
 
  Protected TaskBar.APPBARDATA, TaskBarP.l, TaskBarW.l, TaskBarH.l
  SHAppBarMessage_(#ABM_GETTASKBARPOS, TaskBar)
  TaskBarP = TaskBar\uEdge
  SHAppBarMessage_(#ABM_GETTASKBARPOS, TaskBar)
  TaskBarW = DesktopW - TaskBar\rc\left
  TaskBarH = DesktopH - TaskBar\rc\top
 
  Select TaskBarP
   Case #ABE_LEFT:   MoveWindow_(hWnd, DesktopW - WindowW - Gap, DesktopH - WindowH - Gap, WindowW, WindowH, #True)
   Case #ABE_TOP:    MoveWindow_(hWnd, DesktopW - WindowW - Gap, DesktopH - WindowH - Gap, WindowW, WindowH, #True)
   Case #ABE_RIGHT:  MoveWindow_(hWnd, DesktopW - WindowW - TaskBarW - Gap, DesktopH - WindowH - Gap, WindowW, WindowH, #True)
   Case #ABE_BOTTOM: MoveWindow_(hWnd, DesktopW - WindowW - Gap, DesktopH - WindowH - TaskBarH - Gap, WindowW, WindowH, #True)
  EndSelect
 
  ProcedureReturn #True
 Else
  ProcedureReturn #False
 EndIf
EndProcedure
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86