首页 > 技术文章 > 设置激活或者隐藏 Total Commander 10.00 主窗口的快捷键为 F8

delphixx 2021-12-22 10:02 原文

;
;/*
;===========================================
; 设置激活或者隐藏 Total Commander 10.00 主窗口的快捷键为 F8
; https://www.autoahk.com/archives/37780
; https://www.cnblogs.com/delphixx/p/15718194.html
;
; 脚本作者 : ds920
; 最新版本 : 1.1
; 更新时间 : 2021年12月22日
;
; 用法: (需要最新版本 AHK v1.1.31+)
; 1. 到飞扬时空的新浪博客下载并安装TotalCommander中文增强版到文件夹D:/TotalCMD
; 2. 将本脚本保存为"RunTC.ahk"并复制到D:/TotalCMD文件夹中
; 3. 使用Maye来设置RunTC.ahk的热键为 F8
;
; 升级更新历史:
; 版本1.0 2021年12月22日 新建 创建此AutoHotkey脚本并测试通过F8热键功能
; 版本1.1 2021年12月22日 修改 调整删除 SetTimer 定时器时判断TC主窗口是否激活的顺序
; 把基于窗口类的激活判断语句"if(WinActive("ahk_class" TTOTAL_CMD))"放在最外层
; 防止有相同标题的窗口激活时(例如:相同标题的浏览器等等)窗口激活误判
;
; 由于AutoHotkey的Hotkey语句设置的热键必需在任务栏或者桌面进程激活时才有效,
; 所以请使用Maye来设置Total Commander的热键 F8
; https://blog.arae.cc/post/25830.html
; https://github.com/25H/Maya/releases/
;
; 可以用 Total Commander 访问用RaiDrive异地远程连接群晖WebDAV文件服务并映射成的本地虚拟磁盘盘符 Z: 分区
; 可以用 Total Commander 访问用NetDrive2异地远程连接群晖SFTP文件服务并映射成的本地虚拟磁盘盘符 Y: 分区
; 可以用支持 Total Commander的WebDAV文件服务访问插件异地远程连接群晖WebDAV文件服务中的网络共享文件夹
; 可以用KeePass或者KeePass2Android来连接坚果云或者
; 群晖NAS的WebDAV文件服务来管理网址、用户名、账号、密码、口令、暗号、纪念日等个人敏感隐私信息和数据
; 可以用FileZilla Pro 专业版软件异地远程连接群晖的WebDAV文件服务并
; 批量上传文件夹到群晖的 RAID 1 镜像存储池中的共享文件夹之中
; 可以用腾讯文档的电脑客户端来新建在线文档和在线表格来进行办公文档和办公表格的分享和协作
; 可以用Bulk Rename Utility 2.7.1.2来批量重命名或者编号群晖WebDAV文件服务中的共享文件夹中的大量文件
; 可以用Double Killer Pro V 2.1.0.104来批量删除群晖WebDAV文件服务中的共享文件夹中的重复文件
; 可以安装并升级更新"火绒安全软件"来防杀电脑病毒木马恶意软件并拦截垃圾广告弹出的骚扰窗口
; 可以用SGI备份还原映像总裁镜像总裁一键还原工具软件来备份保护Windows操作系统和
; 电脑中应用程序软件和设置到GHO系统镜像文件
; SGI备份还原映像总裁镜像总裁一键还原工具软件官方网址是 https://www.sysceo.com/Software-softwarei-id-253.html
; 以便今后用杏雨梨云启动维护系统可启动固态U盘来恢复电脑系统应用程序软件GHO系统镜像文件到电脑的系统分区C盘
; 可以用Shadow Defender 影子卫士来保护Windows操作系统和电脑中应用程序软件的设置,
; 防止电脑软件设置被未授权的用户和程序非法更改和破坏
; 如果无法安装 Shadow Defender 影子卫士时可以用"DeepFreeze冰点还原精灵"或者
; "PowerShadow影子系统"或者"Returnil Virtual System(RVS)"来代替影子卫士
;
;===========================================
;*/

