Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: 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 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.028 c
6-1081184602
Kirill
2004-04-05 21:03
2004.05.30
IdHTTP и сессия


14-1084111140
VID
2004-05-09 17:59
2004.05.30
Как выполнить макрос в Excel ?


3-1083611520
Mister
2004-05-03 23:12
2004.05.30
ламерский вопрос по DBGRID


7-1082450954
MeF88
2004-04-20 12:49
2004.05.30
О размерах памяти консольных приложений


3-1083739703
Ирина
2004-05-05 10:48
2004.05.30
Вопрос по поводу того как использовать модуль