Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.038 c
7-1083076227
Medic
2004-04-27 18:30
2004.05.30
удалённое соединение


14-1084074388
Апач
2004-05-09 07:46
2004.05.30
Вечный вопрос: Мужчина и Женщина


6-1081314901
D.Z.
2004-04-07 09:15
2004.05.30
Дескриптор сокета в чужой программе.


1-1085039816
$Hic0
2004-05-20 11:56
2004.05.30
Try... except


1-1084622659
Soldier
2004-05-15 16:04
2004.05.30
Tmemo





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский