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; 
  • 相关阅读:
    JDBC值事务
    JDBC之存储过程
    2016年计划要看的书,收集来自爱学习爱阅读的精英们
    step by step设置postgresql用户密码并配置远程连接
    在CentOS上搭建svn服务器及注意事项
    我为儿子开发的第一款Android App,用于九九乘法练习
    C语言实现九九乘法口诀表
    selenium-自动化测试51job网站(MacOS + Safari)2020年10月6日
    Oracle中row_number()、rank()、dense_rank() 的区别
    SQL错题集
  • 原文地址:https://www.cnblogs.com/ljl_falcon/p/2354063.html
Copyright © 2011-2022 走看看