zoukankan      html  css  js  c++  java
  • 锁定键盘 任务管理器没有锁定

    unit LockTheKB; //锁键盘单元 interface uses Wintypes, WinProcs; //键盘上锁 Function DisableKeyboard: Boolean; //键盘解锁 Procedure EnableKeyboard; implementation var oldHook: Hhook; Function KbHook( code: Integer; wparam: Word; lparam: LongInt ): LongInt;export; Begin If code < 0 Then KbHook := CallNextHookEx( oldHook, code, wparam, lparam ) Else KbHook := 1; End; // KbHook Function DisableKeyboard: Boolean; //上锁 Begin oldHook := SetWindowsHookEx( WH_KEYBOARD, @KbHook, Hinstance, 0 ); DisableKeyboard := oldHook <> 0; End; Procedure EnableKeyboard; //解锁 Begin If oldHook <> 0 Then Begin UnhookWindowshookEx( oldHook ); oldHook := 0; End; // If End; end.
    使用时定义一个TBevel控件,锁定鼠标实际上是将光标控制在这个TBevel区间内,也可以把光标控制在屏幕左上角一个点的位置:LockRect := Rect(0,0,1,1); 调试时要注意在程序中控制开启鼠标或键盘,否则输入设备都被封锁了,只有关电源重启. procedure TForm1.LockKeyAndCursor(Lock: boolean); var LockRect: TRect; begin if Lock = True then begin LockRect := Rect(Form1.Left + bvLockCursor.Left, Form1.Top + bvLockCursor.Top, Form1.Left + bvLockCursor.Left + bvLockCursor.Width, Form1.Top + bvLockCursor.Top + bvLockCursor.Height); ClipCursor(@LockRect); LockKey(True); end else begin FreeRect := Rect(0,0,Screen.Width,Screen.Height); ClipCursor(@FreeRect); LockKey(False); end; end; procedure TForm1.LockKey(Lock: boolean); var temp: integer; begin if Lock = True then begin asm IN AL,21H OR AL,02H OUT 21H,AL end; SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0); //封锁组合键Ctrl+Alt+Del end else begin asm IN AL,21H AND AL,0FDH OUT 21H,AL end; SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @temp, 0); //解开组合键Ctrl+Alt+Del end; end; 
  • 相关阅读:
    异常练习
    Comparator 排序 ArrayList 实操练习
    50道Java线程面试题
    Java ArrayList排序方法详解
    Map集合利用比较器Comparator根据Key和Value的排序
    Java Map 键值对排序 按key排序和按Value排序
    实现java随机数Random的几招
    如何在Java中获取键盘输入值
    力扣 ——3Sum python (三数之和)实现
    python中函数用法
  • 原文地址:https://www.cnblogs.com/ljl_falcon/p/2354063.html
Copyright © 2011-2022 走看看