Mausschubser443 11 Geschrieben 5. Februar 2011 Melden Teilen Geschrieben 5. Februar 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! Zitieren Link zu diesem Kommentar
DLensing 14 Geschrieben 5. Februar 2011 Melden Teilen Geschrieben 5. Februar 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 Zitieren Link zu diesem Kommentar
Mausschubser443 11 Geschrieben 5. Februar 2011 Autor Melden Teilen Geschrieben 5. Februar 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ß Zitieren Link zu diesem Kommentar
Sigma 10 Geschrieben 5. Februar 2011 Melden Teilen Geschrieben 5. Februar 2011 Hallo, ein AutoIt-Beispiel: Klick oder mit C++: Klick Daraus kannst Du bestimmt eine eigene Lösung ableiten. Grüße, Sigma Zitieren Link zu diesem Kommentar
DLensing 14 Geschrieben 5. Februar 2011 Melden Teilen Geschrieben 5. Februar 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 Zitieren Link zu diesem Kommentar
DLensing 14 Geschrieben 6. Februar 2011 Melden Teilen Geschrieben 6. Februar 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 Zitieren Link zu diesem Kommentar
carlito 10 Geschrieben 6. Februar 2011 Melden Teilen Geschrieben 6. Februar 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? Zitieren Link zu diesem Kommentar
DLensing 14 Geschrieben 6. Februar 2011 Melden Teilen Geschrieben 6. Februar 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 Zitieren Link zu diesem Kommentar
DLensing 14 Geschrieben 6. Februar 2011 Melden Teilen Geschrieben 6. Februar 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 Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 6. Februar 2011 Melden Teilen Geschrieben 6. Februar 2011 In eine andere Richtung: Schaue Dir mal LCD Monitore mit LED-Backlight an. Die dürften länger als CCFL-Röhren halten. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.