Ich hole mir ein Programmfenster, sagen wir mal notead.exe in den Vordergrund.
AppActivate ("Notepad.exe")
Kann ich mit VBA genau dieses Fenster an eine ganz bestimmte Stelle im Bildschirm verscheiben lassen!?
Vielen Dank für Hilfe
marspoki
Um ein Fenster mit VBA an eine bestimmte Position auf dem Bildschirm zu verschieben, verwende die folgenden Schritte:
Öffne den VBA-Editor:
ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.Füge ein neues Modul hinzu:
Füge den folgenden Code ein:
Option Explicit
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Private Declare Function MoveWindow Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal bRepaint As Long) As Long
Private Declare Function GetWindowRect Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByRef lpRect As RECT) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Sub FensterVerschieben()
Dim hWnd As Long
Dim udtRECT As RECT
' Aktiviere das Fenster, das verschoben werden soll
AppActivate "Unbenannt - Editor"
hWnd = GetForegroundWindow()
If hWnd <> 0 Then
Call GetWindowRect(hWnd, udtRECT)
Call MoveWindow(hWnd, 0, 0, udtRECT.Right - udtRECT.Left, udtRECT.Bottom - udtRECT.Top, True)
End If
End Sub
Ändere den Fenstertitel:
AppActivate korrekt angegeben ist.Führe das Makro aus:
F5, um das Makro auszuführen und das Fenster wird an die Position (0, 0) verschoben.Fehler: Fenster wird nicht gefunden:
AppActivate angegebenen Titel übereinstimmt.Fehler: Makro läuft nicht:
Fenster bewegt sich nicht:
user32.dll korrekt deklariert ist und dass das relevante Fenster im Vordergrund ist.Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch Tools von Drittanbietern verwenden, um Fenster zu verschieben. Programme wie AutoHotkey ermöglichen es Dir, Skripte zu erstellen, die Fenster automatisch an eine bestimmte Position verschieben.
Hier ist ein einfaches Beispiel, um ein Notepad-Fenster auf die linke obere Ecke des Bildschirms zu verschieben:
AppActivate "Notepad"
Call MoveWindow(hWnd, 0, 0, 800, 600, True) ' Verschiebt das Fenster auf Position (0,0) mit Breite 800 und Höhe 600
Verwende Variablen für Positionen:
x und y, um die Position des Fensters dynamisch zu gestalten.Kombiniere mit anderen VBA-Funktionen:
Debugging:
Debug.Print hWnd, um den Handle des Fensters zu überprüfen, falls das Verschieben nicht funktioniert.1. Was ist GetForegroundWindow?
GetForegroundWindow ist eine Funktion, die den Handle (hWnd) des aktuell aktiven Fensters zurückgibt.
2. Wie funktioniert MoveWindow?
MoveWindow ermöglicht es, die Position und Größe eines Fensters zu ändern, indem Du die entsprechenden Parameter übergibst.
3. Kann ich auch andere Fenster verschieben?
Ja, Du kannst jedes Fenster verschieben, solange Du den korrekten Fenstertitel in AppActivate angibst.