Интересуют следующие вопросы 1)Как узнать отключен дисплей или нет (Свойства\Экран\Питание\Схемы управления питанием)? Думал может через SystemParametersInfo, но нет. 2)Как отловить момент запуска системы? Есть прога, запускается автоматически при включении системы. Нужно чтобы после запуска прога выполняла определённые действия. Можно выполнять при получении сообщения WM_CREATE (т.е. при запуске проги вместе с системой), но тогда при ручном выключении/запуске действие так же будет выполняться, а это не нужно. Использование установки флага при первом запуске так же не подходит, т. к. если выключить автозапуск то при первом ручном запуске прога будет думать, что система только запустилась (т.к. флаг не установлен). Может есть какое-нибудь сообщение, посылаемое при загрузке системой, что-то похожее на WM_QUERYENDSESSION(только наоборот) или ещё что-нибудь?
Пропиши в автозагрузку параметр командной строки типа "prog.exe -systemrun", по которому можно определить, кто запустил прогу: система или пользователь.
Код (Text): SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2); теперь точно отключен ))
vg Так FreeManCPM и написал, как узнать, отключен он или нет. Другое дело, что побочный эффект такого способа узнать - отключение дисплея.
IceStudent Как определить? Пробовал через Код (Text): invoke GetCurrentProcess mov ecx,eax invoke OpenProcessToken,ecx,TOKEN_QUERY,addr hToken or eax,eax jz error invoke GetTokenInformation,hToken,TokenUser,addr buf,1024,addr tu_size or eax,eax jz error invoke LookupAccountSid,0,buf.User.Sid,addr sch_accountname,addr tu_size,addr sch_domainname,addr tu_size,addr sid_name_use error: invoke CloseHandle,hToken invoke MessageBox,hwnd,addr sch_accountname,0,MB_OK Но при -systemrun все равно выдает имя пользователя.
Это понятно. Насколько я понял, таким образом(с -systemrun) процесс программы получает имя пользователя - SYSTEM, по которому можно определить, кто запустил программу. Если я не прав, тогда, что имел ввиду IceStudent написав
vg При этом в командной строке будет параметр -systemrun (ну или "lasjkdfjasl" - что угодно). Если это в командной строке есть, значит программа запущена с этим параметром.
vg Он имел в виду, что Вы по этому параметру, переданному В ПРОГРАММУ (к запуску от имени системы параметры не имеют отношения) сможете определить, кто запустил прогу: система при автозапуске или пользователь двойным щелчком (при двойном щелчке параметры передаваться не будут). Разумеется, что в обоих случаях процесс будет запущен от имени пользователя.