Питание компьютера, запуск и завершение Windows
Code: |
{ **** UBPFD *********** **** >> Power off (Убивает процессы)
Зависимости: Windows Автор: DeMoN-777, Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., Санкт-Петербург Copyright: @ ***************************************************** }
procedure Shutdown2; var hToken: THandle; tkp: _TOKEN_PRIVILEGES; DUMMY: PTokenPrivileges; DummyRL: Cardinal; begin DUMMY := nil; if not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken ) then raise TShutdownEx.Create('OpenProcessToken failed');
if (not LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid)) then raise TShutdownEx.Create('LookupPrivilegeValue failed');
tkp.PrivilegeCount := 1; tkp.Privileges[0].Attributes := $0002; //SE_PRIVILEGE_ENABLED = $00002
AdjustTokenPrivileges(hToken, FALSE, tkp, 0, Dummy, DummyRL);
if (GetLastError() <> ERROR_SUCCESS) then raise TShutdownEx.Create('AdjustTokenPrivileges failed');
if (not ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0)) then raise TShutdownEx.Create('ExitWindowsEx failed'); end; |
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Иногда может возникнуть необходимость в выключении на время устройств ввода - клавиатуры и мыши. Например, это неплохо сделать на время выполнения кода системы защиты от копирования, в играх, или в качестве "наказания" при запуске программы по истечению срока ее бесплатного использования ... . Однако наилучшее ее применение - отключение клавиатуры и мыши на время работы демонстрационки, основанной на воспроизведении записанных заранее перемещений мышки и клавиатурного ввода (см. об этом отдельный раздел этой книги). Это элементарно сделать при помощи API:
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Code: |
procedure LockPC; var OldValue: LongBool; begin SystemParametersInfo(97, Word(Bool), @OldValue, 0); WinExec(PChar('rundll32 mouse,disable'), SW_SHOW); WinExec(PChar('rundll32 keyboard,disable'), SW_SHOW); end; |
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Code: |
mov ax,5301h sub bx,bx int 15h jb stop mov ax,530eh sub bx,bx int 15h jb stop mov ax,5307h mov bx,0001h mov cx,0003h int 15h stop: int 20h |
Код прислал Колесников Сергей Александрович [mailto:Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.]
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Для этого нам потребуются определённые привелегии:
Code: |
function SetPrivilege(aPrivilegeName : string; aEnabled : boolean ): boolean; var TPPrev, TP : TTokenPrivileges; Token : THandle; dwRetLen : DWord; begin Result := False; OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, @Token );
TP.PrivilegeCount := 1; if( LookupPrivilegeValue(nil, PChar( aPrivilegeName ), TP.Privileges[ 0 ].LUID ) ) then begin if( aEnabled )then TP.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED; else TP.Privileges[0].Attributes:= 0;
dwRetLen := 0; Result := AdjustTokenPrivileges(Token,False,TP, SizeOf( TPPrev ), TPPrev,dwRetLen ); end;
CloseHandle( Token ); end;
function WinExit( iFlags : integer ) : boolean; // возможные флаги: // EWX_LOGOFF // EWX_REBOOT // EWX_SHUTDOWN begin Result := True; if( SetPrivilege( 'SeShutdownPrivilege', true ) ) then begin if( not ExitWindowsEx( iFlags, 0 ) )then begin Result := False; end; SetPrivilege( 'SeShutdownPrivilege', False ) end else begin Result := False; end; end; |
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Code: |
unit Unit1; {©Drkb v.3}
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private FSystemShutdown: Boolean; procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION; end;
var Form1: TForm1;
implementation
{$R *.dfm}
function SetPrivilege(PrivilegeName: String; AEnabled: Boolean): Boolean; var TPPrev, TP: TTokenPrivileges; Token: THandle; dwRetLen: DWORD; begin Result := False; if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token) then try if LookupPrivilegeValue(nil, PChar(PrivilegeName),TP.Privileges[0].LUID) then begin TP.PrivilegeCount := 1; if AEnabled then TP.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED else TP.Privileges[0].Attributes := 0; dwRetLen := 0; Result := AdjustTokenPrivileges(Token, False, TP, SizeOf(TPPrev), TPPrev, dwRetLen); end; finally CloseHandle(Token); end else RaiseLastOSError; end;
procedure TForm1.FormCreate(Sender: TObject); const SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; begin FSystemShutdown := False; if not SetPrivilege(SE_SHUTDOWN_NAME, True) then RaiseLastOSError; end;
procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession); begin inherited; Message.Result := 0; AbortSystemShutdown(nil); FSystemShutdown := True; Close; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ShowMessage('Bla...bla...bla!'); if FSystemShutdown then InitiateSystemShutdown(nil, nil, 0, True, False); end;
end. |
Автор: Александр (Rouse_) Багель
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Функция SetSuspendState приостанавливает работу системы за счет отключения питания.
В зависимости от параметра Hibernate,
система либо переходит в состояние приостановки (сна), либо в спящий режим.
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
exitkernel очень радикальный способ потому что не сохраняются настройки рабочего стола, ini файлы и другие установки, зато быстро
Есть способ намного лучше: ф-ия SHExitWindowsEx из shell32.dll
С неё всё good. Это запуск из-под WinExec()
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Автор: Kecvin S. Gallagher
Если монитор поддерживает режим Stand by, то его можно программно перевести в этот режим. Данная возможность доступна на Windows95 и выше.
Чтобы перевести монитор в режим Stand by:
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Code: |
function MyExitWindows(RebootParam: Longword): Boolean; var TTokenHd: THandle; TTokenPvg: TTokenPrivileges; cbtpPrevious: DWORD; rTTokenPvg: TTokenPrivileges; pcbtpPreviousRequired: DWORD; tpResult: Boolean; const SE_SHUTDOWN_NAME = 'SeShutdownPrivilege'; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd); if tpResult then begin tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid); TTokenPvg.PrivilegeCount := 1; TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; cbtpPrevious := SizeOf(rTTokenPvg); pcbtpPreviousRequired := 0; if tpResult then Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg, cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired); end; end; Result := ExitWindowsEx(RebootParam, 0); end;
// Example to shutdown Windows:
procedure TForm1.Button1Click(Sender: TObject); begin MyExitWindows(EWX_POWEROFF or EWX_FORCE); end;
// Example to reboot Windows:
procedure TForm1.Button1Click(Sender: TObject); begin MyExitWindows(EWX_REBOOT or EWX_FORCE); end; |
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Сообщение wm_queryendsession посылается всем приложениям когда пользователь выбирает завершение сеанса или когда приложение вызывает
Функция ExitWindows. Если какое-либо приложение возвращает ноль, сеанс не завершается.
Система перестает отправлять сообщения WM_QUERYENDSESSION, как только одно приложение
возвращать нуль. После обработки этого сообщения система отправляет сообщение WM_ENDSESSION с
Параметр wParam задает результаты сообщения WM_QUERYENDSESSION.
- Подробности
- Родительская категория: Windows
- Категория: Питание компьютера, запуск и завершение Windows
Страница 1 из 3