Forum: PC-Programmierung VB 2008 - Bildschirmschoner bzw. Energiesparmodus austricksen


von Hans (Gast)


Lesenswert?

Hallo Leute,

ich schreibe gerade ein Programm, dass mir einen Status anzeigt.
Dieser Status soll solange auf dem Monitor angezeigt werden, wie das 
Programm läuft. Jetzt habe ich das Problem, dass mir der 
Bildschirmschoner bzw. der Energiesparmodus dazwischen funkt.

Ich möchte das System nicht verändern. Gibt es eine Möglichkeit bzw. 
einen Trick (wie z.B. eine Mausbewegung alle 30 Sekunden zu simulieren), 
damit der Bildschirmschoner bzw. der Energiesparmodus nicht anspricht?

Ich habe es schon mit folgendem Code probiert:

Private Declare Function SetCursorPos Lib "user32" (ByVal X As Integer, 
ByVal Y As Integer) As Integer

Private Sub Timer_Mouse_Tick(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Timer_Mouse.Tick

        Dim x As Integer
        Dim y As Integer
        x = MousePosition.X + 50
        y = MousePosition.Y + 50
        SetCursorPos(x, y)
        SetCursorPos(x-50, y-50)

End Sub

Der Mauscursor bewegt sich zwar aber leider geht der Bildschirmschoner 
trotzdem an.

Gibt es eine ander Möglichkeit?

Danke für Eure Hilfe

Hans

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Windows sendet WM_SYSCOMMAND mit SC_SCREENSAVE in wParam an die aktive 
Anwendung. Wird die Nachricht abgefangen und 0 zurückgegeben, wird der 
Bildschirmschoner nicht aktiviert.

Das funktioniert ab Vista nicht mehr, wenn der Bildschirmschoner nach 
dem Abschalten ein Passwort erwartet.

von Hans (Gast)


Lesenswert?

Danke, damit umgehe ich aber nur den Bildschirmschoner nicht aber den 
Energiesparmodus der mir den Monitore ausschaltet!

Gibt es eine ander Möglichkeit?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hmm. Das wird vermutlich irgendwo in den Tiefen der Powermanagement-API 
zu finden sein; such mal in der MSDN in der Nähe von WM_POWERBROADCAST. 
Da habe ich zwar auf Anhieb nichts über Monitore finden können, aber die 
Ecke sollte im groben und ganzen die richtige sein.

Viel Glück.

von Hans (Gast)


Lesenswert?

Ok habe ne Lösung gefunde:

Einfach in Regelmäßigen abständen eine Taste in VB-Drücken

z.B.: SendKeys.Send("{SCROLLLOCK}")

Schon geht kein Screensaver etc. mehr an!

Danke für Eure Vorschläge

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.