Autohotkey 中文论坛
使用 Ctrl+Alt+F12 锁定和解锁电脑 - 可打印的版本

+- Autohotkey 中文论坛 (http://ahkcn.net)
+-- 版块: AutoHotkey (/forum-3.html)
+--- 版块: 作品展示 (/forum-7.html)
+--- 主题: 使用 Ctrl+Alt+F12 锁定和解锁电脑 (/thread-6593.html)



使用 Ctrl+Alt+F12 锁定和解锁电脑 - feiyue - 2018-05-16 13 : 04

看到群里有人提问,简单写了一个实现代码,玩玩而已。Smile

代码:
;----------------------------------
;  使用 Ctrl+Alt+F12 锁定和解锁电脑
;----------------------------------

^!F12::hk()

hk(f=1) {
  static allkeys, usedkeys:="F12"
  if !allkeys
  {
    ; 过滤前三个重复的键,补充后面与小键盘冲突的键
    s:="|Alt|Control|Shift|*|Home|End|PgUp|PgDn|"
      . "Left|Right|Up|Down|Del|Ins|NumpadEnter|"
    Loop, 254 {
      k:=GetKeyName(Format("vk{:x}", A_Index))
      s.=k="" or InStr(s,"|" k "|") ? "" : k "|"
    }
    ; 替换一些按键为缩写形式
    For k,v in {Control:"Ctrl", Backspace:"BS"}
      s:=StrReplace(s,k,v)
    allkeys:=Trim(SubStr(s,InStr(s,"*")+1),"|")
  }
  f:=f ? "On":"Off"
  For i,k in StrSplit(allkeys,"|")
    if k not in %usedkeys%
      Hotkey, *%k%, DoLock, %f% UseErrorLevel
  Hotkey, *F12, UnLock, %f% UseErrorLevel
  BlockInput, MouseMove
  BlockInput, MouseMove%f%
  return

  DoLock:
  return

  UnLock:
  if GetKeyState("Alt","P")
  && GetKeyState("Ctrl","P")
    hk(0)
  return
}