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; 
  • 相关阅读:
    Ocelot简易教程(二)之快速开始1
    Ocelot简易教程(一)之Ocelot是什么
    InfluxDB学习之InfluxDB的基本操作
    InfluxDB入门教程
    .NET Core微服务之基于App.Metrics+InfluxDB+Grafana实现统一性能监控
    .net Core 微服务
    IdentityServer4 接口说明
    WINDOWS命令行关闭本地占用的端口
    并发负载压力测试
    C#操作Mongodb
  • 原文地址:https://www.cnblogs.com/ljl_falcon/p/2354063.html
Copyright © 2011-2022 走看看