Функция выключения монитора на VBA
Автор Administrator   
19.11.2020 г.

Нашел как-то в своих архивах.

Взял здесь VBA – Turn Off The Monitor
Автор - Daniel Pineault
Функция выключает все мониторы. Работает 32-х и 64-х разрядных версиях Офиса

 

#If Win64 Then   
'64-bit declaration
Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As LongPtr, _
ByVal wMsg As Long, _
ByVal wParam As LongPtr, _
lParam
As Any) As LongPtr
#
Else
'32-bit declaration

Private
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Any) As Long
#
End If
'---------------------------------------------------------------------------------------
' Procedure : MonitorPower
' Author : Daniel Pineault, CARDA Consultants Inc.
' Website : http://www.cardaconsultants.com
' Purpose : Turn On/Off the monitor
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
' (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Req'd Refs: None required
' Req'd : SendMessage API Declaration

'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' bMontiorOn: True -> Turn monitor on
' False -> Turn monitor off
'
' Usage:
' ~~~~~~
' Call MonitorPower
'
' Revision History:
' Rev Date(yyyy/mm/dd) Description
' **************************************************************************************
' 1 2018-12-14 Initial Release (Forum help)
'---------------------------------------------------------------------------------------
Public
Function MonitorPower(Optional bMontiorOn As Boolean = False)
'REF: https://docs.microsoft.com/en-us/windows/desktop/menurc/wm-syscommand
Const WM_SYSCOMMAND = &H112
Const SC_MONITORPOWER = &HF170&
Const MONITOR_ON = -1&
Const MONITOR_OFF = 2&

On Error GoTo Error_Handler

If bMontiorOn = False Then
SendMessage Application.hWndAccessApp, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF
Else
SendMessage Application.hWndAccessApp, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_
ON
End If

Error_Handler_Exit:
On Error Resume Next
Exit Function

Error_Handler:
MsgBox
"The following error has occurred" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: MonitorPower" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0,
"", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical,
"An Error has Occurred!"
Resume Error_Handler_Exit
End
Function


Также обратите внимание, что экран снова включится, когда пользователь перемещает мышь или нажимает на клавишу клавиатуры, что делает MonitorPower(True) несколько ненужным, но он все равно может быть полезен, если используется через код. Функция не активирует заставку и не блокирует компьютер. Единственное, что она делает, - это выключает экран, поэтому экран становится черным до тех пор, пока ПК не получит какую-либо форму ввода от пользователя, точно так же, как это происходит при настройках энергосбережения ПК.

 


Просмотров: 1470

  Ваш коментарий будет первым

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code