首页 » 操作系统 » Windows » 正文

用 CapsLock + T 置顶窗口/取消置顶窗口 (AutoHotkey)

发布者:站点默认
2025/06/24 浏览数(18) 分类:Windows 用 CapsLock + T 置顶窗口/取消置顶窗口 (AutoHotkey)已关闭评论

注:以下两个版本的区别:v2 中 #NoEnv 为默认项不用写、#If 换成了 #HotIf。置顶后窗口设为半透明(部分App自己会修改这个半透明效果为不透明但不影响置顶功能)。

AutoHotkey v2:

#SingleInstance Force
#InstallKeybdHook

global initialCapsLockState := ""
#HotIf GetKeyState("CapsLock", "P")
  ; 将当前窗口置顶/取消置顶
  t::
    initialCapsLockState := GetKeyState("CapsLock", "T")
    isTop := IsWindowTopmost()
    ; 置顶的同时增加透明度以区分是否被置顶
    WinSet("AlwaysOnTop", isTop ? "Off" : "On", "A")
    WinSet("Transparent", isTop ? 255 : 200, "A") ; 0透明,255不透明
    return
#HotIf

CapsLock Up::
  If (initalCapsLockState = "") {
    SetCapsLockState & !GetKeyState("CapsLock", "T")
  }
  initalCapsLockState := ""
  Return

IsWindowTopmost() {
  activeWindow := WinExist("A")
  exStyle := DllCall("GetWindowLong", "Ptr", activeWindow, "Int", -20)
  return (exStyle & 0x00000008) != 0
}

AutoHotkey v1:

#NoEnv
#SingleInstance force
#InstallKeybdHook

#If GetKeyState("CapsLock", "P")
  t::
    initalCapsLockState := GetKeyState("CapsLock", "T")
    isTop := IsWindowTopmost()
    WinSet, AlwaysOnTop, % (isTop ? "Off" : "On"), A
    WinSet, Transparent, % (isTop ? 255 : 200), A ; 置顶的同时增加透明度 0透明,255不透明
    Return
#If

CapsLock Up::
  If (initalCapsLockState = "") {
    SetCapsLockState & !GetKeyState("CapsLock", "T")
  }
  initalCapsLockState := ""
  Return

IsWindowTopmost() {
  activeWindow := WinExist("A")
  exStyle := DllCall("GetWindowLong", "Ptr", activeWindow, "Int", -20)
  Return (exStyle & 0x00000008) != 0
}
点击返回顶部
  1. 留言
  2. 联系方式