Mit vbs monitor herausfinden
Hallo,
ich möchte eine vbs Applikation "links" oben starten.
Das Problem ist, von den 3 Monitoren gibt es manchmal nur 1 <- dieser ist dann der Hauptmonitor, wann anders sind es 3 und dann ist links oben nicht der Hauptmonitor sonder 2 Monitore weiter links <- also - 2x 1980px
mit
kann ich die Availability herausfinden und weiß so, ob ich 1 oder 3 Monitore habe.
Jetzt stellt sich doch die Frage, ob man das nicht Intelligenter machen könnte (weil was wäre, wenn ich mal 3 Monitore habe, aber der Standard-Monitor ist doch ganz links <= in diesen Fall würde ich das Fenster ins Nirvana verschieben).
Vielen Dank für jede Idee
Grüße
ich möchte eine vbs Applikation "links" oben starten.
Das Problem ist, von den 3 Monitoren gibt es manchmal nur 1 <- dieser ist dann der Hauptmonitor, wann anders sind es 3 und dann ist links oben nicht der Hauptmonitor sonder 2 Monitore weiter links <- also - 2x 1980px
mit
Set monitor = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor")
kann ich die Availability herausfinden und weiß so, ob ich 1 oder 3 Monitore habe.
Jetzt stellt sich doch die Frage, ob man das nicht Intelligenter machen könnte (weil was wäre, wenn ich mal 3 Monitore habe, aber der Standard-Monitor ist doch ganz links <= in diesen Fall würde ich das Fenster ins Nirvana verschieben).
Vielen Dank für jede Idee
Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 346661
Url: https://administrator.de/contentid/346661
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
6 Kommentare
Neuester Kommentar
Servus,
diese Info bekommst du über die Win32_API und GetSystemMetrics, man beachte die Hinweise auf Multiple Monitor System Metrics.
Beispiel mit Powershell um an die X, Y Kordinaten des Virtual Screens zu kommen:
Als VBA lässt sich das so nutzen
WICHTIG VBS kann keine Win32_Funktionen einbinden, VBA hingegen schon!
Grüße Uwe
diese Info bekommst du über die Win32_API und GetSystemMetrics, man beachte die Hinweise auf Multiple Monitor System Metrics.
Beispiel mit Powershell um an die X, Y Kordinaten des Virtual Screens zu kommen:
$tools = Add-Type –memberDefinition '
[DllImport("user32.dll")] public static extern int GetSystemMetrics(int smIndex);
' -name "windowtools" -namespace Win32Functions –passThru -EA SilentlyContinue
$virtual_x = $tools::GetSystemMetrics(76)
$virtual_y = $tools::GetSystemMetrics(77)
$virtual_width = $tools::GetSystemMetrics(78)
$virtual_height = $tools::GetSystemMetrics(79)
Public Declare Function GetSystemMetrics Lib "user32.dll" (ByVal smIndex As Integer) As Integer
Sub GetVirtualScreenCoordinates()
MsgBox "X: " & GetSystemMetrics(76) & vbNewLine & "Y: " & GetSystemMetrics(77)
End Sub
Grüße Uwe
Du kannst ja das Powershell-Skript in einen Oneliner wandeln und dir den benötigten Wert über shell.Exec zurückgeben lassen.
Hier ein Beispiel nur für die X-Koordinate:
Hier ein Beispiel nur für die X-Koordinate:
Set objShell = CreateObject("Wscript.Shell")
Set oExec = objShell.Exec ("powershell -NoProfile -WindowStyle Hidden -Ex Bypass -C ""(Add-Type -memberDefinition '[DllImport(\""user32.dll\"")] public static extern int GetSystemMetrics(int smIndex);' -passthru -Name 'tools')::GetSystemMetrics(76)""")
Do While oExec.Status = 0
WScript.Sleep 100
Loop
MsgBox oExec.StdOut.ReadAll()