Сайт управляется системой uCoz
*** ***

Блокировка и разблокировка системы

Автор: VID
WEB-сайт:http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com **** >> Блокировка/Разблокировка системы.

Модуль LockSys. Блокировка/Разблокировка системы. Метод блокировки: блокируется (по-выбору) клавиатура и мышь, системные комбинации клавиш, или всё вместе. БЛОКИРОВКА СИСТЕМЫ: function LockSystem(LockMode:TLockMode):Boolean; Возможные значения параметра LockMode: lmInput - блокировка мыши и клавитатуры lmSystemKeys - блокировка системных комбинаций клавиш lmBoth = lmInput + lmSystemKeys В случае успеха функция возвращает True, иначе - False

РАЗБЛОКИРОВКА СИСТЕМЫ: function UnLockSystem(UnLockMode:TLockMode):Boolean; Входные параметры аналогичны функции LockSystem, но только речь в данном случае идёт о разблокировке. В случае успеха - True, иначе - False.

Зависимости: windows
Автор: VID,mailto:vidsnap@mail.ru, ICQ:132234868, Махачкала
Copyright: VID (основа списана из одного FAQ)
Дата: 26 мая 2002 г.
***************************************************** }

unit LockSys;

interface
uses
  Windows;

type
  TLockMode = (lmInput, lmSystemKeys, lmBoth);

function FuncAvail(_dllname, _funcname: string; var _p: pointer): boolean;
function LockSystem(LockMode: TLockMode): Boolean;
function UnLockSystem(UnLockMode: TLockMode): Boolean;

var
  xBlockInput: function(Block: BOOL): BOOL; stdcall;

implementation

function FuncAvail(_dllname, _funcname: string; var _p: pointer): boolean;
var
  _lib: tHandle;
begin
  Result := false;
  _p := nil;
  if LoadLibrary(PChar(_dllname)) = 0 then
    exit;
  _lib := GetModuleHandle(PChar(_dllname));
  if _lib <> 0 then
  begin
    _p := GetProcAddress(_lib, PChar(_funcname));
    if _p <> nil then
      Result := true;
  end;
end;

function LockSystem(LockMode: TLockMode): Boolean;
begin
  Result := False;

  if LockMode = lmSystemKeys then //Locking system
    if not SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, nil, 0) then
      Exit;

  if LockMode = lmInput then //locking keyb and mouse
    if FuncAvail('USER32.DLL', 'BlockInput', @xBlockInput) then
      xBlockInput(true)
    else
      Exit;

  if LockMode = lmBoth then
  begin
    if not SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, nil, 0) then
      Exit;
    if FuncAvail('USER32.DLL', 'BlockInput', @xBlockInput) then
      xBlockInput(true)
    else
      Exit;
  end;

  Result := True;
end;

function UnLockSystem(UnLockMode: TLockMode): Boolean;
begin
  Result := False;

  if UnLockMode = lmSystemKeys then //UnLocking system
    if not SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, nil, 0) then
      Exit;

  if UnLockMode = lmInput then //unlocking keyb and mouse
    if FuncAvail('USER32.DLL', 'BlockInput', @xBlockInput) then
      xBlockInput(false)
    else
      Exit;

  if UnLockMode = lmBoth then
  begin
    if not SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, nil, 0) then
      Exit;
    if FuncAvail('USER32.DLL', 'BlockInput', @xBlockInput) then
      xBlockInput(false)
    else
      Exit;
  end;

  Result := True;
end;

end.

Пример использования: 

LockSystem(lmBoth); // Блокировка всей системы
UnLockSystem(lmInput); // Разблокировка клавы и мыши

Copyright © 2007. Voloshin.
long2005@tut.by