Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per VBA Monitor aus Standby wecken

Per VBA Monitor aus Standby wecken
18.10.2019 12:02:06
Raffi
Guten Tag zusammen
Vor 10 Jahren war ich fleissiger Besucher dieses Forums und fand immer wieder Lösungen und Hilfe. Nun habe ich beruflich etwas verändert, weiter weg von Excel und VBA, habe nun aber doch wiedermal ein Problem, an dem ich mir die Zähne ausbeisse. Vielleicht hat hier jemand eine hilfreiche Idee?
Und zwar gehts um folgendes: Ich arbeite seit einigen Jahren im Rettungsdienst und unsere Notfalleinsätze kommen auf verschiedenen Kanälen (Funk, Funkmeldeempfänger, Disposystem im RTW und E-Mail). Wir haben uns angewöhnt, dass wir den Einsatzauftrag im E-mail jeweils ausdrucken und "zur Sicherheit" noch auf Papier mitführen. Dazu habe ich ein kleines Makro programmiert, dass bei Eingang einer Mail das angehängte PDF öffnet, ausdruckt und am Bildschirm anzeigt und dann auch gleich der Bildschirm aus dem Standby geweckt wird, damit wir am PC gleich die Adresse und die Karte sehen und möglichst keine Zeit verlieren. Das hat unter Windows 7 perfekt funktioniert. Vor einiger Zeit wurde nun der Rechner getauscht und auf Win10 aktualisiert. Seit dem funktioniert das aufwecken des Bildschirms nicht mehr. Er zeigt zwar kurz das Bild an, geht dann aber sofort wieder schlafen.
Gelöst hab ichs ursprünglich mit dem kleinen Tool MonitorWecker.exe und folgendem Makro:

Sub Monitor_wecken()
'MonitorWecker.exe wird gestartet und holt Monitor aus Standby-Modus
Shell ("C:\Users\Public\MonitorWecker.exe")
Sleep (1000)
'MonitorWecker.exe wird gleich wieder beendet
Prozess_beenden ("MonitorWecker.exe")
End Sub

Ich hab schon diverse Alternativen ausprobiert, alle mit demselben Ergebnis.
Hat jemand von euch eine Idee, wie sich das unter Windows 10 wieder bewerkstelligen liesse?
Mir ist bewusst, dass das kein spezifisches Excel-Problem ist. Aber da ich die Qualität dieses Forums kenne und das wecken des Monitors ja auch aus Excel angestossen werden könnte, habe ich mir erlaubt, trotzdem mal hier anzufragen. Ich hoffe es ist nicht zu Off-Topic, aber ich bin echt etwas am Ende mit meinem Latein.
Vielen Dank jetzt schon!
Schöne Grüsse aus der Schweiz.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA Monitor aus Standby wecken
18.10.2019 12:25:11
Daniel
Hi
Wäre der erste Schritt nicht die Quelle dieses Programms zu ermitteln und dort nachzufragen, ob’s ein Update gibt?
Gruß Daniel
AW: Per VBA Monitor aus Standby wecken
18.10.2019 14:04:49
Raffi
Hallo
Vielen Dank für die rasche Antwort. Habe ich vergessen zu erwähnen, dass ich das bereits gemacht habe. Version 1.0 aus dem Jahr 2011 ist die aktuellste Version.
Gruss
Raffi
AW: Per VBA Monitor aus Standby wecken
18.10.2019 18:34:49
onur
Wenn es nur um den "Bildschirmschoner" geht:
SendKeys "{ESC}"

reicht.
AW: Per VBA Monitor aus Standby wecken
19.10.2019 12:50:29
Raffi
Vielen Dank für die Antwort. Es geht aber um den Ruhezustand des Bildschirms. Jedoch habe ich es auch schon versucht mit SendKeys und auch nur das beenden des Bildschirmschoners funktionierte damit leider nicht. Das wäre sonst eine Alternative gewesen, aber eben, leider erwacht da gar nix. Es braucht dafür effektiv eine physische Tastatur- oder Mausaktion.
Anzeige
AW: Per VBA Monitor aus Standby wecken
19.10.2019 19:06:30
Nepumuk
Hallo Raffi,
so sollte es klappen. Die Prozedur schiebt den Mauscursor in die obere linke Ecke des aktiven Fensters und macht dort einen Linksklick.
Option Explicit

Private Declare PtrSafe Function SetCursorPos Lib "user32.dll" ( _
    ByVal x As Long, _
    ByVal y As Long) As Long
Private Declare PtrSafe Function GetCursorPos Lib "user32.dll" ( _
    ByRef lpPoint As POINTAPI) As Long
Private Declare PtrSafe Sub mouse_event Lib "user32.dll" ( _
    ByVal dwFlags As Long, _
    ByVal dx As Long, _
    ByVal dy As Long, _
    ByVal cButtons As Long, _
    ByVal dwExtraInfo As LongPtr)
Private Declare PtrSafe Function GetWindowRect Lib "user32.dll" ( _
    ByVal hwnd As LongPtr, _
    ByRef lpRect As RECT) As Long
Private Declare PtrSafe Function GetActiveWindow Lib "user32.dll" () As LongPtr

Private Type POINTAPI
    x As Long
    y As Long
End Type

Private Type RECT
    lngLeft As Long
    lngTop As Long
    lngRight As Long
    lngBottom As Long
End Type

Private Const MOUSEEVENT_LEFTDOWN = &H2
Private Const MOUSEEVENT_LEFTUP = &H4

Public Sub WakeUp()
    Dim udtPositon As POINTAPI, udtRect As RECT
    Dim lngptrHwnd As LongPtr
    Call GetCursorPos(udtPositon)
    lngptrHwnd = GetActiveWindow
    Call GetWindowRect(lngptrHwnd, udtRect)
    Call SetCursorPos(udtRect.lngLeft + 10, udtRect.lngTop + 10)
    Call mouse_event(MOUSEEVENT_LEFTDOWN, 0&, 0&, 0&, 0)
    Call mouse_event(MOUSEEVENT_LEFTUP, 0&, 0&, 0&, 0)
    Call SetCursorPos(udtPositon.x, udtPositon.y)
End Sub

Gruß
Nepumuk
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige