Текущий архив: 2004.04.11;
Скачать: CL | DM;
Вниз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 вся ветка
Текущий архив: 2004.04.11;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.022 c