Отключен дисплей или нет

Тема в разделе "WASM.BEGINNERS", создана пользователем vg, 16 сен 2007.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Интересуют следующие вопросы

    1)Как узнать отключен дисплей или нет (Свойства\Экран\Питание\Схемы управления питанием)?
    Думал может через SystemParametersInfo, но нет.

    2)Как отловить момент запуска системы?
    Есть прога, запускается автоматически при включении системы. Нужно чтобы после запуска прога выполняла определённые действия. Можно выполнять при получении сообщения WM_CREATE (т.е. при запуске проги вместе с системой), но тогда при ручном выключении/запуске действие так же будет выполняться, а это не нужно. Использование установки флага при первом запуске так же не подходит, т. к. если выключить автозапуск то при первом ручном запуске прога будет думать, что система только запустилась (т.к. флаг не установлен). Может есть какое-нибудь сообщение, посылаемое при загрузке системой, что-то похожее на WM_QUERYENDSESSION(только наоборот) или ещё что-нибудь?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Пропиши в автозагрузку параметр командной строки типа "prog.exe -systemrun", по которому можно определить, кто запустил прогу: система или пользователь.
     
  3. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Код (Text):
    1. SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2);
    теперь точно отключен :)))
     
  4. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    FreeManCPM
    Не понял. Так я могу отключить дисплей, а мне нужно узнать отключен он или нет.
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    vg
    Так FreeManCPM и написал, как узнать, отключен он или нет. Другое дело, что побочный эффект такого способа узнать - отключение дисплея. :)
     
  6. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.742
    Не факт. На некоторых компах это не работает ....

    по непонятным причинам.
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    FreeManCPM
    KeBugCheck(MANUALLY_INITIATED_CRASH);

    а теперь уже можно и не проверять..=)))
     
  8. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Нет, такой вариант точно не катит.

    Great

    Это шутка?
     
  9. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    IceStudent
    Как определить?

    Пробовал через
    Код (Text):
    1.      invoke GetCurrentProcess
    2.      mov    ecx,eax
    3.      invoke OpenProcessToken,ecx,TOKEN_QUERY,addr hToken
    4.      or     eax,eax
    5.      jz     error
    6.      invoke GetTokenInformation,hToken,TokenUser,addr buf,1024,addr tu_size
    7.      or     eax,eax
    8.      jz     error
    9.      invoke LookupAccountSid,0,buf.User.Sid,addr sch_accountname,addr tu_size,addr sch_domainname,addr tu_size,addr sid_name_use
    10. error:
    11.      invoke CloseHandle,hToken
    12.      invoke MessageBox,hwnd,addr sch_accountname,0,MB_OK
    Но при -systemrun все равно выдает имя пользователя.
     
  10. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
    жжешь

    если с -systemrun, то программа запущена при старте системы
     
  11. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Это понятно.
    Насколько я понял, таким образом(с -systemrun) процесс программы получает имя пользователя - SYSTEM, по которому можно определить, кто запустил программу.
    Если я не прав, тогда, что имел ввиду IceStudent написав
     
  12. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    vg
    При этом в командной строке будет параметр -systemrun (ну или "lasjkdfjasl" - что угодно). Если это в командной строке есть, значит программа запущена с этим параметром.
     
  13. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    vg
    Он имел в виду, что Вы по этому параметру, переданному В ПРОГРАММУ (к запуску от имени системы параметры не имеют отношения) сможете определить, кто запустил прогу: система при автозапуске или пользователь двойным щелчком (при двойном щелчке параметры передаваться не будут). Разумеется, что в обоих случаях процесс будет запущен от имени пользователя.
     
  14. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    А как этот параметр считать с командной строки(masm32)?
     
  15. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    GetCommandLine