Den Bildschirm irgendwie einschalten (nach Standby)

15/10/2009 - 00:27 von Andreas Mahub | Report spam
Hi Leute,

scheinbar gibt es ein Problem bei XP (Vista weiß ich noch nicht) mit dem
Bildschirm nach Standby NACH WakeOnLan.

Also folgendes:
Auf mehreren Rechnern làuft ein Programm welches im Vollbild-Modus zum
Beispiel einen Countdown anzeigt. Diese Rechner gehen auf Befehl irgendwann
in den StandBy. Von meinem Hauptrechner aus aktiviere ich per WakeOnLan mit
meinem Programm wieder alle Rechner.

Problem ist nur, der Bildschirm bleibt dunkel, obwohl KEIN Bildschirmschoner
aktiv ist und bei den Energie-Einstellungen das abschalten des Monitors auf
NIE steht.

Erst wenn ich die Maus bewege oder eine Taste drücke geht der Bildschirm
wieder an und bleibt auch an.

Kennt einer von euch dieses Problem?
Was mir jetzt noch einfallen würde, wàre, das mein Programm (welches den
Countdown anzeigt) vielleicht direkt Windows vorgauckelt, dass die Maus
bewegt wurde, oder eine Taste gedrückt wurde. Ginge das?! Und wenn ja wie?!

Gruß
Andy
 

Lesen sie die antworten

#1 Thorsten Doerfler
15/10/2009 - 13:53 | Warnen spam
Andreas Mahub schrieb:
Was mir jetzt noch einfallen würde, wàre, das mein Programm (welches den
Countdown anzeigt) vielleicht direkt Windows vorgauckelt, dass die Maus
bewegt wurde, oder eine Taste gedrückt wurde. Ginge das?! Und wenn ja wie?!



Du kannst versuchen, ob Du den Monitor mit WM_SYSCOMMAND und
SC_MONITORPOWER aus seinem Dornröschenschlaf erwachen lassen kannst:

Public Class DisplayDevice
Public Shared Sub PowerOff()
NativeMethods.SendMessage(NativeMethods.GetForegroundWindow(), _
NativeMethods.WM_SYSCOMMAND, _
NativeMethods.SC_MONITORPOWER, _
CInt(NativeMethods.MonitorPowerState.ShutOff))
End Sub

Public Shared Sub PowerOn()
NativeMethods.SendMessage(NativeMethods.GetForegroundWindow(), _
NativeMethods.WM_SYSCOMMAND, _
NativeMethods.SC_MONITORPOWER, _
CInt(NativeMethods.MonitorPowerState.PowerOn))
End Sub

Private Class NativeMethods
Public Const WM_SYSCOMMAND As Integer = &H112

Public Const SC_SCREENSAVE As Integer = &HF140
Public Const SC_MONITORPOWER As Integer = &HF170

Public Enum MonitorPowerState As Integer
PowerOn = -1
LowPower = 1
ShutOff = 2
End Enum

<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Public Shared Function SendMessage(ByVal hwnd As IntPtr, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
ByVal lParam As Integer _
) As Integer
End Function

<DllImport("user32.dll")> _
Public Shared Function GetForegroundWindow() As IntPtr
End Function
End Class
End Class

' Anwendung:
DisplayDevice.PowerOn()

Ich hoffe es sind nicht zuviele LOC für Dich. ;-)

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen