:: MVP ::
|
|
:: RSS ::
|
|
|
Как переключить компьютер в ждущий режим в Win98?
// SetSystemPowerState( fSuspend: LongBool; fForce: LongBool );
// fSuspend: true - в спячку, false - назад
// fForce: если true - беспрепятственно переходим в спящий режим,
// если false - любая из работабщих программ может отказать в этом
SetSystemPowerState( true, true );
|
Как переключить компьютер в ждущий режим в WinNT?
procedure NTWait;
var
hToken: THandle;
tkp: TTokenPrivileges;
ReturnLength: Cardinal;
begin
if OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken ) then
begin
LookupPrivilegeValue( nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid );
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges( hToken, False, tkp, 0, nil, ReturnLength ) then
SetSystemPowerState( true, true );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
NTWait;
end;
|
Как программно выключить компьютер в Win98?
procedure TForm1.Button1Click(Sender: TObject);
begin
if not ExitWindowsEx( EWX_FORCE or EWX_POWEROFF or EWX_SHUTDOWN, 0 ) then
MessageBox( 0, 'Получен отказ в завершении', 'Win32', MB_OK );
end;
|
Как заблокировать рабочую станцию под управлением Win2000 и выше?
function LockWS: Boolean;
type
TLockWorkStation = function: Boolean;
var
hUser32: HMODULE;
LockWorkStation: TLockWorkStation;
begin
hUser32 := GetModuleHandle( 'USER32.DLL' );
if hUser32 <> 0 then
begin
@LockWorkStation := GetProcAddress( hUser32, 'LockWorkStation' );
if @LockWorkStation <> nil then
begin
LockWorkStation;
Result := true;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
LockWS;
end;
|
Как выключить компьютер под управлением Win2000 и выше?
procedure ShutdownComputer;
var
ph: THandle;
tp, prevst: TTokenPrivileges;
rl: DWORD;
begin
OpenProcessToken( GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, ph );
LookupPrivilegeValue( nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid );
tp.PrivilegeCount := 1;
tp.Privileges[0].Attributes := 2;
AdjustTokenPrivileges( ph, FALSE, tp, SizeOf( prevst ), prevst, rl );
ExitWindowsEx( EWX_SHUTDOWN or EWX_POWEROFF, 0 );
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShutdownComputer;
end;
|
Как запретить компьютеру под управлением Win2000 и выше переходить в спящий режим?
// ES_SYSTEM_REQUIRED - не дает системе перейти в спящий режим.
// ES_DISPLAY_REQUIRED - отвечает за активность дисплея:
// 1. блокировка запуска скринсейвера
// 2. подавление таймера отключения монитора при бездействии,
// если в нем есть такая функция.
// ES_AWAYMODE_REQUIRED - в основном используется мультимедийными
// приложениями для выполнения своих фоновых задач.
// ES_CONTINUOUS - фиксирует состояние активности системы до следующего
// вызова функции с этим флагом и комбинацией других флагов.
// Если приложение должно оставаться активным только на время продолжительного
// выполнения какого-нибудь критического участка кода, то перед его началом надо
// зафиксировать состояние запрета перехода системы в спящий режим, а после
// окончания этот запрет снять.
procedure TForm1.Button1Click(Sender: TObject);
begin
// Установить состояние постоянной активности системы и монитора
SetThreadExecutionState(ES_CONTINUOUS or ES_SYSTEM_REQUIRED or ES_DISPLAY_REQUIRED);
// Тут выполняется какой-то очень важный процесс, который нельзя прерывать
// Сбросить состояние постоянной активности
SetThreadExecutionState(ES_CONTINUOUS);
end;
// Если требуется держать систему в активном состоянии на протяжении всего времени
// работы приложения или в какие-то определенные моменты, то можно запускать функцию
// SetThreadExecutionState без флага ES_CONTINUOUS. В этом случае при каждом вызове
// она будет просто обнулять таймер бездействия. При таком варианте использования
// функцию придется запускать с нужной периодичностью, например, по таймеру.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Передать системе состояние активности
SetThreadExecutionState(ES_SYSTEM_REQUIRED or ES_DISPLAY_REQUIRED);
end;
|
При использовании материала - ссылка на сайт обязательна
|
|