![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отключение жестких дисков и ЦПУ [D6, Win95/98, WinME, NT4, Win2k, WinXP]
NetWorK © (2004-05-04 12:55:00)Добрый день, господа программисты!
Не занимался ли кто-нибудь разработкой программ подобоных по своей функциональности, системному "гасителю" Винды? У меня стоит подобная задача: нужно чтобы моя программа могла отключать монитор(тут проблем нет), жесткие диски(первая проблема) и ЦПУ. Что касается ЦПУ, то я и сам не совсем понимаю что это означает, но требуется STANDBY CPU. Вот такая задача, если кто может что-нибудь дельного подсказать, буду очень рад выслушать.
Заранее спасибо.
NetworK (2004-05-11 15:11:00) [1]Ладно, нашел решение. Всем спасибо. Ветку можно считать закрытой
NetworK (2004-05-07 14:39:00) [2]И еще один вопрос насчет 9х. У меня 98 винда стоит под ВМВарей, там прога ничего не делает. Я так понимаю что это Варя виновата. Так ли это? Или дело в Винде...
NetWorK (2004-05-07 14:29:00) [3]Огромное спасибо за код. Это почти то что нужно. Но хотелось бы как-то пооддельности все вышеперечисленные ф-ции вызывать...т.е к примеру погасить монитор, но не вырубать диски и т.п.
Но все равно спасибо. Код действительно работает.
Ajax (2004-05-06 20:24:00) [4]Вот работающий под любой виндой код. На передачу параметра не смотрите - так было надо...
procedure ShutDown(param:PCHAR);
const
SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
var
hToken : THandle;
tkp : TTokenPrivileges;
ReturnLength : Cardinal;
begin
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then Exit;
if not LookupPrivilegeValue(nil, 'SeShutdownPrivilege',tkp.Privileges[0].Luid) then Exit;
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength);
if Boolean( GetLastError() ) then Exit
else
if param='restart' then ExitWindowsEx(EWX_SHUTDOWN or EWX_REBOOT, 0 )
else
If param='suspend' then SetSystemPowerState(true,true)
else
If param='hibernate' then SetSystemPowerState(false,true)
else
ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end;
Zaratustra (2004-05-06 19:35:00) [5]А не поможешь кодом? Я понимаю, что МСДН и хелп рулят, но в МСДН все на непонятном мне инглише и для непонятного мне Си. Был бы очень благодарен.
DrPass (2004-05-05 22:41:00) [6]Почему только с дисками? Ты можешь перевести всю систему в состояние suspend или вообще в спящий режим
NetworK (2004-05-05 20:57:00) [7]
> Client: Requires Windows XP, Windows 2000 Professional,
> Windows Me, Windows 98, or Windows 95.
> Server: Requires Windows Server 2003 or Windows 2000 Server.
Да, согласен, не смог глянуть сразу в МСДН(спасибо провайдеру, наверное)
Но, господа, это ж не решение проблемы в общем. Т.е. с дисками это вроде должно работать, а как насчет ЦПУ. Вот именно здесь заложена та трабла, разобраться, с которой мне еще престоит. И если вам не очень трудно, чтобы помочь старому индейцу, то помогите, я в таком тупике, что уже не знаю к кому обращаться....хелп!
Игорь Шевченко (2004-05-04 15:39:00) [8]Client: Requires Windows XP, Windows 2000 Professional, Windows Me, Windows 98, or Windows 95.
Server: Requires Windows Server 2003 or Windows 2000 Server.
TUser (2004-05-04 15:30:00) [9]В ХР, если из винды выйти, - но все можно выключить при современной маме. В 2000, вроде, тоже.
NetworK (2004-05-04 14:50:00) [10]
> Игорь Шевченко © (04.05.04 14:35) [1]
> SetSystemPowerState ?
В хелпе написано, что он только для 9х. Так что наверное не поможет.
Игорь Шевченко (2004-05-04 14:35:00) [11]SetSystemPowerState ?