Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.07;
Скачать: CL | DM;

Вниз

как программно выключить компьютер с Win XP?   Найти похожие ветки 

 
Sergey   (2003-06-05 04:34) [0]

Не мог ли бы кто-нибудь мне посказать, как программно выключить комп с Win XP. ExitWindowsEx не помогает. Спасибо


 
Suntechnic ©   (2003-06-05 05:33) [1]

>Sergey (05.06.03 04:34)
ExitWindowsEx не помогает

Помогает, если правильно использовать. Из help:

To shut down or restart the system, the calling process must use the AdjustTokenPrivileges function to enable the SE_SHUTDOWN_NAME privilege. For more information, see Running with Special Privileges.



 
Merfi   (2003-06-05 06:36) [2]

если нк трудно приведи реальный код.


 
Suntechnic ©   (2003-06-05 06:41) [3]

>Merfi
Извини, но под заказ пишу только за деньги.
Помочь?... это пожалуйста. Напиши код исходя из той информации которую получил, и вот если не будет работать, тогда мы всем форумом посмотрим что там не так...

...или подожди пока альтруисты проснуться :)


 
Ghost   (2003-06-05 07:25) [4]

http://www.pisoft.ru/locker/artik/shutdown.zip

Исходники проги для выключения компа под XP


 
Yanis ©   (2003-06-05 08:25) [5]

Привилегии нужны.

function SetPrivilege(aPrivilegeName : string;
aEnabled : boolean ): boolean;
var
TPPrev,
TP : TTokenPrivileges;
Token : THandle;
dwRetLen : DWord;
begin
Result := False;
OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES
or TOKEN_QUERY, @Token );
TP.PrivilegeCount := 1;
if( LookupPrivilegeValue(nil, PChar( aPrivilegeName ),
TP.Privileges[ 0 ].LUID ) ) then
begin
if( aEnabled )then
TP.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED;
else
TP.Privileges[0].Attributes:= 0;
dwRetLen := 0;
Result := AdjustTokenPrivileges(Token,False,TP,
SizeOf( TPPrev ),
TPPrev,dwRetLen );
end;
CloseHandle( Token );
end;
function WinExit( iFlags : integer ) : boolean;
// возможные флаги:
// EWX_LOGOFF
// EWX_REBOOT
// EWX_SHUTDOWN
begin
Result := True;
if( SetPrivilege( "SeShutdownPrivilege", true ) ) then
begin
if( not ExitWindowsEx( iFlags, 0 ) )then
begin
Result := False;
end;
SetPrivilege( "SeShutdownPrivilege", False )
end
else
begin
Result := False;
end;
end;




Страницы: 1 вся ветка

Текущий архив: 2003.08.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
4-20859
Dmk
2003-06-01 01:28
2003.08.07
Как перечислить все окна над моим?


1-20547
TolikM
2003-07-23 16:42
2003.08.07
События StringGrid а


14-20800
Stas
2003-07-21 14:00
2003.08.07
IP Адрес


3-20424
Nevermind
2003-07-16 17:24
2003.08.07
IXMLNode


14-20771
Nikolay M.
2003-07-21 16:22
2003.08.07
Продолжение карьеры программиста - ?