| MS | 
								|  | « Ответ #2 : 24-04-2007 04:24 »  |  | 
 
 Вот еще, может пригодится.
 { **** 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.
 ===============================================
 
 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); // Разблокировка клавы и мыши
 
 |