Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0048: Monitor Ausschalten, Energiesparmodus

 von 

Beschreibung 

Der Monitor läßt sich genauso wie der Screen-Saver Tipp 47 mit der SendMessage-API in den Energiesparmodus schalten.

Nach einer Notiz von bLuEtooTh: Der Monitor arbeitet nun auch unter Windows 2k/XP ordnungsgemäß.

Update von GermanSE: Ein Fehler in den Konstantennamen wurde behoben.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

SendMessageA (SendMessage)

Download:

Download des Beispielprojektes [2,05 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Timersteuerelement "Timer1"
' Steuerelement: Schaltfläche "Command1"

Option Explicit

Private Declare Function SendMessage Lib "user32" Alias _
        "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As _
        Long, ByVal wParam As Long, lParam As Any) As Long

'Update am 6. April 2003: der Monitor sollte sich nun auch
'unter Windows 2k/XP abschalten
Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170&

Private Sub Command1_Click()
    Dim X As VbMsgBoxResult
    
    X = MsgBox("Monitor 10 Sec ausschalten ?", vbYesNo)
    If X = vbYes Then
        Timer1.Interval = 10000
        Timer1.Enabled = True
        SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal 2&
    End If
End Sub

Private Sub Form_Load()
    Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    Timer1.Enabled = False
    SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal -1&
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 23 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von franc am 30.07.2009 um 11:39

Gibt es eine Möglichkeit, den Monitor TROTZ Mausbewegungen oder Tastatureingaben ausgeschaltet zu lassen, ihn also nur durch den Befehl wieder anzuschalten (bzw. oder Neustart natürlich)?

Kommentar von javanse am 16.08.2007 um 10:33

jop.. haut hin so weit. Meine Frage wäre, ob ich da bei 2 monitorbetrieb auch nur einen Monitor ansprechen kann.

Hat da jemand eine Antwort?

Kommentar von Papa Echo am 09.08.2007 um 17:30

Wenn ich mit der Maus auf den Command1 Button klicke funktioniert der Code, wenn ich mit der Tastatur arbeite funktionert es nicht! Warum?

Kommentar von thomas am 24.05.2007 um 18:10

Hallo,

hat jemand ein Code, wie man wieder den Monitor aus dem Energiesparmodus "aufweckt" ?

Danke,

Gruss
Thomas

Kommentar von nobody am 27.03.2006 um 09:03

Eigentlich ganz gut! ;)
in dem download is nen mini-bug :

Timer1.Interval = 1000

also einfach ne 0 dran hängen....

Kommentar von tokken am 12.03.2006 um 23:26

‘ funktioniert bei mir unter VB6 und XP
' Monitor geht in den Stromsparmodus
‚ benötigt eine Form und ein CommandButton

Option Explicit

Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As _
Long, ByVal wParam As Long, lParam As Any) As Long

Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170&

Private Sub Command1_Click()
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, ByVal 1&

End Sub

Kommentar von kubitus am 13.08.2004 um 13:57

Klar geht das : am einfachsten geht´s, wenn du die Maus und Keyboard blockierst (Codebeispiele gibt´s hierfür genug).

Kommentar von langly am 13.08.2004 um 11:00

Unter Windows 2000 geht der Monitor bei Mausbewegung oder Tastendruck wieder an. Kann man das verhindern? Ich möchte, dass sich der Monitor nur durch einen Befehl (bzw. erneutes Starten der Applikation) wieder einschaltet.

Kommentar von ashutosh am 12.08.2004 um 13:58

Works

Kommentar von FF am 22.05.2004 um 21:12

Hi,

muss ich das erst mit VB kompilieren oder wie bekomme ich das unter Windows 2000 hin? Habe leider keine Ahnung davon.

THX, FF

Kommentar von GermanSE am 15.03.2004 um 17:48

Ja, ist es ;)

Das ist kein Script sondern ein Source. Um ihn öffnen zu können, brauchst du Visual Basic, da es in dieser Programmiersprache geschrieben wurde.

Kommentar von GermanSE am 15.03.2004 um 17:48

Ja, ist es ;)

Das ist kein Script sondern ein Source. Um ihn öffnen zu können, brauchst du Visual Basic, da es in dieser Programmiersprache geschrieben wurde.

Kommentar von Overkill am 15.03.2004 um 15:14

Hallo,
Wie kann man das Script starten? Mein Windoof (XP) kennt keine *.frm oder *.vbp Dateien. Umbenennen der Datei in *.vbs geht auch nicht. Kann mir mal einer sagen wie ...

(Ist das ne doofe Frage)?

Kommentar von II Darian II am 22.12.2003 um 13:06

jo, Funktioniert, ist cool, macht spass, kann man viel mist mit bauen und shockt auf lan partys *fg*

Kommentar von SnakePliske am 25.11.2003 um 20:25

Hat jemand zufällig ne idee, wie sich das ding per Software auch wieder einschalten läßt ? Maus- oder Tastaturereigniss simulieren funkt nich...

Kommentar von Daniel am 04.10.2003 um 16:29

hi
also ich benutze Windows XP und VB6

bei mir geht der Monitor kurz aus und gleich wieder an

kennt einer von euch das problem und kann vielleicht helfen?

Kommentar von JennyB am 12.08.2003 um 19:00

Hi,
nochmal ich - klappt jetzt doch - war mein Fehler.
cu
JennyB

Kommentar von JennyB am 12.08.2003 um 18:22

Hallo,

trotz aller Versuche - läuft es weder unter Win2000, noch unter WinXP (SP1)

cu
JennyB

Kommentar von Christian am 31.07.2003 um 20:37

Hallo,

leider läßt sich der Monitor wieder "anschalten". Wie kann ich das verhindern?!

Christian

Kommentar von GermanSE am 04.07.2003 um 18:46

nachdem man aus "If X = vbyes Then", "If X = vbOK Then" gemacht hat, funktioniert es koreckt ...

Kommentar von pks am 02.06.2003 um 14:19

ein kleiner Bug bei der Messagebox

X = MsgBox("Monitor 10 Sec ausschalten ?", vbOKCancel)
If X = vbOK Then

Kommentar von arthur am 13.05.2003 um 15:28

geht nicht unter xp. aber die frage mit den festplatten ist echt interessant.

weiss da einer was von???

platten abschalten?

Kommentar von Fabian Pastor am 03.10.2001 um 12:28

kann man auf diese Art auch die Festplatten in den Energiesparmodus versetzen?