首页 > 其他分享 >按快捷键F3显示或者隐藏UltraSearch主窗口 2023-2-10 (快捷键F3 位于键盘主键区数字4键正上方)

按快捷键F3显示或者隐藏UltraSearch主窗口 2023-2-10 (快捷键F3 位于键盘主键区数字4键正上方)

时间:2023-02-10 11:25:45浏览次数:60  
标签:exe ahk class 主键 F3 Go 快捷键 UltraSearch

 

按快捷键F3显示或者隐藏UltraSearch主窗口 2023-2-10 (快捷键F3 位于键盘主键区数字4键正上方)

按快捷键 ` 显示或者隐藏 Total Commander 10.52 主窗口 2023-2-5 (快捷键 ` 即波浪键~,位于Esc键正下方,位于Tab键正上方)

问:为什么选择UltraSearch

答:

一、支持在软件选项中自定义热键 Alt + F (显示或者隐藏主窗口的全局自定义快捷键)

二、因为UltraSearch支持 Synology群晖NAS的SFTP映射网络驱动器(映射软件选用 RaiDrive Version 2020.6.80 最新版本的RaiDrive会弹出广告窗口所以只好用旧版本了,我收集了从RaiDrive-1.4.1到现在的RaiDrive-2022.6.92-x64.exe所有版本的RaiDrive,另外有NetDrive.2.6.16作为备用映射网络驱动器,RaiDrive的映射盘符固定为Z:长期不变,NetDrive的映射盘符固定为Y:长期不变,两个驱动器在系统启动时全自动自动静默映射网络驱动器,一起映射,使用Z:,Y:作为备用)

三、因为Everything需要在选项-索引-文件夹中设置之后才支持 Synology群晖NAS的SFTP映射网络驱动器并且需要预先索引并且必需在索引完成之后才显示搜索结果,而UltraSearch能够在索引完成之前就显示部分搜索结果,果断抛弃Everything。

四、MasterSeeker不支持Synology群晖NAS的SFTP映射网络驱动器。

五、UltraSearch可以设置成简体中文的软件界面。

六、在主窗口右侧有预览文件的子窗口

七、选中文件后按快捷键 Ctrl + O 能够选择位置(打开选中文件所在的位置)

八、UltraSearch有免费的永久使用版本。

九、UltraSearch有Portable的绿色免安装版本。

 

问:UltraSearch的缺点是什么?

答:

缺点1:无法在FirPE或者Edgeless PE等 银灿IS903 量产U盘的CD-ROM中运行,说明UltraSearch依赖的运行库和资源文件比较多,不够绿色,不够存粹,我还是比较喜欢 Delphi 或者 C++ 的无控件无库无依赖无开发包的纯代码实现的应用程序软件。

缺点2:占用硬盘空间有点大。

缺点3:部分设置使用了注册表,无法通过解压缩ini文件的方法来重置自定义配置,只能通过AutoHotkey脚本来重置自定义配置(我的自定义配置是搜索本地硬盘所有分区和所有映射网络驱动器分区)没有完全用 ini 配置文件实现绿色便携。

缺点4:高级功能需要付费,正在寻找更好的替代品。

缺点5:不支持按照正则表达式搜索。

缺点6:无法自定义全文搜索正文内容的索引数据库文件的保存位置。

 

;
;   按快捷键F3显示或者隐藏UltraSearch主窗口 2023-2-10 (快捷键F3 位于键盘主键区数字4键正上方)
;   按快捷键 ` 显示或者隐藏 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
}



*/

#Persistent

; 强制自身以 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
*/
;-- 两次开关型循环
F3:: (ok:=!ok) ? Go.Go("bbb") : Go.Go("ccc")
bbb:
	; IfWinActive,UltraSearch
	IfWinActive,UltraSearch Free
	{
		WinMinimize,UltraSearch
		WinMinimize,ahk_class UltraSearch
	}
	else
	{
		IfWinNotExist,UltraSearch Free
		{
			IfExist,D:\Prog\UltraSearch\UltraSearch.exe
			{
				Run,D:\Prog\UltraSearch\UltraSearch.exe
			}
			else
			{
				MsgBox,0,,没有找到文件 D:\Prog\UltraSearch\UltraSearch.exe,5
			}
		}
		WinShow,UltraSearch
		WinShow,ahk_class UltraSearch Free
		WinActivate,UltraSearch
		WinActivate,ahk_class UltraSearch Free
		; WinMaximize,UltraSearch
		; WinMaximize,ahk_class UltraSearch Free
		WinMove,UltraSearch,,A_ScreenWidth/2,20,A_ScreenWidth/2-10,A_ScreenHeight-90
		WinMove,ahk_class UltraSearch,,A_ScreenWidth/2,20,A_ScreenWidth/2-10,A_ScreenHeight-90
		; 设置输入焦点到窗口的指定控件上.
		loop,5
		{
			ControlFocus, TJamCustomStyleSearchEdit2, UltraSearch
			ControlFocus, TJamCustomStyleSearchEdit2, ahk_class UltraSearch Free
			ControlSend, TJamCustomStyleSearchEdit2, {LCtrl Down}a{LCtrl Up}, UltraSearch
			ControlSend, TJamCustomStyleSearchEdit2, {LCtrl Down}a{LCtrl Up}, ahk_class UltraSearch Free
		}
	}
return
ccc:
	IfWinActive,UltraSearch Free
	{
		WinMinimize,UltraSearch
		WinMinimize,ahk_class UltraSearch
	}
	else
	{
		IfWinNotExist,UltraSearch Free
		{
			IfExist,D:\Prog\UltraSearch\UltraSearch.exe
			{
				Run,D:\Prog\UltraSearch\UltraSearch.exe
			}
			else
			{
				MsgBox,0,,没有找到文件 D:\Prog\UltraSearch\UltraSearch.exe,5
			}
		}
		WinShow,UltraSearch
		WinShow,ahk_class UltraSearch Free
		WinActivate,UltraSearch
		WinActivate,ahk_class UltraSearch Free
		; WinMaximize,UltraSearch
		; WinMaximize,ahk_class UltraSearch Free
		WinMove,UltraSearch,,A_ScreenWidth/2,20,A_ScreenWidth/2-10,A_ScreenHeight-90
		WinMove,ahk_class UltraSearch,,A_ScreenWidth/2,20,A_ScreenWidth/2-10,A_ScreenHeight-90
		; 设置输入焦点到窗口的指定控件上.
		loop,5
		{
			ControlFocus, TJamCustomStyleSearchEdit2, UltraSearch
			ControlFocus, TJamCustomStyleSearchEdit2, ahk_class UltraSearch Free
			ControlSend, TJamCustomStyleSearchEdit2, {LCtrl Down}a{LCtrl Up}, UltraSearch
			ControlSend, TJamCustomStyleSearchEdit2, {LCtrl Down}a{LCtrl Up}, ahk_class UltraSearch Free
		}
	}
return

;-- 两次开关型循环
`:: (ok:=!ok) ? Go.Go("ddd") : Go.Go("eee")
ddd:
	; 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
