首页 > 其他分享 >设置显示或者隐藏MasterSeeker和Total Commander主窗口的快捷键的AutoHotkey脚本2024.10.21 =========

设置显示或者隐藏MasterSeeker和Total Commander主窗口的快捷键的AutoHotkey脚本2024.10.21 =========

时间:2024-10-21 12:21:31浏览次数:4  
标签:2024.10 exe 21 ahk 快捷键 Total Go Commander MasterSeeker

设置显示或者隐藏MasterSeeker和Total Commander主窗口的快捷键的AutoHotkey脚本2024.10.21 =========

 

 

;======== 设置显示或者隐藏MasterSeeker和Total Commander主窗口的快捷键的AutoHotkey脚本2024.10.21 =========
; 此脚本从此行开始
; D:\app\RegHotkey\RegHotkey.ahk
; 鼠标右击AHK托盘图标显示菜单并提示所有快捷键
; AutoHotkey版本1.1

;======== 强制自身以 ansi + 管理员权限 运行,编译此脚本时选择 ANSI 32位 =========
runwith("admin","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
}
}  ;// 类结束


;======== 添加托盘图标右键菜单 =========
; 鼠标右击AHK托盘图标显示菜单并提示所有快捷键
Menu, Tray, Add,按Alt+Z终止此脚本, ExitAppMenuHandler  ; 创建新菜单项.
Menu, Tray, Add,双击Ctrl键2秒后关闭显示器屏幕电源, PowerOffDisplay   ; 创建新菜单项.
Menu, Tray, Add,按~键显示或者隐藏Maye Lite, PowerOffDisplay  ; 请在Maye Lite中设置快捷键热键
Menu, Tray, Add,按F3键显示或者隐藏MasterSeeker, ccc  ; 创建新菜单项.
Menu, Tray, Add,按F4键显示或者隐藏Total Commander, aaa  ; 创建新菜单项.
Hotkey,!z,ExitAppMenuHandler
ExitAppMenuHandler()
{
	ExitApp
}

;======== 设置关闭显示器的快捷键为 双击 Ctrl键 =========
Control::
	if (A_PriorHotkey <> "Control" or A_TimeSincePriorHotkey > 400)
	{ KeyWait, Control
		return
	}
	; MsgBox 双击
	Go.Go("PowerOffDisplay")
return
PowerOffDisplay:
	Sleep,2000 ;暂停2秒,防止受键盘操作影响,关闭显示器后又立即开启。
	;~ 关闭显示器
	SendMessage, 0x112, 0xF170, 2,, Program Manager
return

;======== 设置显示或者隐藏 MasterSeeker 主窗口的快捷键为 F3 键 =========
; (F3键位于键盘主键区数字键4正上方)
F3::Go.Go("ccc")
ccc:
	; WinGetPos, , , W, ,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
	; if (WinActive("MasterSeeker 1.5.1 by DxCK" ahk_exe MasterSeeker.exe) and W>700)
	IfWinActive,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
	{
		; WinHide,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
		WinMinimize,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
	}
	else
	{
		DetectHiddenWindows,On
		SetTitleMatchMode,2
		IfWinNotExist,ahk_exe MasterSeeker.exe
		{
			IfWinNotExist,MasterSeeker 1.5.1 by DxCK
			{
				IfWinNotExist,ahk_exe MasterSeeker.exe
				{
					IfWinNotExist,MasterSeeker 1.5.1 by DxCK
					{
						IfExist,D:\Prog\MasterSeeker\MasterSeeker.exe
						{
							Run,D:\Prog\MasterSeeker\MasterSeeker.exe
						}
						else
						{
							MsgBox,0,,找不到文件 D:\Prog\MasterSeeker\MasterSeeker64.exe,5
							ExitApp
						}
					}
				}
			}
		}
		SetTimer,WinActivateMasterSeeker,Delete
		SetTimer,WinActivateMasterSeeker,500
	}
