savostin
@savostin
Еще один программист

Есть ли кроссплатформенный (десктопы) способ предотвратить засыпание компьютера?

Знает ли кто как средствами Qt или просто кроссплатформено (Mac, *nix, Win) заставить компьютер не засыпать?
Нашел только на WinAPI.
  • Вопрос задан
  • 310 просмотров
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Вилку в клавиатуру вставить - будет посылать постоянно сигнал об активности.
Ответ написан
EXL
@EXL
Энтузиаст
Может как-то можно симулировать работу пользователя за компьютером, к примеру, после небольшого промежутка времени передвигать курсор или симулировать нажатие бесполезной в рамке программы клавиши?

Отследить бездействие можно вот так, к примеру: Как в QT отследить бездействие пользователя?
Ответ написан
Obukhoff
@Obukhoff
Программист С++
Кроссплатформенного полагаю способа нет
Вот пример для винды:

//--------------------------------------------------------------------------------
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);
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы