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

Вниз

ShutDoun в win 2000   Найти похожие ветки 

 
Герасимов   (2003-02-06 23:04) [0]

Уважаемые мастера столкнулся с такой проблемой. моя прога по команде выключает компьютер в 98 все ОК , а в 2000 беда : все отрубается только в конце пишет "Теперь питание компьютера можно отключить" , хотя сама винда его вырубает. Не подскажите что за беда и как с ней бороться.
Программа сначала определяет версию win потом уже отрубает для 2000 примерно так:
procedure TMainForm.ShutDown;
const
SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; // Borland forgot this declaration
var
hToken : THandle;
tkp : TTokenPrivileges;
tkpo : TTokenPrivileges;
zero : DWORD;
begin
if Pos( "Windows NT", GetWinVersion) = 1 then // we"ve got to do a whole buch of things
begin
zero := 0;
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
MessageBox( 0, "Exit Error", "OpenProcessToken() Failed", MB_OK );
Exit;
end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)
if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
begin
MessageBox( 0, "Exit Error", "OpenProcessToken() Failed", MB_OK );
Exit;
end; // if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken)


// SE_SHUTDOWN_NAME
if not LookupPrivilegeValue( nil, "SeShutdownPrivilege" , tkp.Privileges[ 0 ].Luid ) then
begin
MessageBox( 0, "Exit Error", "LookupPrivilegeValue() Failed", MB_OK );
Exit;
end; // if not LookupPrivilegeValue( nil, "SeShutdownPrivilege" , tkp.Privileges[0].Luid )
tkp.PrivilegeCount := 1;
tkp.Privileges[ 0 ].Attributes := SE_PRIVILEGE_ENABLED;

AdjustTokenPrivileges( hToken, False, tkp, SizeOf( TTokenPrivileges ), tkpo, zero );
if Boolean( GetLastError() ) then
begin
MessageBox( 0, "Exit Error", "AdjustTokenPrivileges() Failed", MB_OK );
Exit;
end // if Boolean( GetLastError() )
else
ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
end // if OSVersion = "Windows NT"
else
begin // just shut the machine down
ExitWindowsEx( EWX_FORCE or EWX_SHUTDOWN, 0 );
end; // else
end;
Может здесь что не так?


 
Михайлов Антон   (2003-02-08 17:56) [1]

http://delphi.mastak.com/cgi-bin/forum.pl?look=1&id=1044707432&n=2


 
xfrost ©   (2003-02-13 21:50) [2]

Все я врубился вместо ShutDown надо было вставить PowerOff и как я сам не догадался про третий вариант....



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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
1-19582
Tornado
2003-03-28 13:25
2003.04.07
ДОС-команда


8-19708
iNew
2002-12-18 10:30
2003.04.07
Как проиграть wav файл через динамик?


14-19803
NetBreaker666
2003-03-19 19:11
2003.04.07
Слабо ? В. Цой.


14-19828
TGrigory
2003-03-20 17:24
2003.04.07
Открытие файлов в Turbo Pascal 7


6-19715
Карелин Артем
2003-02-14 10:06
2003.04.07
NMUDP. Есть вопросы.