return
WinActivateMasterSeeker()
{
	WinShow,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
	WinGet, WinMSID, ID,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
	DllCall("SwitchToThisWindow", "UInt", WinMSID, "UInt", 1)
	WinActivate,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
	WinMove,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe,,0,0,A_ScreenWidth,A_ScreenHeight
	WinMaximize,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
	IfWinActive,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
	{
		loop,5
		{
			WinMove,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe,,A_ScreenWidth/2,20,A_ScreenWidth/2-10,A_ScreenHeight-90
			; 注意: MasterSeeker 的搜索框控件的名是 Filename ,很奇怪,很神奇,
			; MasterSeeker 的搜索框控件不是类名 MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe7,也不是类名 Edit1
			; ControlFocus,In Directory,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
			; 设置输入焦点到窗口的指定控件上.
			ControlFocus,Filename,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
		}
		ControlSend,Filename,{LControl Down}a{LControl Up},MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
		SetTimer,WinActivateMasterSeeker,Delete
		Go.Go()
		return
	}
}

;======== 设置显示或者隐藏 Total Commander 11.01 主窗口的快捷键为 F4 键 =========
;(F4键位于键盘主键区数字键5正上方
; Total Commander 11.01使用支持按照“拼音首字母”序列筛选过滤文件列表的增强版QuickSearch eXtended 2.2.7插件)
F4::Go.Go("aaa")
aaa:
	; WinGetPos, , , W, ,Total Commander (x64) ahk_exe TotalCMD64.exe
	; if (WinActive("Total Commander (x64)" ahk_exe TotalCMD64.exe) and W>400)
	DetectHiddenWindows,On
	SetTitleMatchMode,2
	;等待指定标题窗口出现
	;WinWait, Total Commander (x64) 11.01 - User ahk_class TTOTAL_CMD ahk_exe TOTALCMD64.EXE, [软件]  2.47
	IfWinActive,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
	{
		WinMinimize,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
	}
	else
	{
		WinShow,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
		WinGet, WinTCID, ID,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
		DllCall("SwitchToThisWindow", "UInt", WinTCID, "UInt", 1)
		WinActivate,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
		WinMove,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe,,0,0,A_ScreenWidth,A_ScreenHeight
		WinMaximize,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
		IfWinNotExist,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
		{
			IfWinNotExist,ahk_exe TOTALCMD64.EXE
			{
				IfExist,D:\Prog\TotalCMD\TotalCMD64.exe
				{
					Run,D:\Prog\TotalCMD\TotalCMD64.exe
					Go.Go()
					return
				}
				else
				{
					MsgBox,0,,找不到文件 D:\Prog\TotalCMD\TotalCMD64.exe,5
					ExitApp
				}
			}
			SetTimer,WinActivateTC,Delete
			SetTimer,WinActivateTC,500
		}
	}
	Go.Go()
return
WinActivateTC()
{
	WinShow,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
	WinGet, WinTCID, ID,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
	DllCall("SwitchToThisWindow", "UInt", WinTCID, "UInt", 1)
	WinActivate,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
	WinMove,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe,,0,0,A_ScreenWidth,A_ScreenHeight
	WinMaximize,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
	IfWinActive,Total Commander (x64) 11.01 ahk_class TTOTAL_CMD ahk_exe TotalCMD64.exe
	{
		SetTimer,WinActivateTC,Delete
		Go.Go()
		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
}
}
; 此脚本到此行结束
;-----------------------------------

  

标签:2024.10,exe,21,ahk,快捷键,Total,Go,Commander,MasterSeeker
From: https://www.cnblogs.com/delphixx/p/18489184

