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