Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отключить питание.


Дмитрий С ©   (2010-12-27 17:25:00) 

Можно ли как нибудь в winXP-win7 программно выключить блок питания, как будто я нажал кнопку питания и подержал ее 4 сек (обычно так)?
Если да, то как?
Желательно чтобы прав администратора хватало.

Вопрос собственно не для применения, а для общего развития:)


KilkennyCat   (2010-12-30 08:47:00) [1]


> Германн ©   (30.12.10 02:10) [19]
> Так ещё раз спрошу
> зачем тебе это нужно?

лечение от вирусов, перезапуск системы.
Мне, например, такое бы пригодилось для перезапуска подвисшего бортового компа (просто резет там не прокатит, там много внешней хрени должно еще рестартануть, и на давнный момент сброс происходит только выключением зажигания, что не есть удобно).

проблема идеально решается внешней релюшкой. есть небольшой недостаток: распространять эту прогу придется с релюшкой.


Германн   (2010-12-30 02:10:00) [2]


> Дмитрий С ©   (29.12.10 18:54) [16]
>
> Суть не в том, чтобы 4 сек подождать, а чтобы эффект был
> выключения питания.
>

А зачем? Навредить? Ты вроде не вредитель.
Естественно такое выключение возможно, иначе как бы "продвинутые пользователи" смогли бы выключить комп в случае "жесткого" подвисания ОС. Но реализовано оно в БИОС. Так ещё раз спрошу зачем тебе это нужно?


Игорь Шевченко   (2010-12-29 21:33:00) [3]


> Видимо это както связано с ACPI


Да. Есть такой APM BIOS, по нему есть TFM. Не знаю, как из защищенного режима (тоже интерфейс есть), но из реального работает. Заодно в реальный режим переключишься :)


Smile   (2010-12-29 20:11:00) [4]

А я согласен с > Дмитрий С ©
чтобы эффект был выключения питания

принципиально не решен :(
несмотря на некоторые "остроумные" комментарии


Дмитрий С   (2010-12-29 18:54:00) [5]

Суть не в том, чтобы 4 сек подождать, а чтобы эффект был выключения питания.

ExitWindows, shutdown+cmd не умеют отключать питание сразу, а только инициируют завершение работы системы.

К примеру, я делаю shutdown -s -f -t 0 (завершение работы, forced, таймаут 0), что происходит:
Система закрывает все открытые приложения, затем завершает свою работу, затем отключает питание (видимо посылает какой-то сигнал блоку питания).

А топике говориться про мгновенное отключение питания - т.е. сразу послать блоку питания сигнал, что пора отключиться.


> Игорь Шевченко ©   (27.12.10 20:30) [3]

А как?

Видимо это както связано с ACPI


Anatoly Podgoretsky   (2010-12-29 12:07:00) [6]

> Германн  (29.12.2010 04:19:14)  [14]

Таймеры пусть познает сам.


Германн   (2010-12-29 04:19:00) [7]


> Да и Анатолий уже врагу все наши "больные места" открыл)))

АП "открыл" только "разрешенные"  способы.
А способ "4-х секунд" пока остаётся не познанным. :)


brother   (2010-12-29 03:56:00) [8]

С удалением топика - согласен)
Да и Анатолий уже врагу все наши "больные места" открыл)))


Германн   (2010-12-29 03:54:00) [9]


> Anatoly Podgoretsky ©   (28.12.10 11:29) [7]
>
> > brother  (28.12.2010 08:22:04)  [4]
>
> Выключение питания всегда пакостно, чем бы оно не делалось.
>
>

+1
А для общего развития лучше удавить автора подушкой.
А топик удалить. :)


brother   (2010-12-29 03:40:00) [10]

> что PowerOff-4sec это чисто мехонический офф, т.е. до мозгов
> не доходит - гдето в маме происходит "ЁК"

Так оно и есть... и

> программно выключить блок питания

имхо не корректно поставлен вопрос... но если уж програмно, то Анатолий уже предложил вариант...


Leonid Troyanovsky   (2010-12-28 18:45:00) [11]


> Dennis I. Komarov ©   (28.12.10 14:49) [9]

> А я думал, что PowerOff-4sec это чисто мехонический офф,

Типа: тормоз, 3.5 с не хватает ;)

--
Regards, LVT.


Dennis I. Komarov   (2010-12-28 14:49:00) [12]

А я думал, что PowerOff-4sec это чисто мехонический офф, т.е. до мозгов не доходит - гдето в маме происходит "ЁК"


Anatoly Podgoretsky   (2010-12-28 11:37:00) [13]

> brother  (28.12.2010 08:22:04)  [4]

Q-161: Как выключить или перезагрузить компьютер?
procedure  Shutdown(Flags:  DWORD);
var
    hToken:  THandle;
    Luid:  Int64;
    NewPrivileges:  TTokenPrivileges;
    OldPrivileges:  TTokenPrivileges;
    OldPrivilegesSize:  DWORD;
begin
    if  Win32Platform  =  VER_PLATFORM_WIN32_NT
    then  //  получения  привилегий  для  платформы  NT
    begin
            //  получения  локального  уникального  ИД
        Win32Check(LookupPrivilegeValue(nil,  'SeShutdownPrivilege',
Luid));
            //  получения  токена  процесса
        Win32Check(OpenProcessToken(GetCurrentProcess,
            TOKEN_ADJUST_PRIVILEGES  or  TOKEN_QUERY,  hToken);
        NewPrivileges.PrivilegeCount  :=  1;
        NewPrivileges.Privileges[0].Attributes  :=  SE_PRIVILEGE_ENABLED;
        NewPrivileges.Privileges[0].Luid  :=  Luid;
            //  настройка  привилегий
        AdjustTokenPrivileges(hToken,
            False,
            NewPrivileges,
            SizeOf(OldPrivileges),
            OldPrivileges,
            OldPrivilegesSize);
        try
            Win32Check(GetLastError  =  ERROR_SUCCESS);
        finally
            CloseHandle(hToken);
        end
    end;
    Win32Check(ExitWindowsEx(Flags,  0));
end;

------=_NextPart_000_015A_01CBA67B.46BDE770


Anatoly Podgoretsky   (2010-12-28 11:29:00) [14]

> brother  (28.12.2010 08:22:04)  [4]

Выключение питания всегда пакостно, чем бы оно не делалось.


Полвторого   (2010-12-28 11:25:00) [15]


> ExitWindowsEx()

Э, нет. Долго выключаться будет =)

Если рутовские права есть — то можно просто свалить CSRSS.EXE, и система автоматически уйдёт в немедленныйофф-лайн.
Как раз так, как будто нажимаешь кнопку на питальнике.

Грубовато, конечно, но куда деваться.


clickmaker   (2010-12-28 11:16:00) [16]

ExitWindowsEx()


brother   (2010-12-28 08:22:00) [17]

> shutdown + cmd

пакастная вещица во вражеских руках ;)


Игорь Шевченко   (2010-12-27 20:30:00) [18]

можно


Anatoly Podgoretsky   (2010-12-27 17:32:00) [19]

> Дмитрий С  (27.12.2010 17:25:00)  [0]

shutdown + cmd


Dennis I. Komarov   (2010-12-27 17:31:00) [20]

За что так жестоко?


Наверх

Титульная страница Поиск, карта сайта Написать письмо