相关文章

  • 【日记】什么叫做大人呢?(2108 字)
    正文昨天买了一桶酸奶。新希望。感觉没有之前光明的好喝。价签上写的是12.9,但是结帐的时候给了14.78。我觉得很奇怪,问了收银员。收银员说奶制品8.8折。我说跟这个没关系,价钱和扣款不一致。她也觉得很奇怪,拿着我的小票专门跑去看了一下。活动日期和商品名都对,就是价格标错......
  • 10.21
    大学为进一步推进无纸化考试,研开发一考试统。系统管理员能够创建专业方向、课程编号、任课教师等相关考试基础信息。教师和者生进行考试相关工作。系统与考试系统与考试有关的主要功能如下:(1)考试设置:教师设置试题(题目和答案),制定考试说明。考试时间和提醒时间等考试信息,录入参......
  • 2024.10.20 杂题
    P11208『STA-R8』轮回疯狂只执行操作一就是逆序对的个数,统计对于每一个\(a_i\)的逆序对个数为\(b_i\),然后模拟执行删除操作,如果删除操作比换位操作更优就更新答案。复杂度\(O(n\logn)\)record将最小的删除可以等价成往里加最大的数,倒着模拟即可。至于操作一,每次往数......
  • SP9685 ZTC - Zombie’s Treasure Chest 题解
    洛谷题目传送门双倍经验简单题。对于空间大小为\(s1\timess2\)时,显然最多可得到的价值为\(\max(s2\timesv1,s1\timesv2)\),剩下小于\(s1\timess2\)的部分选一个占用空间大的枚举就好。时间复杂度:\(O(T\lfloor\frac{m}{\max(s1,s2)}\rfloor)\),其中\(m=n\bmo......
  • 人工智能教育技术学10.21
    教案设计:人教版小学数学概率统计单元课程标题:探索生活中的概率与统计——让数据说话教学目标:知识与技能:使学生理解概率的基本概念,掌握简单事件的概率计算方法;学会收集、整理和分析数据,能够绘制基本的统计图表(如条形图、折线图、饼图)。过程与方法:通过小组合作学习,培养学生观察......
  • 10.21教案生成
    图形认识教案课程名称:图形的初步认识适用年级:小学二年级教学目标:知识与技能:学生能够识别并命名基本的平面图形(圆形、正方形、三角形、长方形)及其基本特征。过程与方法:通过观察、比较、分类等活动,培养学生观察力和逻辑思维能力。情感态度价值观:激发学生对数学的兴趣,培养合作......
  • 国内ChatGPT-4中文镜像网站整理合集(2024/10/21) ​
    ​一、GPT工具跟国内AI大模型整理(一)、GPT国内1.https://snakegpt.work ChatGPT中文版,支持GPT3.5/4/4o,可以用MJ绘画2.GPTCAT  GPT官网逆向版,支持GPT4o的实时语音对话,支持GPTo1-preview3.https://ai-panda.xyz/4.GPTDOG(二)、国内大模型1.文心一言:https://yiyan.baidu.co......
  • pbootcms访问页面出现PHP Fatal error: Allowed memory size of 13421
    问题描述客户在使用PbootCMS时,访问首页出现以下错误:PHPFatalerror:Allowedmemorysizeof134217728bytesexhausted(triedtoallocate262144bytes)inxxx\core\database\Sqlite.phponline173PHPFatalerror:Allowedmemorysizeof134217728bytesexh......
  • P11217 【MX-S4-T1】「yyOI R2」youyou 的垃圾桶(线段树上二分)
    link赛时是想到普通的线段树+二分\(O(q\log^2n)\),预期是70pts,实际50pts后面发现又是在longlong类型的计算中,1ll写成了1,然后爆负数,复杂度就错了,T了四个点开题,读起来是一个很套路的题目要对区间在线修改,区间加、(区间乘?),发现数据很大,那就是线段树、树状数组维护了思......
  • ChatGPT国内中文版镜像网站整理合集(2024/10/21)
    ​一、GPT中文镜像站① yixiaai.com 支持4o以及o1,支持MJ绘画② chat.lify.vip 支持通用全模型,支持文件读取、插件、绘画、AIPPT③ AIChat 支持GPT3.5/4,4o以及MJ绘画1.什么是镜像站镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在原......