vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
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:     [ Jetzt bewerten ]Views:  22.973 
www.visual-basic5.deSystem:  WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 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

Dieser Tipp wurde bereits 22.973 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (2 Beiträge)

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel