Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Включить програмно монитор после отключения


Автор: Vava72 19.4.2007, 15:42
Привет всем!!!

Возникла следующая проблема:
Если пишу так:
Код

  SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
  Sleep(3000);
  SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);

то монитор гаснет, а потом просыпается через 3 сек. 
А мне надо его разбудить, после того как он уснул по таймауту энергосбережения в винде. А он от:
Код

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1); 

не просыпается. 
Может подскажите, как по другому разбудить?

Валера

Автор: Syberex 19.4.2007, 16:36
SendMessage(Application->Handle,WM_SYSCOMMAND,SC_MONITORPOWER,1);  // отключить
Последний параметр 0 - включить. 

Автор: Vava72 20.4.2007, 09:51
Цитата(Syberex @  19.4.2007,  16:36 Найти цитируемый пост)

SendMessage(Application->Handle,WM_SYSCOMMAND,SC_MONITORPOWER,1);  // отключить
Последний параметр 0 - включить. 

Вообще-то 0, как и -1 - не документированы

SC_MONITORPOWER
Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer. 
The lParam parameter can have the following values:
1 - the display is going to low power
2 - the display is being shut off

Я пробовал и 0 тоже, с ним не хочет просыпаться даже если я сам "усыплю монитор"
А по поводу Application->Handle или HWND_BROADCAST - разница в том, что в твоем случае сообщение идет в свое приложение, а в моем - всем окнам верхнего уровня.
  Поскольку у меня консольное приложение, да и пишу я просто маленькую прогу, кот. тупо разбудит монитор, то у меня весь код:
Код

int main(int argc, char* argv[]) {
  printf("Hello World! Ver 1.002 \n"); -- Просто для отладки
  DefWindowProc(GetDesktopWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 0);
 return 0;
}

и Application у меня нет.
А в данном примере я вообще заменил SendMessage, на DefWindowProc, что бы сообщение сразу обрабатывалось, а не проходило через очередь сообщений.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)