ffi.cdef[[
int SendMessageA(void* hWnd, uint32_t Msg, int wParam, int lParam);
void* GetDesktopWindow();
int PostMessageA(void* hWnd, uint32_t Msg, int wParam, int lParam);
int SystemParametersInfoA(uint32_t uiAction, uint32_t uiParam, void* pvParam, uint32_t fWinIni);
]]
local WM_SYSCOMMAND = 0x0112
local SC_MONITORPOWER = 0xF170
local MONITOR_OFF = 2
local MONITOR_ON = -1
local SPI_SETSCREENSAVEACTIVE = 0x0011
local SPIF_SENDWININICHANGE = 0x02
function turnOffMonitors()
local hwnd = ffi.C.GetDesktopWindow()
ffi.C.SystemParametersInfoA(SPI_SETSCREENSAVEACTIVE, 0, nil, 0)
ffi.C.SendMessageA(hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF)
end
function turnOnMonitors()
local hwnd = ffi.C.GetDesktopWindow()
ffi.C.SendMessageA(hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_ON)
ffi.C.SystemParametersInfoA(SPI_SETSCREENSAVEACTIVE, 1, nil, SPIF_SENDWININICHANGE)
end