关于绿色便携免安装电脑软件管理的一些思考和测试(混合版,粗制滥造版,搬运版,草稿版,亲测可用版,长期改进版)

关于绿色便携免安装电脑软件管理的一些思考和测试(混合版,粗制滥造版,搬运版,草稿版,亲测可用版,长期改进版)

欢迎大家全选复制测试折腾分类整理保存

2020年09月08日19时19分

本文的段落分隔符是一行连续的斜杠符号

rem ////////////////////////////////////////

rem 请在South River WebDrive 2019映射的群晖WebDAV文件服务相关文件夹中执行此批处理脚本

rem ( DS920+(加满原装内存和SSD缓存,纯千兆光猫路由交换设备和6类网线) )

md d:PortableApps
set "rar=C:Program FilesWinRARWinRAR.exe"
"%rar%" x -y %~dp0*.zip d:PortableApps
rem ////////////////////////////////////////
Rem 安装AutoHotkey

rem 一键安装AutoHotkey自动化热键脚本语言编程环境

D:
cd PortableAppsAutoHotkey

rem 设置ahk文件类型关联到AutoHotkeyU32.exe
rem 以便运行脚本
rem 解压缩“AutoHotkey_1.1.30.01_setup.exe”安装文件得到setup.exe

rem 由于AutoHotkey的安装包会记住上次安装的位置,
rem 为了软件安装位置固定到 D:PortableAppsAutoHotkey 文件夹所以此处必需指定安装目标文件夹
D:PortableAppsAutoHotkeyahksetup.exe  /S /D=D:PortableAppsAutoHotkey

rem ////////////////////////////////////////
Rem 设置SciTE4Autohotkey右键
rem 添加ahk文件类型鼠标右键菜单
rem 运行、编辑、编译脚本的关联,感谢作者写出这么好的脚本
D:PortableAppsAutoHotkeyautohotkeyu32.exe D:PortableAppsAutoHotkeyMenuSetup.ahk
ping -n 5 127.0.0.1>nul
D:PortableAppsAutoHotkeyautohotkeyu32.exe D:PortableAppsAutoHotkeyMenuSetup.ahk

rem ////////////////////////////////////////
Rem 设置Launchy自动启动项目 shell:startup
Copy /y D:PortableAppsAHKManagerAHKManager.lnk C:UsersAdministratorAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup








rem ////////////////////////////////////////

rem ////////////////////////////////////////





/*
AutoHotkey 版本: 1.x
操作系统:    WinXP
作者:        甲壳虫<jdchenjian@gmail.com>
博客:        http://hi.baidu.com/jdchenjian
脚本说明:   此工具用来修改 AutoHotkey 脚本的右键菜单关联,适用于 AutoHotkey 安装版、绿色版。
脚本版本:   2009-01-21

修改作者:	兔子
更新说明:
2010.01.09	之前某个时间,修改AHK路径、编辑器路径、编译器路径,默认全部在当前目录下寻找
2010.01.09	去掉默认在新建菜单的勾
2010.06.21	如果SCITE为默认编辑器,则复制个人配置文件“SciTEUser.properties”到%USERPROFILE%
2010.06.25	修正因#NoEnv使%USERPROFILE%变量直接引用无效
2016.04.18	删除“2010.06.21”的改动
*/

; --- 20190207 晓亮修改 ---

#NoEnv
#SingleInstance, force
SendMode Input
SetWorkingDir %A_ScriptDir%

; 版本(仅用于显示)
Script_Version=v1.0.3.2

; AutoHotkey 原版的相关信息写在注册表HKCR主键中,
; 尝试是当前用户否有权操作该键,如果无权操作HKCR键(受限用户),
; 可通过操作注册表HKCU键来实现仅当前用户关联AHK脚本。
IsLimitedUser:=0
RegWrite, REG_SZ, HKCR, .test
if ErrorLevel
	IsLimitedUser:=1
RegDelete, HKCR, .test
if ErrorLevel
	IsLimitedUser:=1

if IsLimitedUser=0 ; 非受限用户操作HKCR键
{
	RootKey=HKCR
	Subkey=
}
else ; 受限用户操作HKCU键
{
	RootKey=HKCU
	Subkey=SoftwareClasses ; <-- 为简化后面的脚本,此子键须以“”结尾
}

; 检查是否存在AHK注册表项
RegRead, FileType, %RootKey%, %Subkey%.ahk
if FileType<>
{
	RegRead, value, %RootKey%, %Subkey%%FileType%ShellOpenCommand ;AHK路径
	AHK_Path:=PathGetPath(value)
	RegRead, value, %RootKey%, %Subkey%%FileType%ShellEditCommand ;编辑器路径
	Editor_Path:=PathGetPath(value)
	RegRead, value, %RootKey%, %Subkey%%FileType%ShellCompileCommand ;编译器路径
	Compiler_Path:=PathGetPath(value)
	RegRead, Template_Name, %RootKey%, %Subkey%.ahkShellNew, FileName ;模板文件名
}
else
	FileType=AutoHotkeyScript

if AHK_Path=
{
	IfExist, %A_ScriptDir%AutoHotkey.exe
		AHK_path=%A_ScriptDir%AutoHotkey.exe
}

if Editor_Path=
{
	IfExist, %A_ScriptDir%SciTESciTE.exe
		Editor_Path=%A_ScriptDir%SciTESciTE.exe
}

if Compiler_Path=
{
	IfExist, %A_ScriptDir%CompilerAhk2Exe.exe
		Compiler_Path=%A_ScriptDir%CompilerAhk2Exe.exe
}

if Template_Name=
	Template_Name=Template.ahk

; --- 20190207 晓亮修改 ---
;设置AHK默认文件夹为  D:PortableAppsAutoHotkey
AHK_path=D:PortableAppsAutoHotkeyAutoHotkeyU32.exe
Editor_Path=D:PortableAppsAutoHotkeySciTESciTE.exe
Compiler_Path=D:PortableAppsAutoHotkeyCompilerAhk2Exe.exe

Gui, Add, Tab, x10 y10 w480 h250 Choose1, 设置|说明
	Gui, Tab, 1
		Gui, Add, GroupBox, x20 y40 w460 h50 , “运行脚本”关联的 AutoHotkey
		Gui, Add, Edit, x35 y60 w340 h20 vAHK_Path, %AHK_path%
		Gui, Add, Button, x385 y60 w40 h20 gFind_AHK, 浏览

		Gui, Add, GroupBox, x20 y100 w460 h50 , “编辑脚本”关联的编辑器
		Gui, Add, Edit, x35 y120 w340 h20 vEditor_Path, %Editor_Path%
		Gui, Add, Button, x385 y120 w40 h20 gChoose_Editor, 浏览
		Gui, Add, Button, x430 y120 w40 h20 gDefault_Editor, 默认

		Gui, Add, GroupBox, x20 y160 w460 h50 , “编译脚本”关联的编译器
		Gui, Add, Edit, x35 y180 w340 h20 vCompiler_Path, %Compiler_Path%
		Gui, Add, Button, x385 y180 w40 h20 gChoose_Compiler, 浏览
		Gui, Add, Button, x430 y180 w40 h20 gDefault_Compiler, 默认

		Gui, Add, Checkbox, x35 y230 w270 h20 gNew_Script vNew_Script, 右键“新建”菜单中增加“AutoHotkey 脚本”
		Gui, Add, Button, x310 y230 w80 h20 vEdit_Template gEdit_Template, 编辑脚本模板
		Gui, Add, Button, x400 y230 w80 h20 vDelete_Template gDelete_Template, 删除脚本模板

	Gui, Tab, 2
		Gui, Font, bold
		Gui, Add, Text,, AutoHotkey 脚本关联工具  ScriptSetting %Script_Version%
		Gui, Font
		Gui, Font, CBlue underline
		Gui, Add, Text, gWebsite, 作者:甲壳虫 <jdchenjian@gmail.com>`n`n博客:http://hi.baidu.com/jdchenjian
		Gui, Font
		Gui, Add, Text, w450, 此工具用来修改 AutoHotkey 脚本的右键菜单关联,适用于 AutoHotkey 安装版、绿色版。
		Gui, Add, Text, w450, 您可以用它来修改默认脚本编辑器、编译器,修改默认的新建脚本模板。设置后,在右键菜单中添加“运行脚本”、“编辑脚本”、“编译脚本”和“新建 AutoHotkey 脚本”等选项。
		Gui, Add, Text, w450, 要取消脚本的系统关联,请按“卸载”。注意:卸载后您将无法通过双击来运行脚本,也不能通过右键菜单来启动脚本编辑器...

Gui, Tab
Gui, Add, Button, x100 y270 w60 h20 Default gInstall, 设置
Gui, Add, Button, x200 y270 w60 h20 gUninstall, 卸载
Gui, Add, Button, x300 y270 w60 h20 gCancel, 取消

Gui, Show, x250 y200 h300 w500 CEnter, ScriptSetting %Script_Version%
GuiControl, Disable, Edit_Template ; 使“编辑脚本模板”按钮无效
IfNotExist, %A_WinDir%ShellNew%Template_Name%
	GuiControl, Disable, Delete_Template ; 使“删除脚本模板”按钮无效

; 当鼠标指向链接时,指针变成手形
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE")

