vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows · Desktop/Bildschirm/Display   |   VB-Versionen: VB.NET01.05.08
Monitor an- oder ausschalten

Mit Zuhilfenahme der API-Funktion SendMessage lässt sich der Monitor aus- und wieder einschalten.

Autor:   Heinz PrelleBewertung:  Views:  29.257 
www.visual-basic5.deSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit Zuhilfename der API-Funktion SendMessage lässt sich der Monitor in den StandBy-Modus schalten und auch wieder einschalten.

Erstellen Sie ein neues Windows-Forms Projekt und platzieren auf die Form einen Button, um den Monitor in den StandBy-Zustand zu versetzen. Mit Hilfe eines Timers wird der Monitor dann nach 10 Sekunden autom. wieder "reaktiviert".

Imports System.Runtime.InteropServices
Public Class Form1
 
  ' Timer-Objekt für das Einschalten des Monitors
  Dim WithEvents oTimer As Timer
  ''' <summary>
  ''' Klasse für Zugriff auf API-Funktion "SendMessage"
  ''' </summary>
  Public Class Monitor
    ''' <summary>
    ''' DLL-Deklaration der SendMessage-API
    ''' </summary>
    <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
 
    ''' <summary>
    ''' Benötigte Konstanten für die SendMessage API-Funktion
    ''' </summary>
    Private Enum Params As Int32
      SC_MONITORPOWER = &HF170    ' wParam
      WM_SYSCOMMAND = &H112       ' uMsg
      TURN_MONITOR_OFF = 2        ' Monitor ausschalten
      TURN_MONITOR_ON = -1        ' Monitor einschalten
    End Enum
 
    ''' <summary>
    ''' Schaltet den Monitor entweder ein- oder aus
    ''' </summary>
    ''' <param name="Index">off = ausschalten / on = einschalten</param>
    ''' <param name="Handle">Handle der aufrufenden Anwendung</param>
    Public Shared Sub SetMonitorState(ByVal Index As String, ByVal Handle As IntPtr)
      Select Case Index
        Case "off"
          ' Schaltet den Monitor aus
          SendMessage(Handle, Params.WM_SYSCOMMAND, Params.SC_MONITORPOWER, _
            Params.TURN_MONITOR_OFF)
        Case "on"
          ' Schaltet den Monitor wieder ein
          SendMessage(Handle, Params.WM_SYSCOMMAND, Params.SC_MONITORPOWER, _
            Params.TURN_MONITOR_ON)
      End Select
    End Sub
  End Class
  Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
 
    ' Monitor ausschalten und nach gewählter Zeit wieder einschalten
    Monitor.SetMonitorState("off", Me.Handle)
 
    ' Timer starten
    oTimer = New Timer
    oTimer.Interval = 10000  ' 10 Sek.
    oTimer.Start()
  End Sub
  Private Sub oTimer_Tick(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles oTimer.Tick
 
    ' Timer anhalten
    oTimer.Stop()
 
    ' Monitor wieder einschalten
    Monitor.SetMonitorState("on", Me.Handle)
  End Sub
End Class



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.