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

Вниз

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

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

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


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

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


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

sutdown.exe


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

sutdown.exe


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

Сорри shutdown.exe


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

Сорри shutdown.exe


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

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


 
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.


 
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: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 быстрее чем см выше "Пуск - Завершение работы"


 
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


 
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! :)


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

Pover off! :)



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

Форум: "WinAPI";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.044 c
3-1081860223
gosha
2004-04-13 16:43
2004.05.09
Не сохраняются данные


3-1081770759
Balkon
2004-04-12 15:52
2004.05.09
Массивы в Базе данных.


6-1079593460
Vovanx
2004-03-18 10:04
2004.05.09
Есть ли смысл использовать IdTCPServer?


3-1081934376
bytebutcher
2004-04-14 13:19
2004.05.09
Remote Data Services???


1-1082763405
/\_A_M_E_P
2004-04-24 03:36
2004.05.09
Как програмно сделать главное окно програмы невидимым?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский