Питание компа

Тема в разделе "WASM.WIN32", создана пользователем SammIk, 9 янв 2005.

  1. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Доброго всем.

    Вот тут стало интересно, а как можно комп в состояние

    энерго сбережения ввести?

    Вот тут надыбал на винте прогу, а она говорит типа Sleep

    тебе не доступен. А я помню была у меня другая тулза

    которая по нажатию Pause, таки вводила комп в ступор.

    Вот собсно и все.

    Спасибо за внимание
     
  2. spidea

    spidea New Member

    Публикаций:
    0
    Регистрация:
    22 дек 2004
    Сообщения:
    10
    Используя сообщение WM_SYSCOMMAND можно перевести монитор в режим экономии питания wParam=SC_MONITORPOWER или запустить screensaver SC_SCREENSAVE.
     
  3. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Нет, веня не правильно поняли.

    Нужно перевисти комп в спящие состояние.

    А монитор это монитор.

    Нужно чтоб все "отключилось".

    Типа как на буках когда крышку прикрываешь.
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    SammIk



    Так просто в Винде у тебя какие режиме.

    Простой энергосберегающий режим - это

    спит дисплей и выключен диск.

    Теперь еще добавили hybernate, но с ним

    куча проблем.

    2) Никогда не слышал, что крышкой бук усыпляют.

    Там система сама гасит дисплей и останавливает диск,

    обычно через 5-10 минут по умолчанию.

    Ты наверное говоришь про hybernate, но

    это все хорошо, пока у тебя там все проги

    от Микрософта и железки хорошие.
     
  5. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    IMHO тут проблема с терминологией - sleep - это по русски "ждущий режим", а hibernate - "спящий режим".

    Что бы последний мог работать, его нужно активировать в панели управления -> электропитание.
     
  6. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Ясно, а если этого в питание нет?

    То следовательно комп не поддерживает?

    ---

    2valterg

    Гасятся, там есть кнопочка каторая при закрытии крышки

    нажимается. А система делает предписаные действия.

    ---

    Жаль, что компутер мой не поддерживает этого(

    А всетаки как это сделать? И слип и хибернат?
     
  7. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Ясно, а если этого в питание нет?

    То следовательно комп не поддерживает?

    ---

    2valterg

    Гасятся, там есть кнопочка каторая при закрытии крышки

    нажимается. А система делает предписаные действия.

    ---

    Жаль, что компутер мой не поддерживает этого(

    А всетаки как это сделать? И слип и хибернат?
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    SammIk >




    Возможно, нужно установить драйвер (и/или включить в BIOS) ACPI BIOS
     
  9. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    SammIk





    Посмотри SetSystemPowerState. Мне ее проверить не удалось - винда глючит и в слип и хибернат не хочет уходить. Точнее, уходит всегда в слип, но оттуда не возвращается. Т.к. эта функция делает то же самое, есть мнение, что она и отвечает за суспенд. Но для ее использования нужна привилегия "SeShutDownPrivilege".



    Есть у меня прога для вырубания компа по-всякому, но сорцы не оформлены. Оформлю - могу дать.
     
  10. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    n0p

    Был бы не проч глянуть
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105




    Не комп, а ОС. Во-первых, в БИОС-е должно

    быть включено что-то, типа расширенное управление

    питанием. После этого появятся закладки.

    Но hybernate может все равно не включится :

    надо чтобы все железки и драйвера его поддерживали.

    У меня на ХП hybernate работал до тех пор,

    пока не подрубил TV-tuner. И вообще, какой у тебя

    комп : для hybernate нужен корпус под П-4,

    на старых этого просто не было.

    На буке что-то обязательно должно быть -

    короче уточни задачу-то.
     
  12. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Что бы заработало hibernate нужно:

    - включить в БИОСе поддержку ACPI

    - в виндосе (начиная с 98) заменить драйвер "Plug and Pray BIOS" на

    "Интерфейс автоматического управления конфигурацией и питанием ACPI BIOS"

    В 2K и XP названия там немного другие, но микрософт так делать не рекомендует - при включении ACPI в BIOS переназначаются прерывания и система может просто не загрузиться.
     
  13. a111

    a111 New Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    11
    Адрес:
    Tomsk
    Ну если комп не старый, то должен поддерживать.

    Раньше юзал этот спящий режим, прикольно было выключаться не закрывая фильмы, музыку, браузеры, а потом продолжать.

    Но как поставил сеть, то после спячки теряется связь, поэтому последнее время экономлю 512 мбайт.
     
  14. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    hibernate использовал даже на 486 - к источнику питания отношения не имеет, однако нужно "поклацать" в настройках питания, чтобы появилась возможность использования спящего режима, сейчас точно не помню детали, важно нажимать "Применить", так как нужных опций сначала вообще не было видно (поэтому я их сразу тогда и не нашел ;), потом его разрешить. на системном диске должно быть достаточно места для создания файла hibernate.sys=объем памяти. но это - не ждущий режим - для него материнка должна поддерживать расширенное управление питанием, и оно должно быть разрешено в биосе. у меня старый корпус, ИП сначала был АТ, а когда он сдох, я поставил АТХ и включал в биосе все функции.

    помотрю дома настройки биоса - завтра напишу (на работе у меня мать подпаленая - АТХ тумблером включаю ;)
     
  15. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    Ну вот, причесал сырцы, так что по просьбам трудящихся выкладываю.



    Писано на фасме с использованием двух макросов: library и import. Коментированы сырцы обильно, должно быть понятно.



    Прога консольная, при запуске без параметров выводит справку по использованию.

    [​IMG] 95215914__power.RAR
     
  16. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    n0p > i'll try to compress it stronger :)



    Вместо
    Код (Text):
    1. and     ecx,0FFFFh
    использовать можно
    Код (Text):
    1. movzx ecx, cx
    меньше в 2 раза :).

    Потом
    Код (Text):
    1.     shl     ecx,2                               ; ordinal * 4
    2.     add     edx,ecx                             ; get address of api RVA    
    поменьть можно на
    Код (Text):
    1. lea  edx, [edx+ecx*4]




    Тут IMHO будет 255 в cl.
    Код (Text):
    1.     mov     ax,0FF2Dh                           ; ah = 15, al = '-'
    2.     movzx   ecx,ah                              ; cl = 15, other bytes = 0    


    Потом можно cx использовать здесь вместо ecx:
    Код (Text):
    1.     mov     ecx,'sh'                            ; possible suspend params


    Ещё можно же в стэке память выделять под TOKEN_PRIVILEGES



    Не знаю правда, будет ли код после всего этого работать - запускать опасно, вдруг сработает и выключит комп, и тогда этот текст пропадёт :).



    Кстити, где-то видел, что хэши от имён API вычисляет fasm прямо в момент компиляции.
     
  17. n0p

    n0p 10010000b

    Публикаций:
    0
    Регистрация:
    7 май 2003
    Сообщения:
    256
    Адрес:
    Новосиbeerск
    S_T_A_S_



    Да, упустил. Не то коментс не поправил, не то код :)



    В стеке структуру положить не получилось - AdjustTokenPrivilege не смогла ее обработать и вернула ошибку :dntknw:
     
  18. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Всем спасибо, ноп'у за сырец.

    Седня гляну,че как.

    --

    А комп у меня старый, многога(бл*) не потдерживает походу

    и расширеного управления питанием)))

    Просто была интересна тема.

    Вообщем спасиба.
     
  19. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    привет! пардон за задержку - обещался в биус глянуть ;)



    вобщем, ACPI function - Enabled, Doze Mode - Disabled, Suspend Mode - Disabled. на старой машине у меня были возможности энергосбережения, но если включать в биосе - то ложилась сеть и время в винде останавливалось (потом, правда, подхватывалось, но все равно - неприятно). а с винды - никак - нужен драйвер, а где его было взять для мамки сокет 3 '94 года выпуска под вин 2000? а в новой машине можно и кнопку включения компа запрограммировать так как нужно (на выключение, ждущий или спящий режим) - наверное, это даже удобней. было дело был К6 - там были дрова под мать и кнопка suspend - нажимал - и вроде дремала нормально (деталей, правда, не помню)...