Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

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

Delphi , ОС и Железо , Компьютер

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

Автор: 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, 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); // Разблокировка клавы и мыши

Эта единица Delphi обеспечивает функции блокировки и разблокировки системы. Единица LockSys содержит три функции:

  1. LockSystem: блокирует систему, либо блокируя ввод с клавиатуры и мыши (lmInput), либо блокируя системные комбинации клавиш (lmSystemKeys) или выполняя оба действия (lmBoth). Возвращает True, если операция была успешной.
  2. UnLockSystem: разблокирует систему, либо разблокируя ввод с клавиатуры и мыши (lmInput), либо разблокируя системные комбинации клавиш (lmSystemKeys) или выполняя оба действия (lmBoth). Возвращает True, если операция была успешной.

Единица использует следующие зависимости:

  • Windows: для доступа к функциям Windows API

Вот подробное описание кода:

Интерфейс Интерфейсная секция объявляет два типа: TLockMode, который является перечислением с тремя значениями: lmInput, lmSystemKeys и lmBoth. Эти значения представляют различные режимы блокировки/разблокировки системы.

Имплементация Секция имплементации содержит четыре функции:

  1. FuncAvail: проверяет, существует ли функция DLL, загружая DLL, получая ее handle и проверяя, если указанная функция есть.
  2. LockSystem: вызывает функцию SystemParametersInfo для блокировки ввода с клавиатуры и мыши или системных комбинаций клавиш в зависимости от значения LockMode. Если операция была успешной, возвращает True.
  3. UnLockSystem: вызывает функцию SystemParametersInfo для разблокировки ввода с клавиатуры и мыши или системных комбинаций клавиш в зависимости от значения UnLockMode. Если операция была успешной, возвращает True.
  4. xBlockInput: функция Windows API, блокирующая или разблокирующая ввод с клавиатуры и мыши.

Пример использования Чтобы заблокировать всю систему:

LockSystem(lmBoth);

Чтобы разблокировать клавиатуру и мышь:

UnLockSystem(lmInput);

В целом, эта единица обеспечивает простой способ блокировки и разблокировки системы в приложениях Delphi.

Модуль LockSys для блокировки и разблокировки системы, позволяющий блокировать клавиатуру и мышь, системные комбинации клавиш или все вместе.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Компьютер ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-06-02 10:20:12
2024-06-16 01:56:17/0.0072329044342041/2