eee:
	; 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
}
}
}
*/




	; ++++++++++++++++++++++++++++++




 

 

 

请用 Keepass 连接 坚果云或者 

TeraCLOUD  的 WebDAV 文件服务 来集中统一管理所有的 网址、用户名、密码、口令等各种个人隐私信息数据。

 

下面隐藏内容为空白,这里放空白的隐藏内容便于大家支付积分,如不想支付积分可以忽略以下内容

[content_hide]

请在这里编辑您的隐藏内容

[/content_hide]

标签:exe,ahk,class,主键,F3,Go,快捷键,UltraSearch
From: https://www.cnblogs.com/delphixx/p/17108296.html

相关文章

  • CF319D Have You Ever Heard About the Word
    CF319DHaveYouEverHeardAbouttheWord好题,涉及复杂度分析,字符串结论,思维量较大。发现这种操作是不好同时进行的,我们只能较为“愚蠢”地模拟着操作,但是这种操作最多......
  • 淘宝数据库,主键如何设计以及自增ID的问题
    十三、淘宝数据库,主键如何设计的?聊一个实际问题:淘宝的数据库,主键是如何设计的?某些错的离谱的答案还在网上年复一年的流传着,甚至还成为了所谓的MySQL军规。其中,一个最明......
  • VS快捷键
    1、注释:a)单行注释:[ctrl+k,ctrl+c]或ctrl+/b)取消单行注释:[ctrl+k,ctrl+u](按下ctrl不放,再按k+u)c)多行注释:[alt+shift+A]d)多行注释:/**2、......
  • VS常用快捷键
    Ctrl+j=>列出所有成员Ctrl+Shift+空格键=>列出所有重载(也适用于JS)Ctrl+Alt+p=>附加到w3wp进程调试F12=>转到定义Ctrl+F12=>转到实现Shift+F1......
  • MyBatis-Plus——saveOrUpdate方法如何确定主键
    saveOrUpdate方法:先更新,更新失败返回0;发起查找,查找失败返回0,最后进行插入操作有三种执行情况1.插入的数据不带id插入成功。同时MyBatis-Plus会自动生成一个19位的id,默认主......
  • 按快捷键 ` 显示或者隐藏 Total Commander 10.52 主窗口 2023-2-5 (快捷键 ` 即波浪
      按快捷键`显示或者隐藏TotalCommander10.52主窗口2023-2-5    (快捷键`即波浪键~,位于Esc键正下方,位于Tab键正上方)  https://ds920.lanzoum.......
  • mybatis insert 返回主键id
    一开始是这样写的:<insertid="insertArticle"useGeneratedKeys="true"keyProperty="id">xxxx</insert>期望获取从实体中拿到id,id是空的。但数据是有成功写......
  • iTOP3568开发板Visual Studio Code 快捷键的使用
    在VisualStudioCode软件中使用快捷键可以增加自身的效率,一些常用的快捷键如下所示:F1打开可以输入命令F2重命名变量,方便重构F5运行和调试代码F12去到定义的地方shift......
  • markdown的快捷键学习
    markdown的快捷键学习二级标题三级标题四级标题字体样式粗体斜体斜体加粗体废弃字体引用https://www.cnblogs.com/monkeyCOdeBlogs/p/17094666.html图片![图......
  • markdown文本的常见编辑快捷键
    ##标题#+一级标题##+二级标题###+三级标题####+四级标题 ##字体风格样式**字体粗体** *字体斜体* ***字体斜体加粗体***~~废弃字体~~ #......