![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Вот такая задача - нужно отключить/включить клавиатуру. Как это сделать и какие модули использовать? 
		
	
		
		
		
		
		
		
			Есть такой пример: Код: 
	// используемые переменные var Dummy : ildKbHook : HHook=0; impementation function KbHook( code: Integer; wparam: Word; lparam: LongInt ): LongInt; stdcall; begin if code<0 then Result:=CallNextHookEx( oldKbHook, code, wparam, lparam ) else Result:=1; end; // включение клавы procedure TForm1.KeyBoardOn(Sender: TObject); begin if OldKbHook <> 0 then begin UnHookWindowshookEx( OldKbHook ); OldKbHook := 0; end; SystemParametersInfo( SPI_SETFASTTASKSWITCH, 0, 0, 0); SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, 0, 0); end; // выключение клавы procedure TForm1.KeyBoardOff(Sender: TObject); begin SystemParametersInfo( SPI_SETFASTTASKSWITCH, 1, @Dummy, 0); SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @Dummy, 0); OldKbHook := SetWindowsHookEx( WH_KEYBOARD, @KbHook, HInstance, 0 ); end; но он не работает((( Помогите плз... Последний раз редактировалось Admin, 25.05.2010 в 14:49.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 хуки должны находиться в dll. У меня твой пример работает. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Дай плз работающую программу, чтоб можно было отключить и включить клаву 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Отключить клаву: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	var dirWin: array[0..255] of char; begin GetWindowsDirectory(dirWin,255); WinExec(PChar(WinDir + ' undll32.exe keyboard,disable'),SW_SHOWNORMAL); end;  |