; --- 20190207 晓亮修改 ---
goto,Install
return

; 改变鼠标指针为手形
WM_MOUSEMOVE(wParam,lParam)
{
	global hCurs
	MouseGetPos,,,,ctrl
	if ctrl in static2
		DllCall("SetCursor","UInt",hCurs)
	return
}
return

GuiClose:
GuiEscape:
Cancel:
	ExitApp

	; 查找 AutoHotkey 主程序
Find_AHK:
	Gui +OwnDialogs
	FileSelectFile, AHK_Path, 3, , 查找 AutoHotkey.exe, AutoHotkey.exe
	if AHK_Path<>
		GuiControl,,AHK_Path, %AHK_Path%
	gosub Default_Compiler
return

; 选择脚本编辑器
Choose_Editor:
	Gui +OwnDialogs
	FileSelectFile, Editor_Path, 3, , 选择脚本编辑器, 程序(*.exe)
	if Editor_Path<>
		GuiControl,,Editor_Path, %Editor_Path%
return

; 默认脚本编辑器
Default_Editor:
	IfExist, %A_ScriptDir%SciTESciTE.exe
		Editor_Path=%A_ScriptDir%SciTESciTE.exe
	else ifExist, %A_WinDir%system32notepad.exe
			Editor_Path=%A_WinDir%system32notepad.exe
	GuiControl,, Editor_Path, %Editor_Path%
return

; 选择脚本编译器
Choose_Compiler:
	Gui +OwnDialogs
	FileSelectFile, Compiler_Path, 3, , 选择脚本编译器, 程序(*.exe)
	if Compiler_Path<>
		GuiControl,,Compiler_Path, %Compiler_Path%
return

; 默认脚本编译器
Default_Compiler:
	GuiControlGet, AHK_Path
	SplitPath, AHK_Path, ,AHK_Dir
	IfExist, %AHK_Dir%CompilerAhk2Exe.exe
	{
		Compiler_Path=%AHK_Dir%CompilerAhk2Exe.exe
		GuiControl,, Compiler_Path, %Compiler_Path%
	}
return

; 设置
Install:
	Gui, Submit
	IfNotExist, %AHK_Path%
	{
		MsgBox, 16, ScriptSetting %Script_Version%, AutoHotkey 路径错误 !
		return
	}

	IfNotExist, %Editor_Path%
	{
		MsgBox, 16, ScriptSetting %Script_Version%, 编辑器路径错误 !
		return
	}

	IfNotExist, %Compiler_Path%
	{
		MsgBox, 16, ScriptSetting %Script_Version%, 编译器路径错误 !
		return
	}

	; 写入注册表
	RegWrite, REG_SZ, %RootKey%, %Subkey%.ahk,, %FileType%
	if New_Script=1
	{
		RegWrite, REG_SZ, %RootKey%, %Subkey%.ahkShellNew, FileName, %Template_Name%
		IfNotExist, %A_WinDir%ShellNew%Template_Name%
			gosub Create_Template
	}
	else
	{
		; --- 20190207 晓亮修改 ---
		; --- 此处不要删除右键新建ahk文件的菜单所以注释掉此代码
		;RegDelete, %RootKey%, %Subkey%.ahkShellNew
		IfExist, %A_WinDir%ShellNew%Template_Name%
			gosub Delete_Template
	}

	RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%,, AutoHotkey 脚本
	RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%DefaultIcon,, %AHK_Path%`,1
	RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%Shell,, Open
	RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%ShellOpen,, 运行脚本
	RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%ShellOpenCommand,, "%AHK_Path%" "`%1" `%*
	RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%ShellEdit,, 编辑脚本
	RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%ShellEditCommand,, "%Editor_Path%" "`%1"
	RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%ShellCompile,, 编译脚本
	IfInString, Compiler_Path, Ahk2Exe.exe
		RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%ShellCompileCommand,, "%Compiler_Path%" /in "`%1"
	else
		RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%ShellCompileCommand,, "%Compiler_Path%" "`%1"

/*		新版的scite不需要将“SciTEUser.properties”放在“USERPROFILE”目录下了
if Editor_Path=%A_ScriptDir%SciTESciTE.exe
{
EnvGet,USERPROFILE,USERPROFILE
FileCopy,%A_ScriptDir%SciTESciTEUser.properties,%USERPROFILE%SciTEUser.properties,1
}
*/

	;MsgBox, 64, ScriptSetting %Script_Version%, 设置完毕 !
	ExitApp

	; 卸载
Uninstall:
	; --- 20190207 晓亮修改 ---
	;MsgBox, 36, ScriptSetting %Script_Version%
	;, 注意:卸载后您将无法通过双击来运行脚本,也不能通过右键菜单来启动脚本编辑器...`n`n确定要取消 AHK 脚本的系统关联吗 ?
	;IfMsgBox, Yes
	;{
	;RegDelete, %RootKey%, %Subkey%.ahk
	;RegDelete, %RootKey%, %Subkey%%FileType%
	;gosub Delete_Template
	;ExitApp
	;}
return

; 编辑脚本模板
Edit_Template:
	GuiControlGet, Editor_Path
	IfNotExist, %Editor_Path%
	{
		MsgBox, 64, ScriptSetting %Script_Version%, 脚本编辑器路径错误 !
		return
	}
	IfNotExist, %A_WinDir%ShellNew%Template_Name%
		gosub Create_Template
	Run, %Editor_Path% %A_WinDir%ShellNew%Template_Name%
return

; 使编辑脚本模板按钮有效/无效
New_Script:
	GuiControlGet, New_Script
	if New_Script=0
		GuiControl, Disable, Edit_Template
	else
		GuiControl, Enable, Edit_Template
return

; 新建脚本模板
Create_Template:
	GuiControlGet, AHK_Path
	FileGetVersion, AHK_Ver, %AHK_Path%

	FileAppend,
	(
/*
AutoHotkey 版本: %AHK_Ver%
操作系统:    %A_OSVersion%
作者:        %A_UserName%
网站:        http://www.AutoHotkey.com
脚本说明:
脚本版本:   v1.0
*/

#NoEnv
SendMode Input
SetWorkingDir `%A_ScriptDir`%

	), %A_WinDir%ShellNew%Template_Name%

	GuiControl, Enable, Delete_Template ; 使“删除脚本模板”按钮有效
return

; 删除脚本模板
Delete_Template:

	; --- 20190207 晓亮修改 ---
	;MsgBox, 36, ScriptSetting %Script_Version%
	;	, 要删除当前的 AHK 脚本模板吗 ?`n`n脚本模板被删除后,仍可通过本工具重建模板。
	;IfMsgBox, Yes
	;FileDelete, %A_WinDir%ShellNew%Template_Name%
	;GuiControl, Disable, Delete_Template ; 使“删除脚本模板”按钮无效
return

; 打开网站
Website:
	Run, http://hi.baidu.com/jdchenjian
return

