Вниз
Скачать: CL | DM;

Вырубание компа   Найти похожие ветки 

← →
gyry   (2004-04-25 14:41) [0]

Привет МАСТЕРА DEPLHI!!! Трабл маленький. Пишу

 
  ShellExecute(Application.Handle,
  Pchar("Open"),
  Pchar("C:\Windows\System32\Rundll32.exe"),
  Pchar("user,exitwindows"),
  Pchar("C:\Windows\System32"),
  SW_SHOWNORMAL);
 


А в ответ: "Ошибка при загрузке User. Не найден указанный модуль."
Может кто нить знает другие примеры выключения компа.


← →
Darmen   (2004-04-25 19:29) [1]

Слюшай сюда.
Данный код должен работать:
Win32Check(ExitWindowsEx(EWX_SHUTDOWN,0));
Если что-то не так, пиши мне на
darmen_tubik@rambler.ru


← →
evvcom ©   (2004-04-26 08:15) [2]

Скромный ник...
Вместо Pchar("Open") можно писать просто "Open" и т.д.


← →
antip   (2004-04-26 09:52) [3]

выключение компа под NT требует прав администратора...

const
 SE_SHUTDOWN_NAME = "SeShutdownPrivilege";

function NTSetPrivilege(const Privilege: string; bEnabled: Boolean = True): Boolean;
var
 hToken: THandle;
 TokenPriv: TOKEN_PRIVILEGES;
 PrevTokenPriv: TOKEN_PRIVILEGES;
 ReturnLength: Cardinal;
begin
 Result := True;
 // Only for Windows NT/2000/XP and later.
 if not (Win32Platform = VER_PLATFORM_WIN32_NT) then Exit;

 // obtain the processes token
 if OpenProcessToken(GetCurrentProcess(),
   TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
 begin
   try
     // Get the locally unique identifier (LUID) .
     if LookupPrivilegeValue(nil, PChar(Privilege),
       TokenPriv.Privileges[0].Luid) then
     begin
       TokenPriv.PrivilegeCount := 1; // one privilege to set

       case bEnabled of
         True:  TokenPriv.Privileges[0].Attributes  := SE_PRIVILEGE_ENABLED;
         False: TokenPriv.Privileges[0].Attributes := 0;
       end;

       ReturnLength  := 0; // replaces a var parameter
       PrevTokenPriv := TokenPriv;

       // enable or disable the privilege
       AdjustTokenPrivileges(hToken, False, TokenPriv, SizeOf(PrevTokenPriv),
         PrevTokenPriv, ReturnLength);
     end;
   finally
     CloseHandle(hToken);
   end;
 end;
 // test the return value of AdjustTokenPrivileges.
 Result := GetLastError = ERROR_SUCCESS;
 if not Result then
   RaiseLastOSError;
end;

procedure SystemShutdown;
begin
 if Win32Platform = VER_PLATFORM_WIN32_NT then
 begin
   if NTSetPrivilege(SE_SHUTDOWN_NAME) then
     if not ExitWindowsEx(EWX_SHUTDOWN, 0) then
       RaiseLastOSError;
 end else
   ExitWindowsEx(EWX_SHUTDOWN, 0);
end;



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
7-1082715005
Rext
2004-04-23 14:10
2004.05.30
Доступ к принтеру


14-1084441323
TUser
2004-05-13 13:42
2004.05.30
AutoCAD?


11-1073649843
Sane
2004-01-09 15:04
2004.05.30
Таймер в кол... помогите..)


8-1079595546
Ziko
2004-03-18 10:39
2004.05.30
Рисование штриховых и пунктирных линий GDI толщиной > 1


3-1083421788
Mishenka
2004-05-01 18:29
2004.05.30
Данные в таблицах.




   Наверх