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

Вниз

WinXP shutdown   Найти похожие ветки 

 
twinc ©   (2004-03-09 11:46) [0]

Как выключить компьютер под управление ос Windows XP???


 
Рамиль ©   (2004-03-09 11:48) [1]

sutdown.exe


 
Рамиль ©   (2004-03-09 11:48) [2]

Сорри shutdown.exe


 
YuRock ©   (2004-03-09 11:56) [3]

Пуск - Завершение работы


 
Bigman   (2004-03-09 12:17) [4]

program ShutdownDB;

uses
 Windows,
 SysUtils;

procedure error(msg : string);
begin
MessageBox(0, @msg[1], "Error", MB_ICONERROR or MB_OK);
end;

function GetShutdownPriv : boolean;
var
hToken : THandle;
tkp : TTokenPrivileges;
ReturnLength : DWORD;
begin
// Get a token for this process.
if not OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin
    error("OpenProcessToken");
    Result := false;
    exit;
end;
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(nil, "SeShutdownPrivilege", tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;  // one privilege to set
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, ReturnLength);
// Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError <> ERROR_SUCCESS) then begin
   error("AdjustTokenPrivileges");
   Result := false;
   exit;
end;
Result := true;
end;

begin
if GetShutdownPriv then
{ BOOL InitiateSystemShutdown(

   LPTSTR lpMachineName, // address of name of computer to shut down
   LPTSTR lpMessage, // address of message to display in dialog box
   DWORD dwTimeout, // time to display dialog box
   BOOL bForceAppsClosed, // force applications with unsaved changes flag
   BOOL bRebootAfterShutdown  // reboot flag
  );
         }

  InitiateSystemShutdown("Comp","Завершаем работу машины Comp",2,true,false);
end.


 
BestMaster   (2004-03-09 17:48) [5]

Вырываю из файла не будет работать пишите ...

procedure TCD_Form.ShutDown;
const
 SE_SHUTDOWN_NAME = "SeShutdownPrivilege";   // Borland forgot this declaration
var
 hToken       : THandle;
 tkp          : TTokenPrivileges;
 tkpo         : TTokenPrivileges;
 zero         : DWORD;
begin
 if Pos( "Windows NT", OSVersion ) = 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;

procedure TCD_Form.Rebooth_BtnClick(Sender: TObject);
begin
  ShutDown;
end;

procedure TCD_Form.Restart_BtnClick(Sender: TObject);
begin
  if not ExitWindows(EW_RestartWindows, 0) then ShowMessage("Приложение не может завершить работу !");
end;


 
BestMaster   (2004-03-09 17:54) [6]

Там ещё нужно дописать Uses MMSystem потому как функция на APIашках и кстате выключает раза в 2 быстрее чем см выше "Пуск - Завершение работы"


 
YuRock ©   (2004-03-09 18:09) [7]

> BestMaster

Что-то слишком много написано :))
Вот этого кода вполне достаточно:

var
 hToken : THANDLE;
 tkp : TTokenPrivileges;
 rl : DWORD;

begin
 OpenProcessToken(GetCurrentProcess(), (TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY), hToken);
 if not (LookupPrivilegeValue(nil, LPSTR("SeShutdownPrivilege"), tkp.Privileges[0].Luid)) then
  begin
    MessageBox(0, "Нет локальных привилегий", "", MB_ICONSTOP);
    Exit;
  end;
 tkp.PrivilegeCount := 1;
 tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
 AdjustTokenPrivileges(hToken, FALSE, tkp, 0, nil, rl);

 ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
end.


> быстрее чем см выше "Пуск - Завершение работы"

Да, а быстрее всего - Ctrl+Shift+Power


 
Shah-666   (2004-03-12 15:05) [8]

Pover off! :)



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

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

Наверх




Память: 0.49 MB
Время: 0.029 c
7-1080318300
Vadim
2004-03-26 19:25
2004.04.11
Перезагрузка


3-1079010624
bushmen
2004-03-11 16:10
2004.04.11
DBEdit


1-1082733355
crezo
2004-04-23 19:15
2004.04.11
chm


1-1080048613
Hooch
2004-03-23 16:30
2004.04.11
Получение имени элемента перечисления


14-1082377252
Родион
2004-04-19 16:20
2004.04.11
Работа с файлами