Mausschubser443 11 Posted February 5, 2011 Report Share Posted February 5, 2011 Hallo, ich haben ein Programm was Fehlermeldungen ausgibt, welche auf dem Monitor angezeigt werden. Bisher ist es so, das der Montior 24/7 an ist, und daher die Meldung zu lesen ist. Allerdings ist die lebens dauer der Monitore dann realtiv knapp. Daher möchte ich die Monitore in den Standby gehen lassen und wecken wenn ein Fehlerauftritt. Dies geht natürlich per Tastendruck oder Mausbewegung, aber nicht aus einem Programm. Nun ist die Frage, wie kann ich den Standby Modus vom Monitor beenden damit die Fehlermeldung sichtbar wird. z.B. ein Minitool starten welches ein Hardwareerreignis auslöst oder per DDI ? Über Tipps würde ich mich freuen! vielen Dank! Quote Link to comment
DLensing 14 Posted February 5, 2011 Report Share Posted February 5, 2011 Hallo Dustin781, kann dein Programm bei der Anzeige einer auch einen Programm starten?! Falls ja, müsstest du dir ja nur eine Batch oder halt ein ausführbares Programm erstellen, welches einen Tastendruck "simuliert". Am einfachsten wäre ein "Druck" auf die "Shift-Taste", damit keine Veränderungen am System vorgenommen werden, aber trotzdem der Monitor wieder "leuchtet". Liebe Grüße Daniel Quote Link to comment
Mausschubser443 11 Posted February 5, 2011 Author Report Share Posted February 5, 2011 Hi, natürlich kann das programm etwas aufrufen, das ist kein Problem. Allerdings, egal wie ich den Tastendruck auslöse, ob Batch, AutoIT oder sonst was, es bleibt ein virtueller Tastendruck welcher nicht reicht um den Monitor zu wecken. Ich denke man muss ein richtiges Hardwareereignis erzeugen. danke / gruß Quote Link to comment
Sigma 10 Posted February 5, 2011 Report Share Posted February 5, 2011 Hallo, ein AutoIt-Beispiel: Klick oder mit C++: Klick Daraus kannst Du bestimmt eine eigene Lösung ableiten. Grüße, Sigma Quote Link to comment
DLensing 14 Posted February 5, 2011 Report Share Posted February 5, 2011 Hallo Dustin781, habe dir gerade eine PN mit fertiger EXE-Datei zum Testen geschickt. @all: Wenn diese bei Ihm funktioniert, werde ich Sie hier auch gerne zur Verfügung stellen. Liebe Grüße Daniel Quote Link to comment
DLensing 14 Posted February 6, 2011 Report Share Posted February 6, 2011 Hallo zusammen, Ich habe das von mir erstellte Tool auf mehreren Systemen getestet. Es scheint erfolgreich zu funktionieren. http://www.dalecom.de/tools/MonitorWecker.exe Beim Start der EXE-Datei werden alle angeschlossenene Displays "aufgeweckt". Für das Tool wird Net.Framework 2.0 benötigt. Liebe Grüße Daniel 2 Quote Link to comment
carlito 10 Posted February 6, 2011 Report Share Posted February 6, 2011 Ich habe das von mir erstellte Tool auf mehreren Systemen getestet. Es scheint erfolgreich zu funktionieren. http://www.dalecom.de/tools/MonitorWecker.exe Beim Start der EXE-Datei werden alle angeschlossenene Displays "aufgeweckt". Für das Tool wird Net.Framework 2.0 benötigt. Magst du vielleicht auch den Source Code veröffentlichen? Quote Link to comment
DLensing 14 Posted February 6, 2011 Report Share Posted February 6, 2011 Hallo carlito, ich habe mich einfach an die beiden von Sigma zur Verfügung gestellten Codes gehalten und diese in VB interpretiert. Liebe Grüße Daniel Quote Link to comment
DLensing 14 Posted February 6, 2011 Report Share Posted February 6, 2011 Hallo zusammen, hier der Code in VB: [i][b]form1.vb:[/b][/i] Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Monitor.SetMonitorState("on", Me.Handle) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Monitor.SetMonitorState("off", Me.Handle) Me.Close() End Sub End Class [i][b]class1.vb:[/b][/i] Imports System.Runtime.InteropServices Public Class Monitor <DllImport("user32.dll", EntryPoint:="SendMessageA")> _ Private Shared Sub SendMessage( _ ByVal hWnd As IntPtr, _ ByVal uMsg As Int32, _ ByVal wParam As Int32, _ ByVal lParam As Int32) End Sub Private Enum Params As Int32 SC_MONITORPOWER = &HF170 WM_SYSCOMMAND = &H112 TURN_MONITOR_OFF = 2 TURN_MONITOR_ON = -1 End Enum Public Shared Sub SetMonitorState(ByVal Index As String, ByVal Handle As IntPtr) Select Case Index Case "off" SendMessage(Handle, Params.WM_SYSCOMMAND, Params.SC_MONITORPOWER, _ Params.TURN_MONITOR_OFF) Case "on" SendMessage(Handle, Params.WM_SYSCOMMAND, Params.SC_MONITORPOWER, _ Params.TURN_MONITOR_ON) End Select End Sub End Class Liebe Grüße Daniel 1 Quote Link to comment
zahni 554 Posted February 6, 2011 Report Share Posted February 6, 2011 In eine andere Richtung: Schaue Dir mal LCD Monitore mit LED-Backlight an. Die dürften länger als CCFL-Röhren halten. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.