按快捷键 ` 显示或者隐藏 Total Commander 10.52 主窗口 2023-2-5
(快捷键 ` 即波浪键~,位于Esc键正下方,位于Tab键正上方)
https://ds920.lanzoum.com/b012kc8cb
密码: 3333
以前的显示隐藏窗口脚本灵敏度有点低,寻找测试了几个月都没有任何进展,直到看到了飞跃大侠的脚本才完美的解决了快捷键反应迟钝的问题。
;
; Total Commander 10.52 简体中文增强版能够通过 拼音首字母序列字符串筛选过滤文件列表,
; 文件夹中的文件和文件名都可以自己整理整顿清理,
; 通过TC访问整理之后的文件夹可以快速高效的找到当前所需的文件
; (文档、表格、图片、音乐、视频、源码、快捷方式、网址链接、收藏夹书签、Synology群晖NAS映射网络驱动器等等)
;
由于此脚本已经设置快捷键为 ` ( 即波浪键~,位于Esc键正下方,位于Tab键正上方 )所以无需在Maye Lite 中设置快捷键了。
需要改成其他快捷键也是可以的,只要修改以下此AHK脚本好了,但是Maye Lite中不用再设置快捷键了。
设置启动系统时自动运行 Maye Lite 和 设置显示或者隐藏 Total Commander 10.52 主窗口快捷键的AutoHotkey脚本(即,此脚本,按快捷键 Win + R 输入 Shell:Startup 回车 )
https://wwi.lanzouq.com/b0bs5bidc
https://blog.arae.cc/post/25842.html
https://github.com/25H/MayeLite/releases/latest
多进程热键——快速响应随时中止 v2.1
https://www.autoahk.com/archives/41422
;
;
; 按快捷键 ` 显示或者隐藏 Total Commander 10.52 主窗口 2023-2-5 (快捷键 ` 即波浪键~,位于Esc键正下方,位于Tab键正上方)
; Total Commander 10.52 简体中文增强版能够通过 拼音首字母序列字符串筛选过滤文件列表,
; 文件夹中的文件和文件名都可以自己整理整顿清理,
; 通过TC访问整理之后的文件夹可以快速高效的找到当前所需的文件
; (文档、表格、图片、音乐、视频、源码、快捷方式、网址链接、收藏夹书签、Synology群晖NAS映射网络驱动器等等)
;
/*函数名: Single
设置互斥体,阻止脚本重复运行
功能与#SingleInstance差不多,只是这玩样可以自定义
另:
经测试发现#SingleInstance只识别脚本文件名,改名可重复运行,
在有热键的脚本里要使用 #SingleInstance,off 关闭此功能.
参数:
给这个脚本设置一个独一无二的识别字符串(指纹?)
返回值: 1 为重复,0为第一次
例子:
Single("7EF47F0D-4D37-542E-5787-90FDD196D04B")
Single("123")
*/
Single(flag) { ;,返回1为重复,返回0为第一个运行
DllCall("CreateMutex", "Ptr",0, "int",0, "str", "Ahk_Single_" flag)
return A_LastError=0xB7 ? true : false
}
; =========================
; 使用案例,脚本改名都没用,照样只能运行一个.
/*
#SingleInstance,Off ;关闭自带互斥功能
if (Single("0024")) { ;独一无二的字符串用于识别脚本,或者称为指纹?
; MsgBox,16,提示,程序已启动!`n请勿重复运行
ExitApp
}
*/
#SingleInstance,force
; 强制自身以 ansi + 管理员权限 运行,编译此脚本时选择 ANSI 。
; runwith("","ansi")
;-----------------------------------
; 多进程热键——快速响应随时中止 v2.1 By FeiYue
;
; 1、一般的多进程热键,每次按热键都会重新启动一个进程
; 这会造成热键响应延迟,和频繁启动、退出进程。
; 这个库利用线程叠加和双进程交替重启的设计解决了上述问题
;
; 2、Go.Go("标签名或函数名", 序号可省略) 启动子进程
; Go.Go("清理标签或为空", 序号可省略) 停止子进程
;-----------------------------------
class Go { ;// 类开始
init() {
static h:=Go.init()
#NoEnv
#NoTrayIcon
#SingleInstance force
#MaxThreads 255
if (A_Args.Length()>0)
{
Suspend, On
flag:="Ahk_Sub"
s:=RegExReplace(A_Args[1], "\s")
this.WinKill(flag "[" s "]")
r:=this.Menu_Go.Bind(this)
Menu, MyMenu, Add, Run, % r
Gui, %flag%: Add, Text, 0x80 -Wrap
Gui, %flag%: Menu, MyMenu
Gui, %flag%: Show, Hide, % flag "[" s "]"
return
Ahk_SubGuiClose:
Critical
WinMenuSelectItem,,, 1&
return
}
else
{
flag:="Ahk_Main"
this.WinKill(flag)
Gui, %flag%: Show, Hide, % flag
OnExit(this.WinKill.Bind(this,"Ahk_Sub"))
Menu, Tray, Icon
}
}
Menu_Go() {
ControlGetText, s
s:=Trim(s)
if (s="Reload")
{
WinGetTitle, s
this.RunAhk(RegExReplace(s,"Ahk_Sub\[|]"))
ExitApp
}
if IsLabel(s)
gosub, %s%
else if IsFunc(s)
%s%()
loop
Sleep, 60000
}
WinKill(flag) {
DetectHiddenWindows, On
WinGet, list, List, % flag " ahk_class AutoHotkeyGUI"
loop % list
IfWinExist, % "ahk_id " list%A_Index%
{
WinGet, pid, PID
WinClose, ahk_class AutoHotkey ahk_pid %pid%,, 3
IfWinExist,,, Process, Close, %pid%
}
DetectHiddenWindows, Off
}
RunAhk(s="") {
if (A_IsCompiled)
Run, "%A_ScriptFullPath%" /f %s%
else
Run, "%A_AhkPath%" /f "%A_ScriptFullPath%" %s%
}
; 一个进程叠加超过100个线程就切换另一个进程,原进程重启
Go(LabelOrFuncName="", index=0) {
static arr:=[]
DetectHiddenWindows, On
SetFormat, IntegerFast, d
index:=Floor(index), (!arr[index] && arr[index]:=[0,0])
, ii:=Floor(arr[index][1]), jj:=Floor(arr[index][2])
, tt:="Ahk_Sub[" index "_" jj "]"
if (++ii>100)
{
IfWinExist, % tt
{
ControlSetText,, Reload
WinClose
}
else
this.RunAhk(index "_" jj)
arr[index][2]:=jj:=!jj, ii:=1
, tt:="Ahk_Sub[" index "_" jj "]"
}
arr[index][1]:=ii
IfWinNotExist, % tt
{
this.RunAhk(index "_" jj)
WinWait, % tt,, 3
}
IfWinExist, % tt
{
ControlSetText,, % LabelOrFuncName
WinClose
}
DetectHiddenWindows, Off
}
} ;// 类结束
;======== 下面是使用的例子 =========
;-- 按住松开型循环
/*
$F1::
Go.Go("aaa")
KeyWait, F1
Go.Go()
return
aaa:
i:=1
loop
ToolTip, % "按住松开型循环-" i++
return
*/
;-- 两次开关型循环
`:: (ok:=!ok) ? Go.Go("bbb") : Go.Go("ccc")
bbb:
; ToolTip,bbb
; Process,Exist,TotalCMD.exe
; if (%ErrorLevel%=0)
DetectHiddenWindows,On
SetTitleMatchMode,2
; IfWinNotExist,Total Commander or IfWinNotExist,ahk_class TTOTAL_CMD
IfWinNotActive,Total Commander or IfWinNotActive,ahk_class TTOTAL_CMD
{
;-----------------------------------
; Maye Lite 和 此脚本中的快捷键都一致相同的设置为 ` ( 即波浪键~,位于Esc键正下方,位于Tab键正上方 )
; 搜索根目录中含有文件夹filter-file-with-totalcmd的磁盘分区
; 并用 Total Commander 10.52 简体中文增强版打开找到的文件夹
; 一旦找到文件夹后会继续寻找其他磁盘分区,
; 找到最靠后的含有文件夹filter-file-with-totalcmd的磁盘分区后会用Total Commander打开找到的文件夹filter-file-with-totalcmd
; Total Commander的右半边窗口的当前路径保持不变,只改变左半边的窗口的当前路径
; 此时只需要在 Total Commander 窗口中输入 "拼音首字母" 字符串序列就可以筛选过滤当前的文件列表
;-----------------------------------
IfExist,D:\Prog\TotalCMD\TotalCMD64.exe
{
Run,D:\Prog\TotalCMD\TotalCMD64.exe
}
else
{
MsgBox,0,找不到文件 D:\Prog\TotalCMD\TotalCMD64.exe
ExitApp
}
DriveGet,DriveList,List
; loop,Parse,CDEFGHIJKLMNOPQRSTUVWXYZ
loop, Parse, DriveList
{
IfExist,%A_LoopField%:\filter-file-with-totalcmd
{
IfExist,D:\Prog\TotalCMD\TotalCMD64.exe
{
Run,D:\Prog\TotalCMD\TotalCMD64.exe %A_LoopField%:\filter-file-with-totalcmd
}
}
}
}
loop,3
{
WinGet, WinID, ID,Total Commander ahk_class TTOTAL_CMD
DllCall("SwitchToThisWindow", "UInt", WinID, "UInt", 1)
WinShow,Total Commander ahk_class TTOTAL_CMD
WinActivate,Total Commander ahk_class TTOTAL_CMD
WinMove,Total Commander ahk_class TTOTAL_CMD,,0,0,A_ScreenWidth,A_ScreenHeight
WinMaximize,Total Commander ahk_class TTOTAL_CMD
}
return
ccc:
; ToolTip,ccc
WinMinimize,Total Commander ahk_class TTOTAL_CMD
return
/*
; 强制自身进程以 管理员权限 或 普通权限 或 ANSI 或 U32 或 U64 版本运行。
; 例1: runwith("admin","u32") 强制自身以 u32 + 管理员权限 运行。
; 例2: runwith("","ansi") 强制自身以 ansi 版本运行(权限不变)。
; 例3: runwith("normal") 强制自身以 普通权限 运行(版本不变)。
RunWith(RunAsAdmin:="Default", ANSI_U32_U64:="Default")
{
; 格式化预期的模式
switch, RunAsAdmin
{
case "Normal","Standard","No","0": RunAsAdmin:=0
case "Admin","Yes","1": RunAsAdmin:=1
case "default": RunAsAdmin:=A_IsAdmin
default: RunAsAdmin:=A_IsAdmin
}
switch, ANSI_U32_U64
{
case "A32","ANSI","A": ANSI_U32_U64:="AutoHotkeyA32.exe"
case "U32","X32","32": ANSI_U32_U64:="AutoHotkeyU32.exe"
case "U64","X64","64": ANSI_U32_U64:="AutoHotkeyU64.exe"
case "default": ANSI_U32_U64:="AutoHotkey.exe"
default: ANSI_U32_U64:="AutoHotkey.exe"
}
; 获取传递给 “.ahk” 的用户参数(不是 /restart 之类传递给 “.exe” 的开关参数)
for k, v in A_Args
{
if (RunAsAdmin=1)
{
; 转义所有的引号与转义符号
v:=StrReplace(v, "\", "\\")
v:=StrReplace(v, """", "\""")
; 无论参数中是否有空格,都给参数两边加上引号
; Run 的内引号是 "
ScriptParameters .= (ScriptParameters="") ? """" v """" : A_Space """" v """"
}
else
{
; 转义所有的引号与转义符号
; 注意要转义两次 Run 和 RunAs.exe
v:=StrReplace(v, "\", "\\")
v:=StrReplace(v, """", "\""")
v:=StrReplace(v, "\", "\\")
v:=StrReplace(v, """", "\""")
; 无论参数中是否有空格,都给参数两边加上引号
; RunAs.exe 的内引号是 \"
ScriptParameters .= (ScriptParameters="") ? "\""" v "\""" : A_Space "\""" v "\"""
}
}
; 判断当前 exe 是什么版本
if (!A_IsUnicode)
RunningEXE:="AutoHotkeyA32.exe"
else if (A_PtrSize=4)
RunningEXE:="AutoHotkeyU32.exe"
else if (A_PtrSize=8)
RunningEXE:="AutoHotkeyU64.exe"
; 运行模式与预期相同,则直接返回。 ANSI_U32_U64="AutoHotkey.exe" 代表不对 ahk 版本做要求。
if (A_IsAdmin=RunAsAdmin and (ANSI_U32_U64="AutoHotkey.exe" or ANSI_U32_U64=RunningEXE))
return
; 如果当前已经是使用 /restart 参数重启的进程,则报错避免反复重启导致死循环。
else if (RegExMatch(DllCall("GetCommandLine", "str"), " /restart(?!\S)"))
{
预期权限:=(RunAsAdmin=1) ? "管理员权限" : "普通权限"
当前权限:=(A_IsAdmin=1) ? "管理员权限" : "普通权限"
ErrorMessage=
(LTrim
预期使用: %ANSI_U32_U64%
当前使用: %RunningEXE%
预期权限: %预期权限%
当前权限: %当前权限%
程序即将退出。
)
MsgBox 0x40030, 运行状态与预期不一致, %ErrorMessage%
ExitApp
}
else
{
; 获取 AutoHotkey.exe 的路径
SplitPath, A_AhkPath, , Dir
if (RunAsAdmin=0)
{
; 强制普通权限运行
switch, A_IsCompiled
{
; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
; 工作目录不用单独指定,默认使用 A_WorkingDir 。
case, "1": Run, RunAs.exe /trustlevel:0x20000 "\"%A_ScriptFullPath%\" /restart %ScriptParameters%",, Hide
default: Run, RunAs.exe /trustlevel:0x20000 "\"%Dir%\%ANSI_U32_U64%\" /restart \"%A_ScriptFullPath%\" %ScriptParameters%",, Hide
}
}
else
{
; 强制管理员权限运行
switch, A_IsCompiled
{
; %A_ScriptFullPath% 必须加引号,否则含空格的路径会被截断。%ScriptParameters% 必须不加引号,因为构造时已经加了。
; 工作目录不用单独指定,默认使用 A_WorkingDir 。
case, "1": Run, *RunAs "%A_ScriptFullPath%" /restart %ScriptParameters%
default: Run, *RunAs "%Dir%\%ANSI_U32_U64%" /restart "%A_ScriptFullPath%" %ScriptParameters%
}
}
ExitApp
}
}
; 此脚本到此行结束
*/
#z::ExitApp
/*
#Persistent
; #NoTrayIcon
DetectHiddenWindows,On
SetTitleMatchMode,2
; =========================
DriveGet,DriveList,List
; loop,Parse,CDEFGHIJKLMNOPQRSTUVWXYZ
loop, Parse, DriveList
{
IfExist,%A_LoopField%:\filter-file-with-totalcmd
{
IfExist,D:\Prog\TotalCMD\TotalCMD64.exe
{
Run,D:\Prog\TotalCMD\TotalCMD64.exe %A_LoopField%:\filter-file-with-totalcmd
}
else
{
MsgBox,找不到文件 D:\Prog\TotalCMD\TotalCMD64.exe
ExitApp
; return
}
}
}
*/
下面隐藏内容为空白,这里放空白的隐藏内容便于大家支付积分,如不想支付积分可以忽略以下内容
[content_hide]
;
;
; 按快捷键 ` 显示或者隐藏 Total Commander 10.52 主窗口 2023-2-5 (快捷键 ` 即波浪键~,位于Esc键正下方,位于Tab键正上方)
; Total Commander 10.52 简体中文增强版能够通过 拼音首字母序列字符串筛选过滤文件列表,
; 文件夹中的文件和文件名都可以自己整理整顿清理,
; 通过TC访问整理之后的文件夹可以快速高效的找到当前所需的文件
; (文档、表格、图片、音乐、视频、源码、快捷方式、网址链接、收藏夹书签、Synology群晖NAS映射网络驱动器等等)
;
[/content_hide]
; --- 压缩打包 (升级更新补丁包)-------------------------------------------------------
REM D:\Prog\_一键打包成exe\一键打包成exe.bat
REM 此批处理脚本文件最后编辑日期 2022年9月23日
REM D-Prog-SS-.exe中的SS 是 Silent Setup 的简写,表示静默安装
if exist "C:\Program Files (x86)\WinRAR\WinRAR.exe" (
"C:\Program Files (x86)\WinRAR\WinRAR.exe" a -ag__YYYY.MM.DD_HH-MM-SS -iiconico.ico -m5 -r -sfx -z自解压脚本命令.txt D-Prog-SS-.exe ..\*.*
)else (
"C:\Program Files\WinRAR\WinRAR.exe" a -ag__YYYY.MM.DD_HH-MM-SS -iiconico.ico -m5 -r -sfx -z自解压脚本命令.txt D-Prog-SS-.exe ..\*.*
)
;下面的注释包含自解压脚本命令
;Path=解压缩路径
;Presetup=解压缩前运行
;Setup=解压缩后运行
;Silent=静默方式:1-隐藏全部 2-隐藏启动对话框 空着不设置-显示全部
;Overwrite=覆盖方式:1-覆盖全部文件 2-跳过已存在的文件 空着不设置-覆盖前询问
;请选择正确的图标并保存正确的配置文件
Path=D:\Prog\Update-TC
Setup=D:\Prog\Update-TC\Update-TC.bat
Silent=2
Overwrite=1
del /F /Q "%Temp%\Update7zlist.txt"
dir /b %~dp0\*.7z >"%Temp%\Update7zlist.txt"
if exist "%Temp%\Update7zlist.txt" (
for /f "usebackq" %%a in ("%Temp%\Update7zlist.txt") do (
%~dp07-Zip\7z x %~dp0%%a -aoa -oD:\ -r -y
start D:\Prog\TotalCMD\TC_~.exe
start %~dp0MsgBox
exit
)
)
)
)
MsgBox,0,请按波浪键 ~,请按波浪键 ~,5
ExitApp
REM 搜索并运行批处理脚本文件的批处理脚本文件
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist %%i:\filter-file-with-totalcmd\Update-TC\Update-TC.exe (
start %%i:\filter-file-with-totalcmd\Update-TC\Update-TC.exe
REM set desk =""
REM For /f "tokens=3,*" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v "desktop"') do (set desk=%%i)
REM Copy %0 %desk%
exit
)
)
建议使用 WinRAR 或者 7-Zip 的命令行工具和批处理脚本来压缩打包自解压安装包或升级更新补丁包。
Maye Lite 和 Total Commander 10.52 简体中文增强版的最大优点是支持按照 “拼音首字母”筛选文件和对筛选结果列表的自定义编辑(增添文件到筛选结果,从筛选结果删除文件)从而对筛选结果的完全把控,不重复文件,不缺失文件,确保找到的都是经过反复实地测试的易用好用的精品文件。
Maye Lite 和 Total Commander 10.52 简体中文增强版按照 “拼音首字母” 筛选的文件可以是保存在电脑本地硬盘、Synology群晖NAS网络映射驱动器、"SanDisk 闪迪 Extreme PRO E81 移动固态硬盘 4TB"、金属外壳和金属U盘帽子主控是IS903的CD-ROM虚拟光驱DIY量产U盘、映射网络驱动器的各种网盘云存储等等各种存储介质。
标签:exe,快捷键,Commander,ANSI,2023,Go,Total From: https://www.cnblogs.com/delphixx/p/17099381.html