Нашел как-то в своих архивах.
Взял здесь 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) несколько ненужным, но он все равно может быть полезен, если используется через код. Функция не активирует заставку и не блокирует компьютер. Единственное, что она делает, - это выключает экран, поэтому экран становится черным до тех пор, пока ПК не получит какую-либо форму ввода от пользователя, точно так же, как это происходит при настройках энергосбережения ПК.
Просмотров: 1709
Ваш коментарий будет первым | | |