#SingleInstance,Ignore
loop,2
{
DetectHiddenWindows,On
Sleep,2
IfWinExist,QQ595076941_AutoAHKRun
ExitApp
}
Gui, Show, Hide,QQ595076941_AutoAHKRun
#Persistent
; #NoTrayIcon
DetectHiddenWindows,On
SetTitleMatchMode,2
; 设置激活或者隐藏 Total Commander 10.00 主窗口的快捷键为 F8
; Hotkey,F8,ActivateOrHideWindowHotkey
ActivateOrHideWindowHotkey()
return
; ——————————————————–
ActivateOrHideWindowHotkey()
{
; MsgBox,PressedHotkey检测到已经按下快捷键
Sleep,2
IfWinActive,ahk_class TTOTAL_CMD
{
Sleep,2
if(WinActive(ahk_class TTOTAL_CMD))
{
Sleep,2
WinGetClass, MyClass, A
IfInString,MyClass,TTOTAL_CMD
{
Sleep,2
IfWinActive,Total Commander
{
TCTitle:="Total Commander"
Sleep,2
WinGetActiveTitle,Title
IfInString,Title,%TCTitle%
{
; MsgBox,MinimizeWindow最小化指定窗口
WinMinimize,Total Commander ahk_class TTOTAL_CMD
Sleep,2
ExitApp
}
}
}
}
}
else
{
; MsgBox,ActivateWindow显示并且最大化并且激活指定窗口
SetTimer,ActivateWindowTimer,20
}
}
; ——————————————————–
;根据窗口类名显示并激活Total Commander窗口
ActivateWindowTimer()
{
; 1、如果程序没有运行则运行程序,这里我把可执行文件名改成了TotalCMD-v10.exe
Process,Exist,TotalCMD-v10.exe
if (%ErrorLevel%=0)
{
IfExist,D:/TotalCMD/TotalCMD-v10.exe
{
Run,D:/TotalCMD/TotalCMD-v10.exe
}
else
{
MsgBox,找不到文件 D:/TotalCMD/TotalCMD-v10.exe
return
}
}
; 2、显示并激活(切换到)指定窗口
WinShow,Total Commander ahk_class TTOTAL_CMD
WinMove,Total Commander ahk_class TTOTAL_CMD,,0,0,A_ScreenWidth,A_ScreenHeight
WinActivate,Total Commander ahk_class TTOTAL_CMD
WinMaximize,Total Commander ahk_class TTOTAL_CMD
Sleep,2
DetectHiddenWindows,On
SetTitleMatchMode,2
WinGet, WinID, ID,Total Commander ahk_class TTOTAL_CMD
DllCall("SwitchToThisWindow", "UInt", WinID, "UInt", 1)
; 3、检查指定窗口是否激活成功,
; 假如激活成功则退出Timer计时器循环执行,
; 如果激活失败则继续尝试激活指定窗口

Sleep,2
IfWinActive,ahk_class TTOTAL_CMD
{
Sleep,2
if(WinActive(ahk_class TTOTAL_CMD))
{
Sleep,2
WinGetClass, MyClass, A
IfInString,MyClass,TTOTAL_CMD
{
Sleep,2
IfWinActive,Total Commander
{
TCTitle:="Total Commander"
Sleep,2
WinGetActiveTitle,Title
IfInString,Title,%TCTitle%
{
SetTimer,ActivateWindowTimer,Delete
Sleep,2
ExitApp
}
}
}
}
}
}

;================= The End =================

;

/*

;================= 根据窗口类名激活或者隐藏窗口的AutoHotkey函数 =================
; 请使用 窗口信息工具 AHKInfo 1.3.5 获取窗口的类名
;根据窗口类名激活或者隐藏窗口
ActivateOrHideWindow(VarExeFileName:="TotalCMD-v10″,VarWinClassName:="TTOTAL_CMD")
{
; 1、如果程序没有运行则运行程序
Process,Exist,%VarExeFileName%.exe
if (%ErrorLevel%=0)
{
IfExist,%VarExeFileName%.exe
{
Run,%VarExeFileName%.exe
return
}
else
{
MsgBox,找不到文件 %VarExeFileName%.exe
return
}
}
; 2、如果窗口未置顶则显示并激活(切换到)指定窗口
IfWinNotActive,ahk_class %VarWinClassName%
{
loop,2
{
Sleep,20
WinShow,ahk_class %VarWinClassName%
;~ WinMaximize,ahk_class %VarWinClassName%
Sleep,20
WinGet, WinID, ID,ahk_class %VarWinClassName%
Sleep,20
DllCall("SwitchToThisWindow", "UInt", WinID, "UInt", 1)
}
return
}
; 3、如果窗口已经显示并置顶则隐藏窗口
;~ WinMinimize,ahk_class %VarWinClassName%
WinHide,ahk_class %VarWinClassName%
}

*/
;

 

 

推荐阅读