Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0047: Bildschirmschoner aktivieren

 von 

Beschreibung 

Um den Screen-Saver einzuschalten bedarf es lediglich eines einfachen Aufrufes der SendMessage API:

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

SendMessageA (SendMessage)

Download:

Download des Beispielprojektes [1,78 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: 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

Const WM_SYSCOMMAND = &H112
Const SC_SCREENSAVE = &HF140


Private Sub Command1_Click()
  SendMessage Me.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal 0&
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 14 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 amanda hüsler am 15.08.2011 um 08:47

hallo

ich möchte eine powerpoint präsentation an einem touchscreen ablaufen lassen. besucher können sich dann durch duie unterschiedlichen themen drücken. zudem sollte es nach einer gewissen zeit (falls niemand am touchscreen ist) zurück zum screensaver.
nun verstehe ich nicht wirklich viel von programmieren.
ihr habt da zwar eine codes hingeschrieben, aber wo soll ich dieser code, der den bildschirm aktiviert, hinschreiben?
habe windows xp und ppt 2007

Kommentar von Frank am 28.10.2006 um 01:16

Wenn ich nicht möchte, daß der Bildschirmschoner während der Ausführung meines Programms gestartet wird, nutze ich folgenden einfachen Code.

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Sub Form_Load()
SaverOnOff False 'Bildschirmschoner deaktivieren
End Sub

Private Sub Form_Unload(Cancel As Integer)
SaverOnOff True 'Bildschirmschoner aktivieren
End Sub

Sub SaverOnOff(Status As Boolean)
Call SystemParametersInfo(&H11, Status, 0&, 0&)
End Sub

Die Einstellungen in der Systemsteuerung werden dadurch nicht verändert, das heißt: nach Programmende ist der Bildschirmschoner nur aktiv, wenn das in der Systemsteuerung so festgelegt ist.

Kommentar von Dr. Enno Barlag am 08.06.2006 um 12:25

Hallo, ich finde nur Tips den Bildschirmschoner (unter Win XP) ein - zu schalten.
Ich möchte den Schoner -ausschalten-!
Sobalt eine Benachrichtigung (zB. von einer Email oder Chat) eingeht oder sich ein sonstiges Fenster öffnet, soll sich der Schoner - ohne aktive Maßnahmen wie eine Mausaktivität- selber ausschalten und die Meldung somit sichtbar sein. Eventuell könnte auch jede Bildschirmänderung der Auslöser sein - mann müßte dann nur die Uhr entfernen.

Kommentar von Ralf-Peter Hillerkus am 04.11.2005 um 11:06

Gibt es einen sicheren Weg, den Bildschirmschoner während
des eigenen Programmlauf auszuschalten ? Bei einigen niedirgen WIN-Version (bis Me) reicht i.d.R. das Senden eines Zeichens über Sendkeys. Das funtionirt aber bei NT und XP nicht.

Kommentar von Cyb10101 am 09.03.2005 um 19:53

So wie dieser Code aufgebaut ist funktioniert es...
wieso man umbedingt ein modul braucht weiß ich leider nicht...
...aber vielleicht jemand anderes?


'FORM START --------------------------------------------------------------
Private Sub Form_Load()
StartScreensaver
End
End Sub
'FORM END --------------------------------------------------------------

'MODUL START --------------------------------------------------------------
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_SCREENSAVE = &HF140&

Sub StartScreensaver()
SendMessage Form1.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal 0&
End Sub
'MODUL END --------------------------------------------------------------

Kommentar von R. Petry am 22.02.2005 um 12:58

Das Programm funktioniert auch mit VB6 unter WinNT4,
wenn
'SendMessage Me.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal 2&'
und
Const WM_SYSCOMMAND = &H112&
Const SC_SCREENSAVE = &HF140&
eingegeben werden.

Abschalten kann man den Screen-Saver mit
'SendMessage Me.hwnd, WM_SYSCOMMAND, SC_SCREENSAVE, ByVal -1&'.
Der Bildschirmschoner muss jedoch vorher in den Desktop-Einstellungen definiert werden.

Kommentar von G. Müller am 22.12.2004 um 08:49

Der o.g. Code zum Einschalten des Bildschirmschoners per Programm war zumindestens "die halbe Miete" - dafür schönen Dank.
Wie läßt sich der Bildschirmschoner jedoch per Programm abschalten (gemeint ist: zeitweilig unterbrechen wie z.B. bei einer Tastatureingabe oder Mausbewegung)? Eigene Versuche z.B. durch Versenden einer WM_MOUSEMOVE oder WM_KEYDOWN-message an alle offenen Fenster (hWnd= &HFFFF ?) haben leider keinen Erfolg gebracht.
Kann hier jemand helfen?

Kommentar von Markus am 18.03.2003 um 13:51

Wenn die Constanten richtig geschrieben wurden geht es auch unter Win2000
Const WM_SYSCOMMAND = &H112&
Const SC_SCREENSAVE = &HF140&

Kommentar von A6441 am 13.03.2002 um 22:56

Wenn man anstelle 'SendMessage' 'DefWindowProc' benutzt, dann kann man den Code in einem beliebigen Modul unterbringen - nicht nur in einem Formular !

Kommentar von Andy am 25.02.2002 um 20:20

Funktioniert einwandfrei, aber weiß jemand, wie man den Bildschirmschoner beendet durch einen VB Code?

Kommentar von Mario am 23.02.2002 um 18:26

Wenn die Constanten richtig geschrieben wurden geht es auch unter XP:
Const WM_SYSCOMMAND = &H112&
Const SC_SCREENSAVE = &HF140&
Man beachte das "&" als Long Definition am Ende der Zahl.

Kommentar von Blame am 27.12.2001 um 21:23

WinXP geht leider auch bei mir nicht. :(

Kommentar von NickiR am 10.12.2001 um 13:24

Ich habe der Tip unter Win98 erfolgreich eingebunden. Jetzt habe ich die WinXP Final Testversion und da funzt er nicht mehr.

Kommentar von Hakan am 30.05.2001 um 21:28

Hallo versuche diesen Script in Powerpoint 97 einzubinden, ohne Erfolg. Muss irgendwie schaffen den Bildschirmschoner unter NT und Win98 zu aktivieren kann mir da jemand weiterhelfen