Кроссплатформенного полагаю способа нет
Вот пример для винды:
//--------------------------------------------------------------------------------
void ISysUtils::displayOn(bool aOn)
{
enum {
DISPLAY_ON = -1,
DISPLAY_OFF = 2
};
if (aOn)
{
PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, DISPLAY_ON);
// имитируем дёргание мышки для включения монитора в Windows 8
INPUT input;
SecureZeroMemory(&input, sizeof(input));
input.type = INPUT_MOUSE;
input.mi.dy = 1;
input.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &input, sizeof(input));
SleepEx(40, TRUE);
input.mi.dy = -1;
SendInput(1, &input, sizeof(input));
}
else
{
PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, DISPLAY_OFF);
}
}