; 从注册表值字符串中提取路径
PathGetPath(pSourceCmd)
{
	local Path, ArgsStartPos = 0
	if (SubStr(pSourceCmd, 1, 1) = """")
		Path := SubStr(pSourceCmd, 2, InStr(pSourceCmd, """", False, 2) - 2)
	else
	{
		ArgsStartPos := InStr(pSourceCmd, " ")
		if ArgsStartPos
			Path := SubStr(pSourceCmd, 1, ArgsStartPos - 1)
		else
			Path = %pSourceCmd%
	}
	return Path
}







rem ////////////////////////////////////////

rem ////////////////////////////////////////


绿色免安装电脑软件管理规范

1、优先选用官方网站下载的原版软件来制作免安装软件。

2、功能类似的软件只保留最稳定,最容易使用,最强大的。

3、所有绿色免安装电脑软件都保存在独立的专用子文件夹中,保存路径是:D:PortableApps,独立的专用子文件夹名必需与启动主文件名完全相同,但是扩展名可以是exe或者bat。
例如:绿色免安装软件MasterSeeker的保存位置是:
D:PortableAppsMasterSeekerMasterSeeker.exe

4、所有绿色免安装电脑软件的最新版本的独立的专用子文件夹都用WinRAR右键菜单添加到ZIP压缩包中,压缩包按掩码“-yyyy年mm月dd日hh时mm分ss秒”产生压缩包文件名。

5、为了防止重复保存,在保存绿色免安装电脑软件的压缩包文件到群晖NAS时先用TotalCommander搜索检查一下是否已经存在类似的软件。

6、部署绿色免安装电脑软件时:

第1步:复制ZIP压缩包到D:PortableApps
第2步:全选ZIP压缩包并右键“解压到当前文件夹”
第3步:运行AHKSetup.bat安装AutoHotkey运行库和SciTE4AHK的右键菜单
第4步:配置AHKManager自动启动项目
第5步:配置并检查Launchy的自动启动和相关设置

7、常用的绿色免安装电脑软件制作网址和工具软件有:
https://portableapps.com/
https://www.portablesoft.org/
https://portableappk.com/

2020年09月08日








rem ////////////////////////////////////////

rem ////////////////////////////////////////





;~ AHKManager.ahk
;AHK管理器AHKManager.ahk
;~ isShow:=true
;源码
;~ 将exe文件发送到 自启动目录

; 作者:sunwind
; 日期:2013年1月29日,周二,下午3时58分
 
;描述:candy 插件 “将exe文件发送到 自启动目录”
;帮⑥① 2013-01-29 11:30:03 解决 :“经常有人喊我帮他某个软件设置成开机启动”
;配置位置:exe.ini 或者exe文件类型下
;配置项:SendTo自启动		=run|Extension发送到自启动目录.ahk  "{file:pathfull}" "{file:namenoext}"
;~ path_exe=%1%
;;   path_exe=D:toolsListary4Listary.exe
;;   SplitPath,path_exe,fileName
;;   ;~ alias=%2%
;;   RegRead, folder_startup, HKEY_CURRENT_USER, SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders, Startup
;;   FileCreateShortcut, %path_exe%, %folder_startup%%fileName%.lnk
;;   IfExist,%folder_startup%%alias%.lnk
;;   	TrayTip,,已经成功设置%alias%自启动!,10
;;   Sleep,3000

;~ 按 {Ctrl} + {Alt} + {F12} 立即无条件终止所有脚本
Hotkey,^!F12,ExitThisApp
ExitThisApp()
{
	gosub,ExitSubNow
	ExitApp
}
;by Sixtyone At 2016.4.10
;更新说明
/*
2016.4.24:
1.运行#脚本后,gui自动隐藏;
2.启动脚本目录后,gui自动隐藏。
2016.4.17:
1. 增加过滤中使用%A_ScriptDir%变量。
2016.4.14:
1.修复2016.4.13版本中的1个bug;
2.添加文件(夹)过滤功能:添加到过滤中的文件(夹),将不会被读取到AHK管理器中;
3.修复之前版本某些脚本不能关闭问题;
4.修复脚本不能正确读取ini配置问题。
2016.4.13:
1.更新添加“Scripts文件夹内的第一层子文件夹脚本”,但所有脚本不能同名。
2016.4.11:
1.脚本库中启动条目后,焦点自带设置为上一条,正在运行库同;
2.更新脚本库双击运行脚本,正在运行库双击关闭脚本;
3.脚本库增加右键菜单:"编辑","运行"--正在运行库增加右键菜单:"编辑","重载","关闭"。
*/
#SingleInstance Force
#NoEnv
;#Warn
SetWorkingDir %A_ScriptDir%
Process, Priority,, High
DetectHiddenWindows,On
Menu, Tray, NoStandard                  ;删除自带托盘菜单
Menu, tray, add, 管理,ShowGui  ;  显示Gui
Menu, tray, add  ; 创建分隔线.
Menu, tray, add ,过滤,Menu_Tray_过滤        ;  过滤
Menu, tray, add ,脚本目录,Menu_Tray_OpenDir          ;  脚本目录
Menu, tray, add ,重启管理器,Menu_Tray_Reload          ; 重启
Menu, tray, Add
Menu, tray, Add,帮助,Help ;Help
Menu, tray, Add,关于,About ;关于
Menu, tray, Add
Menu, tray, Add, 退出, ExitSub                  ; 创建    退出
Menu, Tray, Default, 管理  ;;默认  菜单:配置
Menu, Tray, Icon, Shell32.dll, 258
;IntelligentScript:
Gui,Destroy
Gui Add, ListView, x8 y30 w200 h400 AltSubmit vScriptLibrary g运行 , 脚本名称
Gui Add, Text, x10 y3 w120 h23 +0x200, 脚本库
Gui Add, ListView, x233 y30 w200 h400 AltSubmit vScriptRun g运行2, 脚本名称
Gui Add, Text, x234 y3 w120 h23 +0x200, 已运行脚本
Gui Add, Button, x440 y30 w60 h42 gtsk_open, 启动脚本
Gui Add, Button, x440 y100 w60 h42 gtsk_restart, 重载脚本
Gui Add, Button, x440 y170 w60 h42 gtsk_close, 关闭脚本
Gui Add, Button, x440 y240 w60 h42 gMenu_Tray_OpenDir, 脚本目录
Gui Add, Button, x440 y310 w60 h42 gMenu_Tray_Reload, 重启管理器
Gui Add, Button, x440 y380 w60 h42 gExitSub, 退出
;Gui Show,, AHK管理器
Gui Default
Gui,ListView,ScriptLibrary
scriptCount = 0
IniRead,Golv,过滤.ini,过滤
OpenList := Array()
UnOpenList := Array()
FileCreateDir,%A_ScriptDir%scripts
loop, %A_ScriptDir%scripts*.ahk,,1
{
	_Golv=0
	loop,Parse,Golv,`n,`r                  ;增加过滤判断
	{
		StringReplace,_GolvPath,A_LoopField,`%A_ScriptDir`%,%A_ScriptDir%
		IfInString,A_LoopFileLongPath ,%_GolvPath%
		{
			_Golv=1
			break
		}
	}
	if  _Golv=1
		continue
	if !(A_LoopFileLongPath~="i).+?\scripts\[^\]*\?[^\]+.ahk")                          ;增加一层子文件读取
		continue
	StringReplace, MenuName, A_LoopFileName, .ahk
	scriptCount += 1
	%MenuName%_Path :=A_LoopFileLongPath
	%MenuName%_Dir :=A_LoopFileDir
	scriptsName%scriptCount% := A_LoopFileName
	;scriptsOpened%scriptCount% = 0
	UnOpenList.Insert(MenuName)
}
InsertionSort(UnOpenList)
for Index, MenuName in UnOpenList
{
	LV_Add("",MenuName)
}
LV_ModifyCol()
gosub tsk_openAll
;Gui,Show
return
运行:
if A_GuiEvent = DoubleClick
{
	goto,tsk_open
}
return
运行2:
	if A_GuiEvent = DoubleClick
		goto,tsk_close
return
GuiContextMenu:  ; 运行此标签来响应右键点击或按下 Appskey.
	if A_GuiControl = ScriptLibrary  ; 这个检查是可选的. 让它只为 ListView 中的点击显示菜单.
	{
		Gui,Default
		Gui,ListView,ScriptLibrary
		RowNumber = 0
		loop,%scriptCount%
		{
			RowNumber := LV_GetNext(RowNumber)
			if not RowNumber
				return
			break
		}
		Menu,PopC,Add,编辑,P_edit
		Menu,PopC,Add,运行,tsk_open
		Menu,PopC,Show
		return
	}
	if  A_GuiControl = ScriptRun
	{
		Gui,Default
		Gui,ListView,ScriptRun
		RowNumber = 0
		loop,%scriptCount%
		{
			RowNumber := LV_GetNext(RowNumber)
			if not RowNumber
				return
			break
		}
		Menu,PopC2,Add,编辑,P_edit
		Menu,PopC2,Add,重载,tsk_restart
		Menu,PopC2,Add,关闭,tsk_close
		Menu,PopC2,Show
		return
	}
return
P_edit:
	LV_GetText(thisScript, RowNumber)
	P_editpath :=%thisScript%_path
	Run, D:ProgramsAutoHotkeySciTESciTE.exe  "%P_editpath%"
return
tsk_open:
	Gui,Default
	Gui,ListView,ScriptLibrary
	RowNumber = 0
	loop,%scriptCount%
	{
		RowNumber := LV_GetNext(RowNumber)
		if not RowNumber
			return
		LV_GetText(thisScript, RowNumber)
		Run,% %thisScript%_Path,% %thisScript%_Dir,,%thisScript%
		IfInString, thisScript, #
		{
			Gui, Hide
			return
		}
		;scriptsOpened%A_Index% := 1
		break
	}
	Gui,ListView,ScriptRun
	LV_Add("",ThisScript)
	LV_ModifyCol()
	Gui,ListView,ScriptLibrary
	loop, %scriptCount%
	{
		LV_GetText(outputname,A_Index,1)
		if (outputname=ThisScript)
		{
			LV_Delete(A_Index)
			if A_Index<>1
			{
				LV_Modify(A_Index-1, "Select")
			}
			else
			{
				LV_Modify(1, "Select")
			}
			break
		}
	}
	LV_ModifyCol()
return
tsk_close:
	Gui,Default
	Gui,ListView,ScriptRun
	RowNumber = 0
	loop,%scriptCount%
	{
		RowNumber := LV_GetNext(RowNumber)
		if not RowNumber
			return
		LV_GetText(thisScript, RowNumber)
		ID:=%thisScript%
		WinClose, ahk_pid %ID%
		IfWinExist,ahk_pid %ID%
			Process,Close,%ID%
		;scriptsOpened%A_Index% := 0
		break
	}
	Gui,ListView,ScriptLibrary
	LV_Add("",ThisScript)
	LV_ModifyCol()
	Gui,ListView,ScriptRun
	loop, %scriptCount%
	{
		LV_GetText(outputname,A_Index,1)
		if (outputname=thisScript)
		{
			LV_Delete(A_Index)
			if A_Index<>1
			{
				LV_Modify(A_Index-1, "Select")
			}
			else
			{
				LV_Modify(1, "Select")
			}
			break
		}
	}
	LV_ModifyCol()
return
tsk_restart:
	Gui,Default
	Gui,ListView,ScriptRun
	RowNumber = 0
	loop,%scriptCount%
	{
		RowNumber := LV_GetNext(RowNumber)
		if not RowNumber
			return
		LV_GetText(thisScript, RowNumber)
		ID:=%thisScript%
		WinClose, ahk_pid %ID%
		IfWinExist,ahk_pid %ID%
			Process,Close,%ID%
		Run,% %thisScript%_Path,% %thisScript%_Dir,,%thisScript%
		break
	}
return
tsk_openAll:
	loop, %scriptCount%
	{
		thisScript := scriptsName%A_Index%
		StringReplace, thisScript, thisScript, .ahk
		;if scriptsOpened%A_Index% = 0
		;{
		IfInString, thisScript, _          ;IfInString,%thisScript%_Path,%A_ScriptDir%Scripts_    不自动启动_文件夹内的脚本
		{
			continue
		}
		IfInString, thisScript, #
		{
			continue
		}
		Run, % %thisScript%_Path,% %thisScript%_Dir,,%thisScript%
		;scriptsOpened%A_Index% = 1
		Gui,Default
		Gui,ListView,ScriptRun
		LV_Add("",thisScript)
		LV_ModifyCol()
		Gui,ListView,ScriptLibrary
		loop, %scriptCount%
		{
			LV_GetText(outputname,A_Index,1)
			if (outputname=thisScript)
			{
				LV_Delete(A_Index)
				break
			}
		}
		LV_ModifyCol()
		;}
	}
	;Gui,Show
return
Menu_Tray_过滤:
	Run, Notepad.exe  过滤.ini
return
Menu_Tray_OpenDir:
	FileCreateDir,%A_ScriptDir%scripts
	Run, %A_ScriptDir%scripts
	Gui,Hide
return
Menu_Tray_Reload:
	Gui,Hide
	Gui,Default
	Gui,ListView,ScriptRun
	loop % LV_GetCount()
	{
		LV_GetText(thisScript, A_Index)
		ID:=%thisScript%
		WinClose, ahk_pid %ID%
		IfWinExist,ahk_pid %ID%
			Process,Close,%ID%
	}
	Reload
return
GuiEscape:
GuiClose:
	Gui, Hide
return
ExitSub:
	MsgBox,260,是否退出?,退出脚本,将退出所有经过AHK管理器启动的脚本,你是否确认退出?
	IfMsgBox No
		return
ExitSubNow:
	Gui,Hide
	Gui,Default
	Gui,ListView,ScriptRun
	loop % LV_GetCount()
	{
		LV_GetText(thisScript, A_Index)
		ID:=%thisScript%
		WinClose, ahk_pid %ID%
		IfWinExist,ahk_pid %ID%
			Process,Close,%ID%
	}
	Gui,Destroy
	ExitApp
return
InsertionSort(ByRef array)
{
	target := Array()
	count := 0
	for Index, Files in array
	{
		files%Index% := Files
		count += 1
	}
	j := 2
	while (j <= count)
	{
		key := files%j%
		i := j-1
		while (i >= 0 && key < files%i%)
		{
			k := i+1
			files%k% := files%i%
			i -= 1
		}
		k := i+1
		files%k% := key
		j += 1
	}
	loop, %count%
	{
		target.Insert(files%A_Index%)
	}
	array := target
}
About:
	MsgBox,AHK管理器`n版本号:2016.4.24`nCopyRight?2016 Sixtyone.  All Rights Reserved.`n`n关于作者:`n`tName:Sixtyone`n`tQQ:576642385
return
Help:
	MsgBox,将AHK脚本放在脚本目录下进行管理:`n1.以_开头的脚本不会自动加载`n2.以#开头的脚本为临时脚本即运行完就退出`n3.脚本名字不能有空格及除_、#以为的符号`n4.脚本不能为快捷方式
return
!`::
	;~ isShow:=!isShow
	;~ if(isShow)
	;~ {
ShowGui:
	Gui,Show,,AHK管理器
	;~ }
	;~ else
	;~ Gui,Hide
return
;~ 作者:sixtyone
;~ 链接:https://www.jianshu.com/p/d88f47fa431d
;~ 來源:简书
;~ 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

;批量删除空白行的正则表达式  ^[st]*n








rem ////////////////////////////////////////


rem ////////////////////////////////////////





;~  %A_ScriptDir%scripts定时关闭广告窗口.ahk

;~ 定时自动关闭弹出广告窗口
;~ 请使用 AHK管理器AHKManager.ahk 管理和调用此脚本

#SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行。
#Persistent  ;让脚本持久运行(即直到用户关闭或遇到 ExitApp)。
SetTimer,设置此脚本的运行参数ConfigThisScript,-1000
SetTimer,关广告窗口删除广告文件,3000
return
;
关广告窗口删除广告文件()
{
	DetectHiddenWindows,On
	SetTitleMatchMode,2
	FileDelete,D:PersonalDesktop网址大全.lnk
	; 请用 AHKInfo 1.3.5 窗口信息查询工具来获取窗口标题和窗口类名
	WinClose,向日葵远程控制 ahk_class SDL_app ahk_exe SunloginClient.exe
	WinClose,向日葵远程控制
	WinClose,ahk_class SDL_app ahk_exe SunloginClient.exe
	WinClose,ahk_exe SunloginClient.exe
	WinClose, 360每日趣玩 ahk_exe 360DayPop.exe,
	WinClose,ahk_exe 360NewsPop.exe
	WinClose, 同花顺机器人 ahk_class 核新同花顺智能机器人,
	WinClose, ahk_class Q360RemindSClass,
	WinClose, ahk_class MsgSrvPushTipClass ahk_exe MultiTip.exe,
	WinClose, 360每日趣玩 ahk_exe 360DayPop.exe,
	WinClose,ahk_exe DesktopRest.exe,
	WinClose, 到期抄报税提示 ahk_class WindowsForms10.Window.8.app.0.1ed9395_r14_ad1 ahk_exe Aisino.Framework.Startup.exe,
	WinClose, 调查问卷 ahk_class WindowsForms10.Window.8.app.0.1ed9395_r14_ad1 ahk_exe Aisino.Framework.Startup.exe,
	WinClose, SysMessageBox ahk_class WindowsForms10.Window.8.app.0.1ed9395_r14_ad1 ahk_exe Aisino.Framework.Startup.exe, 提示
	WinClose, 程序更新 ahk_class TfrmCheckNewVersion ahk_exe USBSafelyRemove.exe, 了解更多...
	WinClose, 小火箭通用加速 ahk_class TXGuiFoundation ahk_exe QQPCRealTimeSpeedup.exe,
	WinClose,ahk_exe dep360.exe,
	WinClose, 360每日趣玩
	WinClose, ahk_exe 360DayPop.exe,
	WinClose, 小浣熊资讯 ahk_class ATL:10150DF0 ahk_exe RaconWifimini.exe, UIActiveX
	WinClose, 年末大促,错过再等一年 ahk_class SDL_app ahk_exe sunloginclient.exe,
	WinClose, ahk_class TitleWnd ahk_exe SGNews.exe,
	WinClose,ahk_exe SGNews.exe,
	WinClose,USB KEY PIN ahk_class #32770 ahk_exe Aisino.Framework.Startup.exe, 请输入KEY的PIN
	WinClose, FF新推荐
	WinClose,热点资讯
	WinClose,ahk_class Q360RemindSClass ahk_exe 360Speedld.exe,
	WinClose, ahk_class SGPopBubbleWindow ahk_exe SGTool.exe,
	WinClose, 今日推荐
}
设置此脚本的运行参数ConfigThisScript()
{
	;当此脚本已经运行时自动替换旧实例再次运行。
#SingleInstance,force
	;让脚本持久运行(即直到用户关闭或遇到 ExitApp)。
#Persistent
	;不检查空变量是否为环境变量(建议所有新脚本使用)。
#NoEnv
	;用强制的方法激活窗口。阻止任务栏按钮的闪烁.
#WinActivateForce
	;不显示托盘图标。
	;~ #NoTrayIcon
	;启用或禁用可能产生错误的特定状况时的警告,例如书写错误或缺少全局声明
	;~ #Warn
	;改变脚本的当前工作目录。
	SetWorkingDir,%A_ScriptDir%
	;设置脚本可以“看见”隐藏的窗口。
	DetectHiddenWindows,On
	;窗口标题匹配模式改成只需某个位置必须包含WinTitle。而不是完全匹配。
	SetTitleMatchMode,2
	;SendInput 通常更快更可靠. 缓存了发送期间任何物理的键盘或鼠标活动, 避免了在发送时夹杂用户的键击.
	SendMode,Input
	;要看源代码语句的解释请自己搜索AutoHotkey的CHM中文帮助文件吧,选中单词后按帮助快捷键 F1
	CoordMode,Mouse,Screen
	CoordMode,Pixel,Screen
	CoordMode,ToolTip,Screen
	ListLines,Off
	SetBatchLines,-1
	SetStoreCapsLockMode, On
	;~ SetBatchLines,
	;~ SetKeyDelay,
	;~ SetWinDelay,
	;~ SetControlDelay,
}
;

;===== 脚本结束 =====









rem ////////////////////////////////////////

rem ////////////////////////////////////////







;~ %A_ScriptDir%scripts设置随系统启动的程序.ahk

#SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行。
#Persistent  ;让脚本持久运行(即直到用户关闭或遇到 ExitApp)。
#NoEnv  ;不检查空变量是否为环境变量(建议所有新脚本使用)。
#WinActivateForce  ;用强制的方法激活窗口。阻止任务栏按钮的闪烁.
;~ #NoTrayIcon  ;不显示托盘图标。
;~ #Warn
SetWorkingDir,%A_ScriptDir%  ;改变脚本的当前工作目录。
DetectHiddenWindows,On  ;设置脚本可以“看见”隐藏的窗口。
SetTitleMatchMode,2  ;窗口标题匹配模式改成某个位置必须包含WinTitle。

;~ 【管理员】徐晓亮(595076941)  11:34:40
;~ 071-在电脑启动时自动设置WPS2019的定时备份时间间隔为1分钟备份文件保存的位置为D盘-20200809

;~ 【管理员】徐晓亮(595076941)  11:38:37
;~ 备份文件夹删除后WPS2019会自动重新新建文件夹
;~ 这一点非常好

;~ 每次启动电脑是通过导入注册表reg文件自动设置WPS的备份时间间隔为1分钟,备份位置是D:kingsoftoffice6backup

;~ 每次启动都覆盖一下设置,防止丢失设置,丢失文件

;~ 唯一缺点时,有泄密的可能,

;~ 当然也可以启动时调用WinRAR按照日期掩码生成压缩包名称并加密压缩一下备份文件,然后删除WPS备份文件,这样就不容易泄密了
loop,5
{
	FileCopy,"D:ProgramsAHKManagerscriptsregconfig.ini","C:Program FilesOraySunLoginSunloginClient",1
	Process,Close,SunloginClient.exe
}

IfExist,% "C:Program FilesOraySunLoginSunloginClientSunloginClient.exe"
{
	Run,"C:Program FilesOraySunLoginSunloginClientSunloginClient.exe"
}

IfExist,% "D:ProgramsAHKManagerscriptsregAutoBackupWPS.reg"
{
	Run %comspec% /c "regedit /s D:ProgramsAHKManagerscriptsregAutoBackupWPS.reg"
}


IfExist,% "D:ProgramsTrafficMonitor显示网速TrafficMonitor显示网速.exe"
{
	Run,"D:ProgramsTrafficMonitor显示网速TrafficMonitor显示网速.exe"
}

IfExist,% "D:ProgramsAHKManagerscriptsdatfavorite3.dat"
{
	FileCopy,% "D:ProgramsAHKManagerscriptsdatfavorite3.dat",C:UsersAdministratorAppDataRoamingSogouExplorerfavorite3.dat,1
}

;~ IfExist,% "D:ProgramsRunZRunZ.ahk"
;~ Run,% "D:ProgramsRunZRunZ.ahk"
IfExist,% "D:ProgramsLaunchyLaunchy.exe"
	Run,% "D:ProgramsLaunchyLaunchy.exe"
;~ SetTimer,WinCloseLaunchy,100
;~ WinCloseLaunchy()
;~ {
;~ WinClose, Launchy ahk_class QTool ahk_exe Launchy.exe
;~ WinCloseTime +=1
;~ if(WinCloseTime>30)
;~ SetTimer,WinCloseLaunchy,Delete
;~ }

IfExist,% "D:ProgramsWiseDesktopWiseDesktop.exe"
	Run,% "D:ProgramsWiseDesktopWiseDesktop.exe"
;~ IfExist,% "C:Program Files (x86)USB Safely RemoveUSBSafelyRemove.exe"
;~ Run,% "C:Program Files (x86)USB Safely RemoveUSBSafelyRemove.exe"
SetTimer,16运行国税金税盘开票软件,-100
return
16运行国税金税盘开票软件()
{
	SetTimer,运行开票软件,-500
	SetTimer,激活登录窗口,500
	SetTimer,单击登录窗口中的确定按钮,500
	SetTimer,关闭上报汇总已成功提示窗口,500
	SetTimer,等待主窗口出现后停止并删除所有Timer定时器,500
}
运行开票软件()
{
	;~ FileCopy,;;;;;D:开票软件913205067037151092.2ConfigCommonConfigBak.xml,D:开票软件913205067037151092.2ConfigCommonConfig.xml,1
	Sleep,500
	IfExist,D:开票软件MainExecute.exe
	{
		Process,Exist,Aisino.Framework.Startup.exe
		if (%ErrorLevel%=0)
		{
			IfWinNotExist,SysMessageBox ahk_class WindowsForms10.Window.8.app.0.2bb23b_r11_ad1 ahk_exe Aisino.Framework.Startup.exe, 提示
			{
				IfWinNotExist,增值税发票税控开票软件
					Run,D:开票软件MainExecute.exe
			}
		}
	}
}
激活登录窗口()
{
	WinGet, WinID, ID,税控发票开票软件
	DllCall("SwitchToThisWindow", "UInt", WinID, "UInt", 1)
}
单击登录窗口中的确定按钮()
{
	ControlClick, WindowsForms10.BUTTON.app.0.1ed9395_r14_ad12, 税控发票开票软件 ahk_class WindowsForms10.Window.8.app.0.1ed9395_r14_ad1, 增值税发票税控开票软
	ControlClick, WindowsForms10.BUTTON.app.0.2bb23b_r11_ad12, 税控发票开票软件 ahk_class WindowsForms10.Window.8.app.0.2bb23b_r11_ad1 ahk_exe Aisino.Framework.Startup.exe, 增值税发票税控开票软
	ControlClick, WindowsForms10.BUTTON.app.0.1ed9395_r12_ad12, 税控发票开票软件 ahk_class WindowsForms10.Window.8.app.0.1ed9395_r12_ad1 ahk_exe Aisino.Framework.Startup.exe, 增值税发票税控开票软
	ControlClick, x658 y322, 汇总信息 ahk_class WindowsForms10.Window.8.app.0.1ed9395_r14_ad1 ahk_exe Aisino.Framework.Startup.exe, 汇总报送已成功!汇总
}
关闭上报汇总已成功提示窗口()
{
	WinClose,SysMessageBox ahk_class WindowsForms10.Window.8.app.0.2bb23b_r11_ad1 ahk_exe Aisino.Framework.Startup.exe, 提示
}
等待主窗口出现后停止并删除所有Timer定时器()
{
	;等待指定标题窗口出现
	IfWinExist, SysMessageBox ahk_exe Aisino.Framework.Startup.exe, 登录错误
		停止并删除所有Timer定时器()

	IfWinExist,增值税发票税控开票软件(金税盘版) V2 ahk_exe Aisino.Framework.Startup.exe
		停止并删除所有Timer定时器()
}

停止并删除所有Timer定时器()
{
	SetTimer,运行开票软件,Delete
	SetTimer,激活登录窗口,Delete
	SetTimer,单击登录窗口中的确定按钮,Delete
	SetTimer,关闭上报汇总已成功提示窗口,Delete
	SetTimer,等待主窗口出现后停止并删除所有Timer定时器,Delete
	;~ MsgBox,开票软件启动成功
	Run,C:WindowsSystem32Rundll32.Exe user32.dll LockWorkStation,,Hide
}
;
ExitApp


;  show = Please Waitting...
;  Gui, Font, S8 Cred Bold, Verdana
;  Gui, Add, Edit, x6 y7 w240 h320 vshow
;  Gui, Show, x131 y91 h337 w255, 批量导入注册表
;  GuiControl,, show, %show%
;  foloder = %A_ScriptDir%reg
;  FileAppend, dir "%foloder%" /b >"%A_ScriptDir%list.txt", %A_ScriptDir%list.cmd
;  run, %A_ScriptDir%list.cmd, , min
;  sleep, 1000
;  GuiControl,, show,
;  Loop
;  {
;  FileReadLine, line, %A_ScriptDir%list.txt, %A_Index%
;  if ErrorLevel = 1
;      break
;  path = %foloder%%line%
;  SplitPath, path, name
;  show = %show%`n注册 %name%
;  GuiControl,, show, %show%
;  FileAppend, regedit /s "%path%"`n, %A_ScriptDir%reg.cmd
;  }
;  run, %A_ScriptDir%reg.cmd, , min
;  FileDelete, %A_ScriptDir%list.txt
;  FileDelete, %A_ScriptDir%list.cmd
;  FileDelete, %A_ScriptDir%reg.cmd
;  ExitApp
;
;  GuiClose:
;  ExitApp






rem ////////////////////////////////////////



rem ////////////////////////////////////////





;~ %A_ScriptDir%scripts无窗口全局热键定义.ahk
;
; 开机时自动启动的AutoHotkey脚本 2019年10月09日
;
; 计时器创建代码段 -----------------------------------------------------------------------------------------
; SetTimer可以模拟多线程从而不影响主线程的流畅执行
; 请在SciTE4AutoHotkey中选中单词并按快捷键F12跳转到函数定义处
; 绿色免安装程序,统一都分类保存在本地磁盘D分区文件夹 D:DIYTOOLSram 中
; 例如: MasterSeeker就长期坚持固定不变保存位置在 D:DIYTOOLSramMasterSeekerMasterSeeker.exe
; 例如: FileLocator Pro就长期坚持固定不变保存位置在 D:DIYTOOLSramFileLocatorFileLocator.exe
; #####################################################################
;
#SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行。
#Persistent  ;让脚本持久运行(即直到用户关闭或遇到 ExitApp)。

global ProgramDir
global OpednCount
OpenCount =0
ProgramDir=D:Programs
SetTimer,01设置全局无窗口快捷键,500
SetTimer,01设置全局无窗口快捷键,300
;  请养成按<Win> + F 隐藏MasterSeeker窗口的习惯
;~ SetTimer,12保持MasterSeeker窗口常驻内存,9000
SetTimer,10设置此脚本的运行参数,-1000
SetTimer,11设置此脚本用户自定义变量,-1000
SetTimer,12防止重复运行此脚本,-1000
return


return
;
; 此脚本相关信息说明段 ---------------------------------------------------------------------------------------
; 用法	               把此AHK脚本文件复制到 “shell:startup”文件夹中
;                          shell:startup”文件夹一般位于开始菜单->所有程序->启动 文件夹
; 作者                  徐晓亮  vlanweiyun618
; 电子邮箱地址     595076941@QQ.com
; 手机号码
;
; 函数子程序定义段 --------------------------------------------------------------------------------------------
;
01设置全局无窗口快捷键()
{
	Sleep,200
	Hotkey,``,01激活用WebDrive2019软件连接群晖的WebDAV共享文件夹窗口  ;  按热键`(即左上角的波浪号~)
	Sleep,200
	Hotkey,ScrollLock,关闭显示器屏幕
	Sleep,200
	Hotkey,*#n,02激活或隐藏窗口EmEditor
	Sleep,200
	;~ 热键 {Win}+f 总是要被操作系统抢去,所以改成 {Win}+g
	;~ Hotkey,*#g,03激活或隐藏窗口Everything
	Hotkey,*#g,03激活或隐藏窗口MasterSeeker
	Sleep,200
	Hotkey,*#b,04激活或隐藏窗口SogouExplorer
	Sleep,200
	;~ Hotkey,`#t,05激活或隐藏窗口TotalCommander  ;  按热键 Win+E 激活 TotalCommander
	Hotkey,*#t,05激活或隐藏窗口TotalCommander  ;  按热键 Win+E 激活 TotalCommander
	Sleep,200
	Hotkey,*#c,06激活或隐藏窗口计算器Calc  ;  按热键 Win + C,打开计算器
	Sleep,200
	Hotkey,*^!E,07用SciTE4AutoHotkey编辑此脚本
	Sleep,200
	Hotkey,*^!R,08重启此脚本
	Sleep,200
	Hotkey,*^F12,09终止此脚本执行  ;按Ctrl+Alt+F10键此脚本立即停止执行并退出
}
;
关闭显示器屏幕()
{
	SendMessage, 0x112, 0xF170, 2,, Program Manager
}
;
01激活用WebDrive2019软件连接群晖的WebDAV共享文件夹窗口()
{
	ToolTip,正在激活WebDrive2019软件连接群晖的WebDAV共享文件夹窗口
	SetTimer,判断WebDrive2019软件是否已经安装,500
	SetTimer,运行WebDrive2019软件,500
	SetTimer,激活WebDrive2019软件窗口,500
	SetTimer,激活并移动单位办公文件夹窗口,500
}
;
判断WebDrive2019软件是否已经安装()
{
	IfNotExist,C:Program FilesWebDriveWebDrive.exe
	{
		ToolTip
		MsgBox,请安装WebDrive
		SetTimer,判断WebDrive2019软件是否已经安装,Delete
		SetTimer,运行WebDrive2019软件,Delete
		SetTimer,激活WebDrive2019软件窗口,Delete
		SetTimer,激活并移动单位办公文件夹窗口,Delete
	}
	else
	{
		SetTimer,判断WebDrive2019软件是否已经安装,Delete
	}
}
;
运行WebDrive2019软件()
{
	IfWinNotExist,WebDrive 2019 ahk_exe WebDrive.exe
	{
		Process,Close,WebDrive.exe
		Run,"C:Program FilesWebDriveWebDrive.exe"
	}
	else
		SetTimer,运行WebDrive2019软件,Delete
}
;
激活WebDrive2019软件窗口()
{
	;~ 激活互斥锁定,防止在同一时间激活两个窗口
	IfWinNotActive,ahk_exe WebDrive.exe,Username
	{
		IfWinNotActive,01-单位办公 ahk_class CabinetWClass ahk_exe explorer.exe
		{
			WinActivate,WebDrive 2019 ahk_exe WebDrive.exe
		}
	}
}
;
激活并移动单位办公文件夹窗口()
{
	IfExist,W:1-share要备份的共享工作文件夹1-办公文件1-单位办公
		Run,W:1-share要备份的共享工作文件夹1-办公文件1-单位办公
	WinShow,01-单位办公 ahk_class CabinetWClass ahk_exe explorer.exe
	WinActivate,01-单位办公 ahk_class CabinetWClass ahk_exe explorer.exe
	Sleep,100
	WinMove,01-单位办公 ahk_class CabinetWClass ahk_exe explorer.exe,,A_ScreenWidth/2,20,A_ScreenWidth/2-20,A_ScreenHeight-70
	IfWinActive,01-单位办公 ahk_class CabinetWClass ahk_exe explorer.exe
	{
		;		WinGetPos [, X, Y, Width, Height, WinTitle, WinText, ExcludeTitle, ExcludeText]
		WinGetPos,MyX,MyY,MyWidth,MyHeight,01-单位办公 ahk_class CabinetWClass ahk_exe explorer.exe
		if(MyX=A_ScreenWidth/2)
		{
			if(MyWidth=A_ScreenWidth/2-20)
			{
				WinClose,WebDrive 2019 ahk_exe WebDrive.exe
				ToolTip
				SetTimer,判断WebDrive2019软件是否已经安装,Delete
				SetTimer,运行WebDrive2019软件,Delete
				SetTimer,激活WebDrive2019软件窗口,Delete
				SetTimer,激活并移动单位办公文件夹窗口,Delete
			}
	}
}
}
;
02激活或隐藏窗口EmEditor()
{
	;~ SetTimer,Timer激活或隐藏窗口EmEditor,500
	根据窗口类名激活或者隐藏窗口()
}
;
03激活或隐藏窗口MasterSeeker()
{
	;~ MsgBox,Everything热键函数被触发 ;不知道为什么,有时候Win+F热键会被操作系统夺回去
	SetTimer,Timer激活或隐藏窗口MasterSeeker,500
}
;
Timer激活或隐藏窗口MasterSeeker()
{
	WinGetActiveTitle,MSTitle
	IfInString,MSTitle,MasterSeeker
	{
		WinHide,ahk_exe MasterSeeker.exe
		SetTimer,Timer激活或隐藏窗口MasterSeeker,Delete
	}
	else
	{
		IfWinNotExist,ahk_exe MasterSeeker.exe
		{
			IfExist,D:ProgramsMasterSeekerMasterSeeker.exe
			{
				Run,D:ProgramsMasterSeekerMasterSeeker.exe
			}
		}
		;
		loop,3
		{
			WinShow,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
			WinActivate,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
			WinWaitActive,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
			ControlFocus,Filename,MasterSeeker 1.5.1 by DxCK ahk_exe MasterSeeker.exe
			Sleep,10
		}
		Send,^a
		SetTimer,Timer激活或隐藏窗口MasterSeeker,Delete
	}


	;~ 根据窗口类名激活或者隐藏窗口("Everything","EVERYTHING")
	;----- 全选激活MasterSeeker窗口的搜索编辑框:
	;~ WinGetActiveTitle,MTitle
	;~ IfInString,MTitle,Everything
	;~ if(MTitle=="Everything")
	;~ {
	;~ SetTimer,Timer激活或隐藏窗口Everything,Delete
	;~ WinWaitActive,ahk_class EVERYTHING
	;~ Sleep,10
	;~ loop,3
	;~ {
	;~ ControlFocus,Edit1,Everything ahk_class EVERYTHING
	;~ Sleep,10
	;~ ControlSend,Edit1,{End}{ShiftDown}{Home}{ShiftUp},Everything ahk_class EVERYTHING
	;~ Sleep,10
	;~ }
	;~ }
}
;
04激活或隐藏窗口SogouExplorer()
{
	{
		ToolTip,正在启动搜狗高速浏览器_请稍候 . . .
		SetTimer, RemoveToolTip, 3000
	}
根据窗口类名激活或者隐藏窗口("SogouExplorer","SE_SogouExplorerFrame")
}
;
05激活或隐藏窗口TotalCommander()
{
	if (A_Is64bitOS=1)
		根据窗口类名激活或者隐藏窗口("TotalCMD64","TTOTAL_CMD")
	else
		根据窗口类名激活或者隐藏窗口("TotalCMD","TTOTAL_CMD")
}
;
06激活或隐藏窗口计算器Calc()
{
	Run,calc
}
;
07用SciTE4AutoHotkey编辑此脚本()
{
	IfExist,%ProgramDir%AutoHotkeySciTESciTE.exe
		Run,%ProgramDir%AutoHotkeySciTESciTE.exe %A_ScriptName%
	else
	{
		{
			ToolTip,找不到文件%ProgramDir%AutoHotkeySciTESciTE.exe ,% A_ScreenWidth/2-150,% A_ScreenHeight/2-150
			SetTimer, RemoveToolTip, 3000
		}
		Sleep,3000
}
}
;
08重启此脚本()
{
	Reload
}
;
09终止此脚本执行()
{
	{
		ToolTip,%A_ScriptName% (即此脚本)已经退出
		SetTimer, RemoveToolTip, 500
	}
Sleep,500
ExitApp
}
;
10设置此脚本的运行参数()
{
#SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行。
#Persistent  ;让脚本持久运行(即直到用户关闭或遇到 ExitApp)。
#NoEnv  ;不检查空变量是否为环境变量(建议所有新脚本使用)。
#WinActivateForce  ;用强制的方法激活窗口。阻止任务栏按钮的闪烁.
	;~ #NoTrayIcon  ;不显示托盘图标。
	;~ #Warn
	SetWorkingDir,%A_ScriptDir%  ;改变脚本的当前工作目录。
	DetectHiddenWindows,On  ;设置脚本可以“看见”隐藏的窗口。
	SetTitleMatchMode,2  ;窗口标题匹配模式改成某个位置必须包含WinTitle。
	SendMode,Input  ;SendInput 通常更快更可靠. 缓存了发送期间任何物理的键盘或鼠标活动, 避免了在发送时夹杂用户的键击.
	CoordMode,Mouse,Screen
	CoordMode,Pixel,Screen
	CoordMode,ToolTip,Screen
	ListLines,Off
	SetBatchLines,-1
	SetStoreCapsLockMode, On

	;~ SetBatchLines,
	;~ SetKeyDelay,
	;~ SetWinDelay,
	;~ SetControlDelay,
}
;
11设置此脚本用户自定义变量()
{
	;~ global 移动硬盘盘符 ;带冒号:
}
;
12防止重复运行此脚本()
{
#SingleInstance,force
	loop,33
	{
		DetectHiddenWindows,On
		Sleep,33
		IfWinExist,QQ595076941_AutoRunAHK
			ExitApp
	}
	Gui, Show, Hide,QQ595076941_AutoRunAHK
}
;
; 请使用 窗口信息工具 AHKInfo 1.3.5 获取窗口的类名
根据窗口类名激活或者隐藏窗口(VarExeFileName:="EmEditor",VarWinClassName:="EmEditorMainFrame3")
{
	; 1、如果程序没有运行则运行程序
	Process,Exist,%VarExeFileName%.exe
	if (%ErrorLevel%=0)
	{
		IfExist,%ProgramDir%%VarExeFileName%%VarExeFileName%.exe
		{
			Run,%ProgramDir%%VarExeFileName%%VarExeFileName%.exe
			return
		}
		else
		{
			MsgBox,找不到文件 %ProgramDir%%VarExeFileName%%VarExeFileName%.exe
			return
		}
	}
	; 2、如果窗口未置顶则显示并激活(切换到)指定窗口
	IfWinNotActive,ahk_class %VarWinClassName%
	{
		loop,3
		{
			WinShow,ahk_class %VarWinClassName%
			;~ WinMaximize,ahk_class %VarWinClassName%
			WinGet, WinID, ID,ahk_class %VarWinClassName%
			DllCall("SwitchToThisWindow", "UInt", WinID, "UInt", 1)
		}
		return
	}
	; 3、如果窗口已经显示并置顶则隐藏窗口
	;~ WinMinimize,ahk_class %VarWinClassName%
	WinHide,ahk_class %VarWinClassName%
}
IfExistRun(TargetEXE) ;检查文件是否存在并运行程序
{
	IfExist,%ProgramDir%%TargetEXE%%TargetEXE%.exe
		Run,%ProgramDir%%TargetEXE%%TargetEXE%.exe
	else
	{
		ToolTip,未找到文件%ProgramDir%%TargetEXE%%TargetEXE%.exe
		SetTimer, RemoveToolTip, 3000
	}
}
RemoveToolTip:
	SetTimer, RemoveToolTip, Off
	ToolTip
return
;

;  ;智能命令,双击ALT执行
;  Alt::
;  	if winc_presses > 0 ; SetTimer 已经启动, 所以我们记录键击.
;  	{
;  		winc_presses += 1
;  		return
;  	}
;  	; 否则, 这是新开始系列中的首次按下. 把次数设为 1 并启动
;  	; 计时器:
;  	winc_presses = 1
;  	SetTimer, KeyWinC, -400 ; 在 400 毫秒内等待更多的键击.
;  return
;
;  ;双击执行跳转
;  KeyWinC:
;  	if winc_presses = 2 ; 此键按下了两次.
;  	{
;  		Gui, Show
;
;  	}
;  	; 不论触发了上面的哪个动作, 都对 count 进行重置
;  	; 为下一个系列的按下做准备:
;  	winc_presses = 0
;  return


; 00打开随身U盘_办公专用盘()
; {
; 	随身U盘的盘符:=搜索随身U盘并设置盘符()
; 	if (随身U盘的盘符<>0)
; 	{	ToolTip
; 		FileCreateDir,	%随身U盘的盘符%:1_办公文件
; 		DetectHiddenWindows,On
; 		SetTitleMatchMode,2
; 		;~ 需要设置一下系统,工具->文件夹选项->查看->在标题栏显示完整路径
; 		IfWinExist,9.22
; 		{
; 			WinShow,9.22
; 			WinActivate,9.22
; 			WinMaximize,9.22
; 		}
; 		else
; 		{
;
; 			IfExist,D:ProgramTotalCMDTotalCMD.exe
; 			{
; 				Run,D:ProgramTotalCMDTotalCMD.exe %随身U盘的盘符%:1_办公文件
; 			}
; 			else
; 				MsgBox,找不到文件 D:ProgramTotalCMDTotalCMD.exe
; 			;~ Run,%随身U盘的盘符%:1_办公文件
; 		}
; 		loop,5
; 		{
; 			WinMove,01_办公文件 ahk_class CabinetWClass,,A_ScreenWidth/2,0,A_ScreenWidth/2,A_ScreenHeight-35
; 			Sleep,100
; 		}
; 	}
; 	else
; 		ToolTip,没有找到随身U盘
;       SetTimer, RemoveToolTip, 3000
; }
; ;
;  00打开随身办公专用U盘()
;  {
;  	; 检测操作是否成功的定时器周期应当大于操作定时器的周期(即500大于100)
;  	SetTimer,AllMissionComplete,500
;  	SetTimer,OpenWorkFolder,100
;  	SetTimer,ActivateWorkFolder,100
;  	SetTimer,ReSizeWorkFolder,100
;  }
;  ;
;  AllMissionComplete()
;  {
;  	if(OpenCount >100)
;  	{
;  		SetTimer,AllMissionComplete,Delete
;  		SetTimer,OpenWorkFolder,Delete
;  		SetTimer,ActivateWorkFolder,Delete
;  		SetTimer,ReSizeWorkFolder,Delete
;  		ToolTip,没有找到随身U盘_请连接随身U盘到电脑
;  		SetTimer, RemoveToolTip, 3000
;  	}
;  IfWinActive,,01_办公文件
;  {
;  	WinGetPos,X,Y,,,,01_办公文件
;  	if(A_ScreenWidth/2-X=0)
;  	{
;  		SetTimer,AllMissionComplete,Delete
;  		SetTimer,OpenWorkFolder,Delete
;  		SetTimer,ActivateWorkFolder,Delete
;  		SetTimer,ReSizeWorkFolder,Delete
;  	}
;  }
;  	Hotkey,``,00打开随身办公专用U盘
;  }
;  ;
;  OpenWorkFolder()
;  {
;  	OpenCount++
;  	IfWinNotExist,,01_办公文件
;  	{
;  		DriveGet,DriveList,List
;  		loop,Parse,DriveList
;  		{
;  			DriveGet,USBDriveLabel,Label,%A_LoopField%:
;  			IfInString,USBDriveLabel, 随身U盘
;  			{
;  				FileCreateDir,%A_LoopField%:1_办公文件
;  				Run,%A_LoopField%:1_办公文件
;  			}
;  		}
;  	}
;  }
;  ;
;  ActivateWorkFolder()
;  {
;  	WinShow,,01_办公文件
;  	WinActivate,,01_办公文件
;  }
;  ;
;  ReSizeWorkFolder()
;  {
;  	WinMove,,01_办公文件,A_ScreenWidth/2,0,A_ScreenWidth/2,A_ScreenHeight-35
;  }
;
; ===== 脚本结束 =====



rem ////////////////////////////////////////

rem ////////////////////////////////////////




;~ %A_ScriptDir%scripts无窗口全局热字串定义.ahk

; 用AutoHotkey的热字串功能启动常用电脑程序软件 Version 2 Build 20191214

; 电脑上的快捷键太多了,记都记不住,容易冲突和搞混,所以做了个热字串启动
; 用法:运行此脚本后在键盘上输入字符串  /np
; 此脚本的写作和调试完成日期:2019年12月12日
; 此脚本的作者:徐晓亮 (aahk)
; 此脚本作者的腾讯QQ电子邮箱地址:595076941@QQ.com

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行。
#Persistent  ;让脚本持久运行(即直到用户关闭或遇到 ExitApp)。
DetectHiddenWindows,On  ;设置脚本可以“看见”隐藏的窗口。
SetTitleMatchMode,2  ;窗口标题匹配模式改成某个位置必须包含WinTitle。
;
; 设置插入当前日期和时间的热字串WT ( What is the time now )
Sleep,500
::wt::
Sleep,500
	ClipSaved := ClipboardAll   ; 把剪贴板的所有内容保存到您选择的变量中
	NowTimeString =%A_YYYY%年%A_MM%月%A_DD%日%A_Hour%时%A_Min%分%A_Sec%秒
	Clipboard :=NowTimeString
	Send ^v
	Sleep,500
	Clipboard := ClipSaved   ; 恢复剪贴板为原来的内容. 注意这里使用 Clipboard (不是 ClipboardAll).
	ClipSaved =   ; 在原来的剪贴板含大量内容时释放内存.
return
;
; 运行此脚本后在键盘上输入 `np 打开记事本程序 , `键位于Esc和Tab键之间(即波浪号~所在的键)
:*:``no::
:*:``np::
	IfExist,C:WindowsNotepad.exe
	{
		Run,C:WindowsNotepad.exe
	}
	else
	{
		MsgBox,没有找到记事本程序可执行文件C:WindowsNotepad.exe
	}
	ToolTip,正在启动记事本请稍后...
	SetTimer, RemoveToolTip, 3000
return
;
return
;
:*:``em::
:*:``ee::
	Hotstrings("EmEditor")
return
;
:*:``ma::
:*:``ms::
	Hotstrings("MasterSeeker")
return
;
:*:``so::
:*:``sg::
	Hotstrings("SogouExplorer")
return
;
:*:``to::
:*:``tc::
	Hotstrings("TotalCMD")
return
;
:*:``qq::
	Hotstrings2("qq")
return
;
Hotstrings(ExeName)
{

	IfExist,D:Programs%ExeName%%ExeName%.exe
	{
		Run,D:Programs%ExeName%%ExeName%.exe
	}
	else
	{
		MsgBox,没有找到可执行文件D:Program%ExeName%%ExeName%.exe
	}
	ToolTip,正在启动%ExeName%_请稍后...
	SetTimer, RemoveToolTip, 3000
}
;
Hotstrings2(ExeName2)
{
	IfExist,D:Programs%ExeName2%Bin%ExeName2%.exe
	{
		Run,D:Programs%ExeName2%Bin%ExeName2%.exe
	}
	else
	{
		MsgBox,没有找到可执行文件D:Program%ExeName2%Bin%ExeName2%.exe
	}
	ToolTip,正在启动%ExeName2%_请稍后...
	SetTimer, RemoveToolTip, 3000
}

; ===== 函数定义段 =====
打开随身U盘()
{
	随身U盘的盘符:=搜索随身U盘并设置盘符()
	if (随身U盘的盘符<>0)
	{
		SetTimer, RemoveToolTip, 5000
		FileCreateDir, %随身U盘的盘符%:1_办公文件
		DetectHiddenWindows,On
		SetTitleMatchMode,2
		;~ 需要手动或用脚本语句设置一下系统,工具->文件夹选项->查看->在标题栏显示完整路径
		IfWinExist,,01_办公文件
		{
			WinShow,,01_办公文件
			WinActivate,,01_办公文件
		}
		else
		{
			Run,%随身U盘的盘符%:1_办公文件
		}
		loop,5
		{
			WinMove,,01_办公文件,A_ScreenWidth/2,0,A_ScreenWidth/2,A_ScreenHeight-35
			Sleep,100
		}
	}
	else
		ToolTip,没有找到随身U盘
	SetTimer, RemoveToolTip, 5000
}
;
; 根据磁盘卷标搜索到盘符后,可以再使用 IfExist 命令检查文件或文件夹是否存在。先检测,后执行。
搜索随身U盘并设置盘符()
{ 找到U盘:=false
	DriveGet,盘符清单,List
	loop,Parse,盘符清单
	{ DriveGet,卷标,Label,%A_LoopField%:
		IfInString,卷标, 随身U盘
		{ 找到U盘:=true
			return,%A_LoopField%
		}
	}
	if (not 找到U盘)
	{ return,0
	}
}
;
;
RemoveToolTip:
	SetTimer, RemoveToolTip, Off
	ToolTip
return
; ===== 源代码备份网址 =====
; https://www.cnblogs.com/delphixx/p/12033306.html
; http://autohotkey.bokee.com/507502269.html
; ===== 脚本结束 =====







rem ////////////////////////////////////////

rem ////////////////////////////////////////




;~ %A_ScriptDir%scripts设置常驻内存的程序加快窗口显示的速度.ahk
;
global ProgramDir
;~ ProgramDir=%A_ScriptDir%......
ProgramDir=D:Programs
SetTimer,1设置此脚本的运行参数,-1000
;~ SetTimer,14设置此脚本用户自定义变量,-1000
SetTimer,2防止重复运行此脚本,-1000
SetTimer,3保持Everything窗口常驻内存从而提高显示速度,5000
return
;
1设置此脚本的运行参数()
{
#SingleInstance,force ;当此脚本已经运行时自动替换旧实例再次运行。
#Persistent  ;让脚本持久运行(即直到用户关闭或遇到 ExitApp)。
#NoEnv  ;不检查空变量是否为环境变量(建议所有新脚本使用)。
#WinActivateForce  ;用强制的方法激活窗口。阻止任务栏按钮的闪烁.
	;~ #NoTrayIcon  ;不显示托盘图标。
	;~ #Warn
	SetWorkingDir,%A_ScriptDir%  ;改变脚本的当前工作目录。
	DetectHiddenWindows,On  ;设置脚本可以“看见”隐藏的窗口。
	SetTitleMatchMode,2  ;窗口标题匹配模式改成某个位置必须包含WinTitle。
	SendMode,Input  ;SendInput 通常更快更可靠. 缓存了发送期间任何物理的键盘或鼠标活动, 避免了在发送时夹杂用户的键击.
	CoordMode,Mouse,Screen
	CoordMode,Pixel,Screen
	CoordMode,ToolTip,Screen
	ListLines,Off
	SetBatchLines,-1
	SetStoreCapsLockMode, On

	;~ SetBatchLines,
	;~ SetKeyDelay,
	;~ SetWinDelay,
	;~ SetControlDelay,
}
;
2防止重复运行此脚本()
{
#SingleInstance,force
	loop,33
	{
		DetectHiddenWindows,On
		Sleep,33
		IfWinExist,QQ595076941_AutoRunAHK_ram
			ExitApp
	}
	Gui, Show, Hide,QQ595076941_AutoRunAHK_ram
}
;
3保持Everything窗口常驻内存从而提高显示速度()
{
	Process,Exist,Everything.exe
	if (%ErrorLevel%=0)
	{
		IfWinNotExist,Everything
		{
			IfWinNotExist,ahk_class EVERYTHING
			{
				IfWinNotExist,ahk_exe Everything.exe
				{
					IfExist,%ProgramDir%EverythingEverything.exe
						Run,%ProgramDir%EverythingEverything.exe
					WinWait,ahk_class EVERYTHING
					loop,3
					{
						WinHide,ahk_class EVERYTHING
						Sleep,50
					}
				}
			}
		}
	}
	;~ Process,Exist,MasterSeeker.exe
	;~ if (%ErrorLevel%=0)
	;~ {
	;~ IfWinNotExist,MasterSeeker 1.5.1 by DxCK
	;~ {
	;~ IfWinNotExist,ahk_exe MasterSeeker.exe
	;~ {
	;~ IfExist,%ProgramDir%MasterSeekerMasterSeeker.exe
	;~ Run,%ProgramDir%MasterSeekerMasterSeeker.exe
	;~ WinWait,ahk_class WindowsForms10.Window.8.app.0.218f99c
	;~ loop,3
	;~ {
	;~ WinHide,ahk_class WindowsForms10.Window.8.app.0.218f99c
	;~ Sleep,100
	;~ }
	;~ }
	;~ }
	;~ }
}
;
; #####################################################################
;
; 此脚本到此行结束


rem ////////////////////////////////////////



rem ////////////////////////////////////////



;~ 8删除暂时无用的垃圾文件

#SingleInstance,force
#Persistent
#NoEnv
DetectHiddenWindows,On
SetTitleMatchMode,2

SetTimer,8删除暂时无用的垃圾文件,5000
return

8删除暂时无用的垃圾文件()
{
	FileDelete,D:PersonalDesktop委托交易.lnk
	FileDelete,C:UsersPublicDesktop委托交易.lnk
	FileDelete,C:UsersAdministratorDesktop委托交易.lnk
}


rem ////////////////////////////////////////

rem ////////////////////////////////////////

关于绿色便携免安装电脑软件管理的一些思考和测试(混合版,粗制滥造版,搬运版,草稿版,亲测可用版,长期改进版)

全文结束

 

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA捐赠
共{{data.count}}人
人已捐赠
其他教程

字节数组和字符串getBytes方法

2020-9-6 21:02:01

其他案例

关于绿色便携免安装电脑软件管理的一些思考和测试

2020-9-8 20:13:39

2 条回复 A文章作者 M管理员
  1. aahk

    不会删除已经发布的文章,所以又重新发布了一遍,修复代码中路径斜杠丢失的问题

  2. aahk

    Synology群晖100TB万兆文件云服务器NAS存储池类别 RAID 6 (有数据保护)2021年7月29日

    https://www.autoahk.com/archives/36704

个人中心
购物车
优惠劵
有新私信 私信列表
搜索