;徐晓亮的文件管理规范和相关的AutoHotkey脚本源代码2019年11月18日.ahk

;徐晓亮的文件管理规范和相关的AutoHotkey脚本源代码2019年11月18日.ahk

; ==========================================================================
;~  1、本文的最新版访问网页地址是
;~ http://www.autoahk.com/archives/16408
;~ 备用网址:
;~  https://www.cnblogs.com/delphixx/p/11846546.html
;~  https://gitee.com/weiyunwps618/codes/x6t3se08fiwjc95rbaqz787

 



; ==========================================================================
;~ 用安卓手机QQ应用软件的扫一扫功能登录腾讯微云网盘网页版
;~ 所有办公文档和办公表格都使用腾讯微云网盘网页版的微软Office网页版查看和编辑
;~ 在下班前5分钟“重置同步信息”并同步所有腾讯微云网盘中的文件到
;~ 电脑的本地磁盘以防丢失办公文件
;~ 非办公文件都分类整理保存到随身固态U盘中
;~ 所有AutoHotkey脚本源代码和AutoHotkey视频教程都统一分类保存到百度网盘中
;~ 所有国语中字电影视频缓存下载文件都保存到安卓手机或者超级笔记本电脑的优酷视频腾讯视频爱奇艺视频的本地磁盘或本地TF内存卡中

; ==========================================================================
设置此脚本的运行参数ConfigThisScript()
新建腾讯微云网盘网页版快捷方式到电脑桌面CreateWeiyunWebLnk()
新建电脑本地磁盘D盘分区分类保存文件夹CreateClassifiedFileSaveFolder()
ExitApp
return

; ==========================================================================
设置此脚本的运行参数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,
}
;
新建腾讯微云网盘网页版快捷方式到电脑桌面CreateWeiyunWebLnk()
{
	;请养成只使用腾讯微云网页版中的微软Word网页版和Excel网页版查看和编辑办公文件的习惯
	;所有办公文件统一分类保存到腾讯微云网盘中,不要保存办公文件到其他位置
	;为了防止丢失办公文件请每天下班前重置腾讯微云网盘的PC同步助手的同步信息
	FileCreateShortcut,http://www.weiyun.com,%A_DesktopCommon%\微云网页版.lnk
}
;
新建电脑本地磁盘D盘分区分类保存文件夹CreateClassifiedFileSaveFolder()
{
	; D:\Prog\AutoHotkey\SciTE 文件夹用于保存AHK脚本编辑器程序,此程序可用uTools搜索并运行
	FileCreateDir,D:\Prog\AutoHotkey\SciTE
	; D:\Prog\MasterSeeker 文件夹用于保存MasterSeeker程序,此程序需要微软的dotNetFx2.0运行库支持才能运行
	FileCreateDir,D:\Prog\MasterSeeker
	; D:\Prog\AutoRun 文件夹用于保存开机自动启动的AHK脚本
	FileCreateDir,D:\Prog\AutoRun
	; D:\Prog\uTools\lnks 文件夹用于保存uTools的自定义快捷方式,可用uTools缓存和搜索快捷方式,网址可以保存在批处理脚本的快捷方式中
	FileCreateDir,D:\Prog\uTools\lnks
}

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

/*

以下列出本文中相关的AutoHotkey脚本源代码和相关文件资源


; ==========================================================================
;
;  开机时自动启动的AutoHotkey脚本
;  此脚本最后修改时间  2019年10月30日
;  如果需要另存为副本备份脚本请在SciTE4AutoHotkey编辑器中按快捷键 Ctrl + Shift + S
;  如果需要设置书签请在SciTE4AutoHotkey编辑器中按快捷键 Ctrl + F2
;  如果需要跳转到函数定义源代码处请在SciTE4AutoHotkey编辑器中双击选中函数名并按快捷键 F12
;  如果需要无条件终止此脚本(停止运行并退出)请按快捷键 Ctrl + F12
;
;  http://www.autoahk.com/archives/16110
;
;  https://gitee.com/weiyunwps618/codes/d6hni2ft1yzeps0wul87g65
;
;  https://www.cnblogs.com/delphixx/p/11775102.html
;
global ProgramDir
ProgramDir=%A_ScriptDir%\..
SetTimer,01设置全局无窗口快捷键,-1000
; Rolan 1.3.8 脱壳稳定版 应用程序快速启动工具软件 完美版 永久版 自用修改版
SetTimer,12保持Wox_快捷键Alt和空格键常驻内存,3000
;  请养成按<Win> + F 隐藏MasterSeeker窗口的习惯
SetTimer,12保持MasterSeeker窗口常驻内存,9000
SetTimer,13设置此脚本的运行参数ConfigThisScript,-1000
SetTimer,14设置此脚本用户自定义变量,-1000
SetTimer,15防止重复运行此脚本,-1000
SetTimer,16运行国税金税盘开票软件,-100
SetTimer,17运行一些软件应用程序,-1000
;~ SetTimer,18关广告窗口删除广告文件,3000
; 设置插入当前日期和时间的热字串WT ( What is the time now )
::wt::
	NowTimeString=%A_YYYY%年%A_MM%月%A_DD%日
	;~ NowTimeString=%A_YYYY%年%A_MM%月%A_DD%日%A_Hour%时%A_Min%分
	Clipboard=%NowTimeString%
	Send ^v
return
return
;
; 此脚本相关信息说明段 ---------------------------------------------------------------------------------------
; 用法	               把此AHK脚本文件复制到 “shell:startup”文件夹中
;                          shell:startup”文件夹一般位于开始菜单->所有程序->启动 文件夹
; 作者                  徐晓亮  weiyunwps618
; 电子邮箱地址     595076941@QQ.com
; 手机号码
;
; 函数子程序定义段 --------------------------------------------------------------------------------------------
;
01设置全局无窗口快捷键()
{
	Hotkey,`#n,02激活或隐藏窗口EmEditor
	Hotkey,`#e,03激活或隐藏窗口TotalCommander  ;  按热键 Win+E 激活 TotalCommander
	Hotkey,`#f,04激活或隐藏窗口MasterSeeker
	Hotkey,`#g,05激活或隐藏窗口Everything
	Hotkey,`#s,06激活或隐藏窗口SogouExplorer
	Hotkey,`#c,07激活或隐藏窗口计算器Calc  ;  按热键 Win + C,打开计算器
	Hotkey,`^!E,08用SciTE4AutoHotkey编辑此脚本
	Hotkey,`^!R,09重启此脚本
	Hotkey,^F12,10终止此脚本执行  ;按Ctrl+Alt+F10键此脚本立即停止执行并退出
}
;
02激活或隐藏窗口EmEditor()
{
	根据窗口类名激活或者隐藏窗口()
}
;
03激活或隐藏窗口TotalCommander()
{
	根据窗口类名激活或者隐藏窗口("TotalCMD","TTOTAL_CMD")
}
;
04激活或隐藏窗口MasterSeeker()
{
	根据窗口类名激活或者隐藏窗口("MasterSeeker","WindowsForms10.Window.8.app.0.218f99c")
	;----- 全选激活MasterSeeker窗口的搜索编辑框:
	loop,3
	{
		ControlFocus,Filename,ahk_class WindowsForms10.Window.8.app.0.218f99c
		Sleep,10
		ControlSend,Filename,{End},ahk_class WindowsForms10.Window.8.app.0.218f99c
	}
	Sleep,10
	ControlSend,Filename,{ShiftDown}{Home}{ShiftUp},ahk_class WindowsForms10.Window.8.app.0.218f99c
	Sleep,10
}
;
05激活或隐藏窗口Everything()
{
	; 当窗口标题测试不通过的话只好用窗口类了
	Process,Close,Everything.exe
	根据窗口类名激活或者隐藏窗口("Everything","EVERYTHING")
}
;
06激活或隐藏窗口SogouExplorer()
{
	根据窗口类名激活或者隐藏窗口("SogouExplorer","SE_SogouExplorerFrame")
}
;
07激活或隐藏窗口计算器Calc()
{
	Run,calc
}
;
08用SciTE4AutoHotkey编辑此脚本()
{
	IfExist,%ProgramDir%\AutoHotkey\SciTE\SciTE.exe
		Run,%ProgramDir%\AutoHotkey\SciTE\SciTE.exe %A_ScriptName%
	else
	{
		ToolTip,找不到文件%ProgramDir%\AutoHotkey\SciTE\SciTE.exe ,% A_ScreenWidth/2-150,% A_ScreenHeight/2-150
		SetTimer, RemoveToolTip, 5000
		Sleep,3000
	}
}
;
09重启此脚本()
{
	Reload
}
;
10终止此脚本执行()
{
	ToolTip,%A_ScriptName% (即此脚本)已经退出
	SetTimer, RemoveToolTip, 500
	Sleep,500
	ExitApp
}
;
; Rolan 1.3.8 脱壳稳定版 应用程序快速启动工具软件 完美版 永久版 自用修改版
;~ Wox 是一个开源免费的快速启动器工具,安装后可以通过快捷键 Ctrl + space 呼出,可以快速高效率打开软件/搜索文件等。
12保持Wox_快捷键Alt和空格键常驻内存()
{
	Process,Exist,Wox.exe
	if (%ErrorLevel%=0)
	{
		IfExist,C:\Users\Administrator\AppData\Local\Wox\Wox.exe
			Run,C:\Users\Administrator\AppData\Local\Wox\Wox.exe
	}
}
;
12保持MasterSeeker窗口常驻内存()
{
	Process,Exist,MasterSeeker.exe
	if (%ErrorLevel%=0)
	{
		IfWinNotExist,MasterSeeker 1.5.1 by DxCK
		{
			IfWinNotExist,ahk_exe MasterSeeker.exe
			{
				IfExist,%ProgramDir%\MasterSeeker\MasterSeeker.exe
					Run,%ProgramDir%\MasterSeeker\MasterSeeker.exe
				WinWait,ahk_class WindowsForms10.Window.8.app.0.218f99c
				loop,3
				{
					;~ WinHide,ahk_class WindowsForms10.Window.8.app.0.218f99c
					WinHide, MasterSeeker 1.5.1 by DxCK ahk_class WindowsForms10.Window.8.app.0.218f99c ahk_exe MasterSeeker.exe, statusStri

					Sleep,100
				}
			}
		}
	}
}
;
13设置此脚本的运行参数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,
}
;
14设置此脚本用户自定义变量()
{
	;~ global 移动硬盘盘符 ;带冒号:
}
;
15防止重复运行此脚本()
{
#SingleInstance,force
	loop,33
	{
		DetectHiddenWindows,On
		Sleep,33
		IfWinExist,QQ595076941_AutoRunAHK
			ExitApp
	}
	Gui, Show, Hide,QQ595076941_AutoRunAHK
}
;
16运行国税金税盘开票软件()
{
	IfExist,D:\Progra~1\开票软件\MainExecute.exe
	{
		Run,D:\Progra~1\开票软件\MainExecute.exe
		loop,333
		{
			WinGet, WinID, ID,LoginForm
			DllCall("SwitchToThisWindow", "UInt", WinID, "UInt", 1)
			WinGetActiveTitle,WinActiveTitlekp
			Sleep,500
			IfInString,WinActiveTitlekp,LoginForm
			{
				ControlClick,登录,LoginForm
			}
			Sleep,500
			IfWinActive,,上报汇总已成功
			{
				ControlClick,确认,,上报汇总已成功
			}
			;~ 如果成功登录国税开票软件,那么立即退出本次LOOP循环
			IfInString,WinActiveTitlekp,增值税发票税控开票软件
			{
				break
			}
			;~ 证书口令不能为空,退出循环,手工登录
			IfWinExist,,证书口令不能为空
			{
				break
			}
		}
		Sleep,100
		;~ Run,C:\Windows\System32\Rundll32.Exe user32.dll LockWorkStation
		Sleep,2000
		WinClose,USB KEY PIN,请输入KEY的PIN码
	}
}
;
17运行一些软件应用程序()
{
	SetTimer,定时检查uTools_V083beta简体中文汉化版是否退出如果退出则重新运行,5000
	SetTimer,定时重启向日葵远程控制保持远程访问可用,3600000
	SetTimer,闲置超时锁定桌面,30000
	;~ SetTimer,自动登录腾讯QQ聊天软件,-100
	IfExistRun("WiseDesktop")  ; WiseDesktop 1.3 虚拟桌面管理程序
	IfExistRun("PCOff")   ;定时强制关机精灵1.0 在 17:05 下班后定时强制关闭电脑
	;运行AutoHotkey脚本管理器,统一管理AutoHotkey脚本的启动关闭编辑调试测试分类整理保存和和备份
	Run,D:\DIYTOOLS\AHKManager\AHKManager.ahk
	新建腾讯微云网盘网页版快捷方式到电脑桌面CreateWeiyunWebLnk()
	新建电脑本地磁盘D盘分区分类保存文件夹CreateClassifiedFileSaveFolder()
}
;
新建腾讯微云网盘网页版快捷方式到电脑桌面CreateWeiyunWebLnk()
{
	;请养成只使用腾讯微云网页版中的微软Word网页版和Excel网页版查看和编辑办公文件的习惯
	;所有办公文件统一分类保存到腾讯微云网盘中,不要保存办公文件到其他位置
	;为了防止丢失办公文件请每天下班前重置腾讯微云网盘的PC同步助手的同步信息
	FileCreateShortcut,http://www.weiyun.com,%A_DesktopCommon%\微云网页版.lnk
}
;
新建电脑本地磁盘D盘分区分类保存文件夹CreateClassifiedFileSaveFolder()
{
	; D:\Prog\AutoHotkey\SciTE 文件夹用于保存AHK脚本编辑器程序,此程序可用uTools搜索并运行
	FileCreateDir,D:\Prog\AutoHotkey\SciTE
	; D:\Prog\MasterSeeker 文件夹用于保存MasterSeeker程序,此程序需要微软的dotNetFx2.0运行库支持才能运行
	FileCreateDir,D:\Prog\MasterSeeker
	; D:\Prog\AutoRun 文件夹用于保存开机自动启动的AHK脚本
	FileCreateDir,D:\Prog\AutoRun
	; D:\Prog\uTools\lnks 文件夹用于保存uTools的自定义快捷方式,可用uTools缓存和搜索快捷方式,网址可以保存在批处理脚本的快捷方式中
	FileCreateDir,D:\Prog\uTools\lnks
}
;
定时检查uTools_V083beta简体中文汉化版是否退出如果退出则重新运行()
{
	Process,Exist,uTools.exe
	if (%ErrorLevel%=0)
	{
		IfExist,D:\DIYTOOLS\uTools\uTools.exe
			Run,D:\DIYTOOLS\uTools\uTools.exe
		;~ IfExist,C:\Program Files\uTools\uTools.exe
		;~ Run,C:\Program Files\uTools\uTools.exe
	}
}

;
定时重启向日葵远程控制保持远程访问可用()
{
	loop,5
	{
		;~ WinMove
		;~ WinMaximize
		;~ WinHide
		;~ WinClose
		;~ WinKill
		;~ Process,Close,
		;~ WinGet, active_id, PID, A
		;~ run, taskkill /PID %active_id% /F,,Hide
		;~ Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]
		;~ 要想得到pid, 需要把WorkingDir的参数置空,否则就得不到,真是坑爹
		Sleep,500
		WinClose, 桌面控制 ahk_class SDL_app ahk_exe SunloginClient.exe,
		Sleep,500
		WinKill, 桌面控制 ahk_class SDL_app ahk_exe SunloginClient.exe,
		Sleep,500
		WinClose, 向日葵远程控制 ahk_class SDL_app ahk_exe SunloginClient.exe,
		Sleep,500
		WinKill, 向日葵远程控制 ahk_class SDL_app ahk_exe SunloginClient.exe,
		Sleep,500
		Process,Close,SunloginClient.exe
	}
	loop,1
	{
		Sleep,5000
		IfExist,D:\DIYTOOLS\SunloginClient\SunloginClient.exe
			Run,D:\DIYTOOLS\SunloginClient\SunloginClient.exe
		IfExist,C:\Program Files\Oray\SunLogin\SunloginClient\SunloginClient.exe
			Run,C:\Program Files\Oray\SunLogin\SunloginClient\SunloginClient.exe
		IfExist,C:\Program Files (x86)\Oray\SunLogin\SunloginClient\SunloginClient.exe
			Run,C:\Program Files (x86)\Oray\SunLogin\SunloginClient\SunloginClient.exe
	}
}
;
闲置超时锁定桌面()
{
	if(A_TimeIdle>480000)
	if(A_TimeIdlePhysical>480000)
	{
		Send,{AltDown}4{AltUp}     ; 发送模拟按键到 WiseDesktop 1.3 虚拟桌面管理程序 隐藏所有工作窗口
		Run,C:\Windows\System32\Rundll32.Exe user32.dll LockWorkStation
	}
}
自动登录腾讯QQ聊天软件()
{
	;~ 检查是否已经登录QQ
	IfExist,C:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe
		Run,C:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe
	WinWait, QQ ahk_class TXGuiFoundation ahk_exe QQ.exe, ,9
	WinActivate, QQ ahk_class TXGuiFoundation ahk_exe QQ.exe, ,9
	IfWinNotActive,QQ ahk_class TXGuiFoundation ahk_exe QQ.exe
		goto,QQend
	;~ 全屏找图激活用户名输入框
	;~ 输入QQ号
	Send,{TAB}
	;~ 输入QQ密码
	Send,{Enter}
QQend:
	}
18关广告窗口删除广告文件()
{
	; 请用 AHKInfo 1.3.5 窗口信息查询工具来获取窗口标题和窗口类名
	;等待指定标题窗口出现
	WinClose, FF新推荐
	WinClose,热点资讯
	WinClose,ahk_class Q360RemindSClass ahk_exe 360Speedld.exe,
	WinClose, ahk_class SGPopBubbleWindow ahk_exe SGTool.exe,
	;~ 广告弹窗专杀语句格式 WinClose,ahk_exe     SohuNews.exe
	;~ ;; ;; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	WinHide, ahk_class Suspension,
	WinHide, 迅雷 ahk_class Chrome_WidgetWin_0, Chrome Leg
	WinClose, 今日推荐
	WinHide, 今日推荐
	;~ WinClose,USB KEY PIN,请输入KEY的PIN码
	;~ WinClose,ahk_exe     QQPCSoftTrayTips.exe
	;~ WinClose,ahk_exe     QQPCTray.exe
	;~ WinClose,ahk_exe     SohuNews.exe
	;~ WinClose,ahk_exe     SGTool.exe
	;~ WinClose,ahk_exe     PicFaceTool.exe
	;~ WinClose,ahk_exe     wpscEnter.exe
	;~ WinClose,ahk_exe     WindowsForms10.Window.20008.app.0.261f82a_r13_ad1
	;~ WinClose,ahk_exe     AutoShow.exe
	;~ WinClose,ahk_exe     skinbox.exe
	;~ WinClose,ahk_exe     WnComMgr.exe
	;~ WinClose,ahk_exe     WnMoniter.exe
	;~ WinClose,ahk_exe     WnHelper64.exe
	;~ WinClose,ahk_exe     WnUserPage.exe
	;~ WinClose,ahk_class TXGuiFoundation
	;~ WinClose,头条新闻
	;~ WinClose,到期抄报税提示
	;~ WinClose,USB KEY PIN,请输入KEY的PIN码
	;等待指定标题窗口出现
	;~ WinClose,FF新推荐 ahk_class #32770,
}
;
; 请使用 窗口信息工具 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, 5000
	}
}
;
;  本文的最后修改日期是  公元2019年11月07日
;  本文的网址是  https://gitee.com/weiyunwps618/codes
;  本文的网址是  https://www.cnblogs.com/delphixx
;  晓亮(weiyunwps618)的腾讯QQ邮箱地址是  595076941@qq.com )
;  晓亮(weiyunwps618)的中国移动手机号码是  138####5488 )
; 此AHK脚本的测试环境是  Windows 7 Pro SP1 VL 和 AutoHotkey v1.1.30.01
;
RemoveToolTip:
	SetTimer, RemoveToolTip, Off
	ToolTip
return
; ####################################
; 计时器创建代码段 ---------------------------------
; SetTimer可以模拟多线程从而不影响主线程的流畅执行
; 请在SciTE4AutoHotkey中选中单词并按快捷键F12跳转到函数定义处
; 绿色免安装程序,统一都分类保存在本地磁盘D分区文件夹 D:\Program 中
; 例如: MasterSeeker就长期坚持固定不变保存位置在 D:\Program\MasterSeeker\MasterSeeker.exe
; 例如: FileLocator Pro就长期坚持固定不变保存位置在 D:\Program\FileLocator\FileLocator.exe
; ####################################
; 此脚本到此行结束
; ==========================================================================
;~ AHK源码管理器  AHKManager

;~ isShow:=true

;源码





;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:\Prog\AutoHotkey\SciTE\SciTE.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



	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



F1::

	isShow:=!isShow

	if(isShow)

	{

ShowGui:



	Gui,Show,,AHK管理器

	}

else

	Gui,Hide

return



;~ 作者:sixtyone

;~ 链接:https://www.jianshu.com/p/d88f47fa431d

;~ 來源:简书

;~ 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


; ==========================================================================
;~ 在屏幕上搜索图片并返回图片所在位置的坐标的AutoHotkey脚本源代码(类似大漠插件)

;  https://www.autohotkey.com/boards/viewtopic.php?t=17834

;~ <<< Update history >>>

;~ Updated to 6.9 version - 2019/10/30
;~ .... 1. The ScreenShot_GetColor() function is added.
;~ .... Before using it, you usually need to update the last screenshot with the ScreenShot() function.
;~ .... FindText() function can also update the last screenshot, So you can use FindText() instead of ScreenShot().

;~ Updated to 6.8 version - 2019/10/25
;~ .... 1. Fixed case insensitive key names in internal array of Pic() function.
;~ .... 2. In order to facilitate this script to be included in other scripts as a library (#Include <FindText.ahk>),
;~ .... no custom global variables are used, and the label of subprogram is greatly reduced.

;~ Updated to 6.7 version - 2019/04/13
;~ .... 1. Merge FindText() and FindText2() functions.
;~ .... 2. The color difference mode is added to adjust the matching range accurately.
;~ .... 3. Add a parameter "FindAll" that allows you to find only one result and return it immediately.

;~ Updated to 6.6 version - 2019/04/11
;~ .... 1. FindText(), FindText2() share the same machine code, reduces the code size.

;~ Updated to 6.5 version - 2019/04/07
;~ .... 1. Add Gray Difference Mode, so there are four modes.
;~ .... 2. Fixed SplitAdd/AllAdd buttons doesn't work(broken by v6.4).

;~ Updated to 6.4 version - 2019/02/04
;~ .... 1. Change the label name and function name to make it easier
;~ .... for “#Include” to be integrated into other scripts as libraries.
;~ .... 2. After including library, you can open the tool directly by calling: ft_Gui("Show").

;~ Updated to 6.3 version - 2018/12/18
;~ .... 1. Changed the way to capture, Now first click the right mouse button,
;~ .... you can move the mouse, and then click the right mouse button again.
;~ .... 2. Add MouseTip(). It is used to prompt mouse position in remote assistance.

;~ Updated to 6.2 version - 2018/11/11
;~ .... 1. A parameter is added at the end of the function to allow the last screenshot to be used.
;~ .... Of course, saving the last screenshot will take up a certain amount of memory.
;~ .... 2. Add ScreenShot(). It can be used before the loop.

;~ Updated to 6.1 version - 2018/10/07
;~ .... 1. The specific color mode has been restored, so there are three modes.
;~ .... 2. Add SortOK(), SortOK2(). It is used to sort the array by coordinates.

;~ Updated to 6.0 version - 2018/09/21
;~ .... 1. Slightly modified the machine code.
;~ .... The image that has been found will be cleaned up in the same color.
;~ .... Avoid matching the next row (column) when using tolerance lookup.
;~ .... 2. After upgrading to v6.0, the search area uses WinAPI's
;~ .... upper left corner X, Y coordinates, and width, height.
;~ .... This will be better understood and used.

;~ Updated to 5.9 version - 2018/07/21
;~ .... 1. Add PicX(). It is used to divide the Text
;~ .... and then use the FindText2() function to find it.

;~ Updated to 5.8 version - 2018/04/27
;~ .... 1. Using "gcc.exe -O2" to generate machine code (MCode).

;~ Updated to 5.7 version - 2018/01/17
;~ .... 1. I changed the way to capture, Before, click the left button of the mouse,
;~ .... and then move the mouse out of 100 pixels.
;~ .... Now, press down the right button of the mouse,
;~ .... and then move a certain distance and release the right button.
;~ .... 2. I updated the "Capture Image To Text" window,
;~ .... allowing the use of tags to split the text at one time
;~ .... and generate multiple text libraries.

/*
===========================================
[屏幕抓字生成字库工具与找字函数]v5.6  By FeiYue
===========================================

更新历史:

v5.6 改进:颜色模式增加了对偏色的支持,方便高手在游戏中使用。

v5.5 改变:取消了后台查找,因为Win7以上系统不太适用。
改进:直接生成单行的字库,用其他控件来显示字库对应的图像。

v5.3 改进:容差增加为两个,分别是 0_字符 的容许误差百分比。
采用新的算法,提高了带容差参数时的查找速度。
容差为默认值0时,找不到会自动使用 5% 的容差再找一次。

v5.2 改进:新增后台查找,相当于把指定ID的窗口搬到前台再查找。
因此用于前台操作的找字找图代码不用修改就可以转到后台模式。
注:Win7以上系统因PrintWindow不太好用,因此许多窗口不支持。

v5.0 改进:新增了第三种查找模式:边缘灰差模式。

v4.6 改进:增加对多显示器扩展显示的支持。

v4.5 改进:修正了Win10-64位系统的一些兼容性问题。
提高了抓字窗口中二值化、删除操作的反应速度。

v4.3 改进:文字参数中,每个字库文字可以添加用中括号括起来
的容差值,没有中括号才用“查找文字”函数中的容差参数。

v4.2 改进:新增了64位系统的机器码,可用于AHK 64位版。

v4.1 改进:不再使用GDI+获取屏幕图像,直接用GDI实现。

v4.0 改进:文字参数增加竖线分隔的字库形式,可以进行
OCR识别。这种形式也可用于同时查找多幅文字或图片。

v3.5 改进:采用自写的机器码实现图内找字,极大的提高了速度。

===========  屏幕抓字生成字库工具 使用说明  ===========

1、先点击主界面的[抓取文字图像],然后[移动鼠标]到你要
抓取的文字或图像,然后[点击鼠标左键],再[移开鼠标]
100像素以上,会弹出“抓字生成字库”界面。

2、抓字界面会显示抓取图像的彩色放大图像,先要将它二值化为
黑白图像。目前提供了三种二值化方式,任意选一种就行。

(1)颜色二值化:如果文字是单色的,最好采取这种方式。
在放大的图像中[点击某种颜色],然后点击[颜色二值化]。
如果不是单色的,则选定主要颜色后,手动输入偏色,也能够
以颜色加减偏色来二值化(如:红色+/-红色偏色都视为同色)。

(2)灰差二值化:手动输入灰差后(或直接采用默认的50),
点击[灰差二值化]。这种方式容易统一阀值,但黑点偏少。

(3)直接点击[灰度二值化]就会自动计算出一个灰度阀值,
并以这个阀值二值化。自动计算是针对整个图像的所有点的,
所以最好先[手动裁剪]图像边缘,留下中心的图像后再二值化。
当然如果对自动计算的阀值不满意,可以手动输入阀值,慢慢
调整看哪个效果好。另外要统一阀值添加字库时也要手动输入。

3、图像二值化后,可以点击[智删]或[左删]等来裁剪边缘,再
点击[确定],即可在主窗口生成调用“查找文字()”的代码。

4、如果要进行OCR文字识别,那么可以在“识别结果文字”输入框中
输入这幅图像或文字的识别结果(随便写),之后如果点击
[字库分割添加],那么结果文字的每个字都对应图像中以空列
分割的一部分,而如果点击[字库整体添加]则结果文字整体
对应于这幅图像的整体。这两种添加都不会改变主窗口的代码。
提示:可以用[修改]清除一些点生成空列来分开连在一起的字。
也可以添加一些点让左右结构的字不要被空列分割开。
这样修改了原始图像后,代码中的两个容差最好都大于0。
另外逗号等自动分割会裁边,建议手动裁剪保留空白边缘。
注意:字库应统一阀值。一般先在第3步点击确定生成代码,然后
再抓字添加字库,这时要统一采用上一次的阀值来二值化。

5、回到主窗口,点击[全屏查找测试],测试成功后,点击
[复制代码],并粘贴到你自己的脚本中,这时还运行不了,
因为你的代码中没有“查找文字()”函数。请在我的源代码的
最后面找到“查找文字()”函数,将它及后面的函数都复制到
你自己的脚本中就行了(保存成库文件然后 #Include 也行)。

6、由于许多因素会影响屏幕图像,所以换一台电脑一般就要重新
抓字/抓图。设置一样的屏幕分辨率、浏览器放大倍数、(取消)
平滑屏幕字体边缘,可能通用性高一些。单色文字也通用一些。

===========  找字函数 使用说明  ===========

是否成功 := 查找文字( 中心点X, 中心点Y, 左右偏移W, 上下偏移H
, 文字, 颜色, 返回X, 返回Y, 返回OCR结果
, 0字符容许误差百分比, _字符容许误差百分比 )

1、屏幕查找范围为(X-W, Y-H)—>(X+W, Y+H),返回找到文字的中心坐标。

2、颜色带*号的为灰度阀值(或灰差)模式,对于非单色的文字比较好用。

3、颜色不带*号为“RRGGBB-偏色RR偏色GG偏色BB”格式,同大漠一样。

4、末尾的容差参数允许有一些点不同,取值范围 0~1(即 0%~100%)。

5、如果颜色模式的偏色不为0,则末尾两个容差参数也最好大于0。

6、对于游戏中搜图常用的背景透明图,把“_字符”容差取1即可。

7、注意抓字时是鼠标移开后再抓的,如果查找文字时鼠标刚好在
目标位置并造成了变色、凹凸等影响,可能要移开后再查找。

===========================================
*/

#NoEnv
#SingleInstance Force
SetBatchLines, -1
CoordMode, Mouse
CoordMode, Pixel
CoordMode, ToolTip
SetTitleMatchMode, 2
SetWorkingDir, %A_ScriptDir%
;----------------------------
Menu, Tray, Icon, Shell32.dll, 23
Menu, Tray, Add
Menu, Tray, Add, 显示主窗口
Menu, Tray, Default, 显示主窗口
Menu, Tray, Click, 1
;-- 左右上下抓字抓图的范围
ww:=35, hh:=12
nW:=2*ww+1, nH:=2*hh+1
;----------------------------
gosub, 生成抓字窗口
gosub, 生成主窗口
OnExit, savescr
gosub, readscr
return

F12::    ; 按[F12]保存修改并重启脚本
	SetTitleMatchMode, 2
	SplitPath, A_ScriptName,,,, name
	IfWinExist, %name%
	{
		ControlSend, ahk_parent, {Ctrl Down}s{Ctrl Up}
		Sleep, 500
	}
	Reload
return

readscr:
	f=%A_Temp%\~scr1.tmp
	FileRead, s, %f%
	GuiControl, Main:, scr, %s%
	s=
return

savescr:
	f=%A_Temp%\~scr1.tmp
	GuiControlGet, s, Main:, scr
	FileDelete, %f%
	FileAppend, %s%, %f%
	ExitApp

显示主窗口:
	Gui, Main:Show, CEnter
return

生成主窗口:
	Gui, Main:Default
	Gui, +AlwaysOnTop +HwndMain_ID
	Gui, Margin, 15, 15
	Gui, Color, DDEEFF
	Gui, Font, s6 bold, Verdana
	Gui, Add, Edit, xm w660 r25 vMyEdit -Wrap -VScroll
	Gui, Font, s12 norm, Verdana
	Gui, Add, Button, xm w220 gMainRun, 抓取文字图像
	Gui, Add, Button, x+0 wp gMainRun, 全屏查找测试
	Gui, Add, Button, x+0 wp gMainRun, 复制代码
	Gui, Font, s12 cBlue, Verdana
	Gui, Add, Edit, xm w660 h350 vscr Hwndhscr -Wrap HScroll
	Gui, Show, NA, 文字/图像字库生成工具
	;---------------------------------------
	OnMessage(0x100, "EditEvents1")  ; WM_KEYDOWN
	OnMessage(0x201, "EditEvents2")  ; WM_LButtonDOWN
return

EditEvents1() {
	ListLines, Off
	if (A_Gui="Main") and (A_GuiControl="scr")
		SetTimer, 显示文字, -100
}

EditEvents2() {
	ListLines, Off
	if (A_Gui="catch")
		WM_LBUTTONDOWN()
	else
		EditEvents1()
}

显示文字:
	ListLines, Off
	Critical
	ControlGet, i, CurrentLine,,, ahk_id %hscr%
	ControlGet, s, Line, %i%,, ahk_id %hscr%
	if RegExMatch(s,"(\d+)\.([\w+/]{3,})",r)
	{
		s:=RegExReplace(base64tobit(r2),".{" r1 "}","$0`n")
		s:=StrReplace(StrReplace(s,"0","_"),"1","0")
	}
	else s=
	GuiControl, Main:, MyEdit, % Trim(s,"`n")
return

MainRun:
	k:=A_GuiControl
	WinMinimize
	Gui, Hide
	DetectHiddenWindows, Off
	WinWaitClose, ahk_id %Main_ID%
	if IsLabel(k)
		gosub, %k%
	Gui, Main:Show
	GuiControl, Main:Focus, scr
return

复制代码:
	GuiControlGet, s,, scr
	Clipboard:=StrReplace(s,"`n","`r`n")
	s=
return

抓取文字图像:
	;------------------------------
	; 先用一个微型GUI提示抓字范围
	Gui, Mini:Default
	Gui, +LastFound +AlwaysOnTop -Caption +ToolWindow +E0x08000000
	WinSet, Transparent, 100
	Gui, Color, Red
	Gui, Show, Hide w%nW% h%nH%
	;------------------------------
	Hotkey, $*LButton, _LButton_Off, On
	ListLines, Off
	loop {
		MouseGetPos, px, py
		if GetKeyState("LButton","P")
			break
		Gui, Show, % "NA x" (px-ww) " y" (py-hh)
		ToolTip, % "当前鼠标位置:" px "," py
		. "`n请移到目标位置后点击左键"
		Sleep, 20
	}
	KeyWait, LButton
	Gui, Color, White
	loop {
		MouseGetPos, x, y
		if Abs(px-x)+Abs(py-y)>100
			break
		Gui, Show, % "NA x" (x-ww) " y" (y-hh)
		ToolTip, 请把鼠标移开100像素以上
		Sleep, 20
	}
	ToolTip
	ListLines, On
	Hotkey, $*LButton, Off
	Gui, Destroy
	WinWaitClose
	cors:=getc(px,py,ww,hh)
	Gui, catch:Default
	loop, 6
		GuiControl,, Edit%A_Index%
	GuiControl,, huicha, 50
	GuiControl,, xiugai, % xiugai:=0
	gosub, 重读
	Gui, Show, CEnter
	GuiControl, Focus, fazhi
	DetectHiddenWindows, Off
	WinWaitClose, ahk_id %catch_ID%
_LButton_Off:
return

WM_LBUTTONDOWN() {
	global
	ListLines, Off
	MouseGetPos,,,, mclass
	if !InStr(mclass,"Progress")
		return
	MouseGetPos,,,, mid, 2
	For k,v in C_
		if (v=mid)
		{
			if (xiugai and bg!="")
			{
				c:=cc[k], cc[k]:=c="0" ? "_" : c="_" ? "0" : c
				c:=c="0" ? "White" : c="_" ? "Black" : WindowColor
				gosub, SetColor
			}
			else
			{
				c:=cors[k]
				GuiControl, catch:, yanse, % StrReplace(c,"0x")
				c:=((c>>16&0xFF)*38+(c>>8&0xFF)*75+(c&0xFF)*15)>>7
				GuiControl, catch:, huidu, %c%
			}
			return
		}
}

getc(px,py,ww,hh) {
	xywh2xywh(px-ww,py-hh,2*ww+1,2*hh+1,x,y,w,h)
	if (w<1 or h<1)
		return, 0
	bch:=A_BatchLines
	SetBatchLines, -1
	;--------------------------------------
	GetBitsFromScreen(x,y,w,h,Scan0,Stride,bits)
	;--------------------------------------
	cors:=[], k:=0, nW:=2*ww+1, nH:=2*hh+1
	ListLines, Off
	fmt:=A_FormatInteger
	SetFormat, IntegerFast, H
	loop, %nH% {
		j:=py-hh-y+A_Index-1
		loop, %nW% {
			i:=px-ww-x+A_Index-1, k++
			if (i>=0 and i<w and j>=0 and j<h)
				c:=NumGet(Scan0+0,i*4+j*Stride,"uint")
				, cors[k]:="0x" . SubStr(0x1000000|c,-5)
			else
				cors[k]:="0xFFFFFF"
		}
	}
	SetFormat, IntegerFast, %fmt%
	ListLines, On
	; 左右上下超出屏幕边界的值
	cors.left:=Abs(px-ww-x)
	cors.Right:=Abs(px+ww-(x+w-1))
	cors.up:=Abs(py-hh-y)
	cors.down:=Abs(py+hh-(y+h-1))
	SetBatchLines, %bch%
	return, cors
}

全屏查找测试:
	GuiControlGet, s, Main:, scr
	wenzi=
	while RegExMatch(s,"文字[.:]=""([^""]+)""",r)
		wenzi.=r1, s:=StrReplace(s,r,"","",1)
	if !RegExMatch(s,"查找文字\(([^)]+)\)",r)
		return
	StringSplit, r, r1, `,, ""
	if r0<6
		return
	t1:=A_TickCount
	ok:=查找文字(r1,r2,r3,r4,wenzi,r6,X,Y,OCR,r10,r11)
	t1:=A_TickCount-t1
	MsgBox, 4096,, % "查找结果:" (ok ? "成功":"失败")
	. "`n`n文字识别结果:" OCR
	. "`n`n耗时:" t1 " 毫秒,找到的位置:" (ok ? X "," Y:"")
	if ok
	{
		MouseMove, X, Y
		Sleep, 1000
	}
return


生成抓字窗口:
	WindowColor:="0xCCDDEE"
	Gui, catch:Default
	Gui, +LastFound +AlwaysOnTop +ToolWindow +Hwndcatch_ID
	Gui, Margin, 15, 15
	Gui, Color, %WindowColor%
	Gui, Font, s16, Verdana
	ListLines, Off
	w:=(2*35+1)*14//nW+1, h:=(2*12+1)*14//nH+1
	loop, % nH*nW {
		j:=A_Index=1 ? "" : Mod(A_Index,nW)=1 ? "xm y+-1" : "x+-1"
		Gui, Add, Progress, w%w% h%h% %j% -Theme
	}
	ListLines, On
	Gui, Add, Button, xm+120 w70 gRun Section, 上删
	Gui, Add, Button, x+0 wp gRun, 上3
	Gui, Add, Button, xm y+15 wp gRun, 左删
	Gui, Add, Button, x+0 wp gRun, 左3
	Gui, Add, Button, x+15 wp gRun, 智删
	Gui, Add, Button, x+15 wp gRun, 右删
	Gui, Add, Button, x+0 wp gRun, 右3
	Gui, Add, Button, xm+120 y+15 wp gRun, 下删
	Gui, Add, Button, x+0 wp gRun, 下3
	;-------------------------
	Gui, Add, Text,   xm+410 ys+10 Section w60 CEnter, 颜色
	Gui, Add, Edit,   x+2 w120 vyanse ReadOnly
	Gui, Add, Text,   x+2 w60 CEnter, 偏色
	Gui, Add, Edit,   x+2 w120 vpianse Limit6
	Gui, Add, Button, x+5 yp-6  w140 gRun, 颜色二值化
	;-------------------------
	Gui, Add, Text,   xs w60 CEnter, 灰度
	Gui, Add, Edit,   x+2 w120 vhuidu ReadOnly
	Gui, Add, Text,   x+2 w60 CEnter, 阀值
	Gui, Add, Edit,   x+2 w120 vfazhi
	Gui, Add, Button, x+5 yp-6  w140 gRun Default, 灰度二值化
	;-------------------------
	Gui, Add, Text,   xs w244 CEnter, 灰差阀值(与四周比较)
	Gui, Add, Edit,   xs+246 yp w120 vhuicha
	Gui, Add, Button, x+5 yp-6  w140 gRun, 灰差二值化
	;-------------------------
	Gui, Add, Button, xm gRun, 重读
	Gui, Add, Checkbox, x+15 yp+6 vxiugai gRun, 修改黑白色
	Gui, Add, Text,   x+30,  字库识别结果
	Gui, Add, Edit,   x+5 w140 vziku
	Gui, Add, Button, x+5 yp-6 gRun, 分割添加
	Gui, Add, Button, x+5 gRun, 整体添加
	Gui, Add, Button, x+30 gRun, 确定
	Gui, Add, Button, x+10 gCancel, 关闭
	;-------------------------
	Gui, Show, Hide, 抓字生成字库
	WinGet, s, ControlListHwnd
	C_:=StrSplit(s,"`n"), s:=""
return

Run:
	Critical
	k:=A_GuiControl
	if IsLabel(k)
		goto, %k%
return

xiugai:
	GuiControlGet, xiugai
return

SetColor:
	c:=c="White" ? 0xFFFFFF : c="Black" ? 0x000000
: ((c&0xFF)<<16)|(c&0xFF00)|((c&0xFF0000)>>16)
	SendMessage, 0x2001, 0, c,, % "ahk_id " . C_[k]
return

重读:
	if !IsObject(cc)
		cc:=[], gg:=[], pp:=[]
	left:=Right:=up:=down:=k:=0, bg:=""
	loop, % nH*nW {
		cc[++k]:=1, c:=cors[k]
		gg[k]:=((c>>16&0xFF)*38+(c>>8&0xFF)*75+(c&0xFF)*15)>>7
		gosub, SetColor
	}
	; 裁剪抓字范围超过屏幕边界的部分
	loop, % cors.left
		gosub, 左删
	loop, % cors.Right
		gosub, 右删
	loop, % cors.up
		gosub, 上删
	loop, % cors.down
		gosub, 下删
return

颜色二值化:
	GuiControlGet, c,, yanse
	GuiControlGet, dc,, pianse
	if c=
	{
		MsgBox, 4096,, `n    请先进行选色!    `n, 1
		return
	}
	dc:=dc="" ? "000000" : StrReplace(dc,"0x")
	color:=c "-" dc, k:=i:=0
	c:=Round("0x" c), dc:=Round("0x" dc)
	R:=(c>>16)&0xFF, G:=(c>>8)&0xFF, B:=c&0xFF
	dR:=(dc>>16)&0xFF, dG:=(dc>>8)&0xFF, dB:=dc&0xFF
	R1:=R-dR, G1:=G-dG, B1:=B-dB
	R2:=R+dR, G2:=G+dG, B2:=B+dB
	loop, % nH*nW {
		if (cc[++k]="")
			continue
		c:=cors[k], R:=(c>>16)&0xFF, G:=(c>>8)&0xFF, B:=c&0xFF
		if (R>=R1 && R<=R2 && G>=G1 && G<=G2 && B>=B1 && B<=B2)
			cc[k]:="0", c:="Black", i++
		else
			cc[k]:="_", c:="White", i--
		gosub, SetColor
	}
	; 背景色
	bg:=i>0 ? "0":"_"
return

灰度二值化:
	GuiControl, Focus, fazhi
	GuiControlGet, fazhi
	if fazhi=
	{
		; 统计灰度直方图
		loop, 256
			pp[A_Index-1]:=0
		loop, % nH*nW
			if (cc[A_Index]!="")
				pp[gg[A_Index]]++
			; 迭代法求二值化阈值
		IP:=IS:=0
		loop, 256
			k:=A_Index-1, IP+=k*pp[k], IS+=pp[k]
		Newfazhi:=Floor(IP/IS)
		loop, 20 {
			fazhi:=Newfazhi
			IP1:=IS1:=0
			loop, % fazhi+1
				k:=A_Index-1, IP1+=k*pp[k], IS1+=pp[k]
			IP2:=IP-IP1, IS2:=IS-IS1
			if (IS1!=0 and IS2!=0)
				Newfazhi:=Floor((IP1/IS1+IP2/IS2)/2)
			if (Newfazhi=fazhi)
				break
		}
		GuiControl,, fazhi, %fazhi%
	}
	color:="*" fazhi, k:=i:=0
	loop, % nH*nW {
		if (cc[++k]="")
			continue
		if (gg[k]<fazhi+1)
			cc[k]:="0", c:="Black", i++
		else
			cc[k]:="_", c:="White", i--
		gosub, SetColor
	}
	; 背景色
	bg:=i>0 ? "0":"_"
return

灰差二值化:
	GuiControlGet, huicha
	if huicha=
	{
		MsgBox, 4096,, `n  请先设置边缘灰度差(比如50)!  `n, 1
		return
	}
	huicha:=Round(huicha)
	if (left=cors.left)
		gosub, 左删
	if (Right=cors.Right)
		gosub, 右删
	if (up=cors.up)
		gosub, 上删
	if (down=cors.down)
		gosub, 下删
	color:="**" huicha, k:=i:=0
	loop, % nH*nW {
		if (cc[++k]="")
			continue
		c:=gg[k]+huicha
		if (gg[k-1]>c or gg[k+1]>c or gg[k-nW]>c or gg[k+nW]>c)
			cc[k]:="0", c:="Black", i++
		else
			cc[k]:="_", c:="White", i--
		gosub, SetColor
	}
	; 背景色
	bg:=i>0 ? "0":"_"
return

gui_del:
	cc[k]:="", c:=WindowColor
	gosub, SetColor
return

左3:
	loop, 3
		gosub, 左删
return

左删:
	if (left+Right>=nW)
		return
	left++, k:=left
	loop, %nH% {
		gosub, gui_del
		k+=nW
	}
return

右3:
	loop, 3
		gosub, 右删
return

右删:
	if (left+Right>=nW)
		return
	Right++, k:=nW+1-Right
	loop, %nH% {
		gosub, gui_del
		k+=nW
	}
return

上3:
	loop, 3
		gosub, 上删
return

上删:
	if (up+down>=nH)
		return
	up++, k:=(up-1)*nW
	loop, %nW% {
		k++
		gosub, gui_del
	}
return

下3:
	loop, 3
		gosub, 下删
return

下删:
	if (up+down>=nH)
		return
	down++, k:=(nH-down)*nW
	loop, %nW% {
		k++
		gosub, gui_del
	}
return

getwz:
	wz=
	if bg=
		return
	ListLines, Off
	k:=0
	loop, %nH% {
		v=
		loop, %nW%
			v.=cc[++k]
		wz.=v="" ? "" : v "`n"
	}
	ListLines, On
return

智删:
	gosub, getwz
	if wz=
	{
		MsgBox, 4096, 提示, `n请先进行一种二值化!, 1
		return
	}
	while InStr(wz,bg) {
		if (wz~="^" bg "+\n")
		{
			wz:=RegExReplace(wz,"^" bg "+\n")
			gosub, 上删
		}
		else if !(wz~="m`n)[^\n" bg "]$")
		{
			wz:=RegExReplace(wz,"m`n)" bg "$")
			gosub, 右删
		}
		else if (wz~="\n" bg "+\n$")
		{
			wz:=RegExReplace(wz,"\n\K" bg "+\n$")
			gosub, 下删
		}
		else if !(wz~="m`n)^[^\n" bg "]")
		{
			wz:=RegExReplace(wz,"m`n)^" bg)
			gosub, 左删
		}
		else break
		}
	wz=
return

确定:
分割添加:
整体添加:
	gosub, getwz
	if wz=
	{
		MsgBox, 4096, 提示, `n请先进行一种二值化!, 1
		return
	}
	Gui, Hide
	GuiControlGet, ziku
	ziku:=Trim(ziku)
	IfInString, A_ThisLabel, 分割
	{
		; 正则表达式中数字需要十进制
		SetFormat, IntegerFast, d
		s:="", bg:=StrLen(StrReplace(wz,"_"))
		loop {
			while InStr(wz,bg) and !(wz~="m`n)^[^\n" bg "]")
				wz:=RegExReplace(wz,"m`n)^.")
			loop, % InStr(wz,"`n")-1 {
				i:=A_Index
				if !(wz~="m`n)^.{" i "}[^\n" bg "]")
				{
					; 自动分割会裁边,小数点等的字库要手动制作
					v:=RegExReplace(wz,"m`n)^(.{" i "}).*","$1")
					v:=RegExReplace(v,"^(" bg "+\n)+")
					v:=RegExReplace(v,"\n\K(" bg "+\n)+$")
					s.=towz(SubStr(ziku,1,1),v)
					ziku:=SubStr(ziku,2)
					wz:=RegExReplace(wz,"m`n)^.{" i "}")
					continue, 2
				}
			}
			break
		}
		add(s)
		return
	}
	IfInString, A_ThisLabel, 整体
	{
		add(towz(ziku,wz))
		return
	}
	; 生成代码中的坐标为裁剪后整体文字的中心位置
	px1:=px-ww+left+(nW-left-Right)//2
	py1:=py-hh+up+(nH-up-down)//2
	s:= StrReplace(towz(ziku,wz),"文字.=","文字:=")
	. "`nif 查找文字(" px1 "," py1 ",150000,150000,文字,"""
	. color . """,X,Y,OCR,0,0)`n"
	. "{`n  CoordMode, Mouse`n  MouseMove, X, Y`n}`n"
	GuiControl, Main:, scr, %s%
	s:=wz:=""
return

towz(ziku,wz) {
	SetFormat, IntegerFast, d
	wz:=StrReplace(StrReplace(wz,"0","1"),"_","0")
	wz:=InStr(wz,"`n")-1 . "." . bit2base64(wz)
	return, "`n文字.=""|<" ziku ">" wz """`n"
}

add(s) {
	global hscr
	s:=RegExReplace("`n" s "`n","\R","`r`n")
	ControlGet, i, CurrentCol,,, ahk_id %hscr%
	if i>1
		ControlSend,, {Home}{Down}, ahk_id %hscr%
	Control, EditPaste, %s%,, ahk_id %hscr%
}


;---- 将后面的函数附加到自己的脚本中 ----


;-----------------------------------------
; 查找屏幕文字/图像字库及OCR识别
; 注意:参数中的x、y为中心点坐标,w、h为左右上下偏移
; cha1、cha0分别为0、_字符的容许误差百分比
;-----------------------------------------
查找文字(x,y,w,h,wz,c,ByRef rx="",ByRef ry="",ByRef ocr=""
	, cha1=0, cha0=0)
{
	xywh2xywh(x-w,y-h,2*w+1,2*h+1,x,y,w,h)
	if (w<1 or h<1)
		return, 0
	bch:=A_BatchLines
	SetBatchLines, -1
	;--------------------------------------
	GetBitsFromScreen(x,y,w,h,Scan0,Stride,bits)
	;--------------------------------------
	; 设定图内查找范围,注意不要越界
	sx:=0, sy:=0, sw:=w, sh:=h
	loop, 2 {
		if PicOCR(Scan0,Stride,sx,sy,sw,sh,wz,c
			,rx,ry,ocr,cha1,cha0)
		{
			rx+=x, ry+=y
			SetBatchLines, %bch%
			return, 1
		}
		; 容差为0的若失败则使用 5% 的容差再找一次
		if (A_Index=1 and cha1=0 and cha0=0)
			cha1:=0.05, cha0:=0.05
		else break
	}
	SetBatchLines, %bch%
	return, 0
}

;-- 规范输入范围在屏幕范围内
xywh2xywh(x1,y1,w1,h1,ByRef x,ByRef y,ByRef w,ByRef h)
{
	; 获取包含所有显示器的虚拟屏幕范围
	SysGet, zx, 76
	SysGet, zy, 77
	SysGet, zw, 78
	SysGet, zh, 79
	left:=x1, Right:=x1+w1-1, up:=y1, down:=y1+h1-1
	left:=left<zx ? zx:left, Right:=Right>zx+zw-1 ? zx+zw-1:Right
	up:=up<zy ? zy:up, down:=down>zy+zh-1 ? zy+zh-1:down
	x:=left, y:=up, w:=Right-left+1, h:=down-up+1
}

;-- 获取屏幕图像的内存数据,图像包括透明窗口
GetBitsFromScreen(x,y,w,h,ByRef Scan0,ByRef Stride,ByRef bits)
{
	VarSetCapacity(bits,w*h*4,0), bpp:=32
	Scan0:=&bits, Stride:=((w*bpp+31)//32)*4
	Ptr:=A_PtrSize ? "UPtr" : "UInt", PtrP:=Ptr . "*"
	; 桌面窗口对应包含所有显示器的虚拟屏幕
	win:=DllCall("GetDesktopWindow", Ptr)
	hDC:=DllCall("GetWindowDC", Ptr,win, Ptr)
	mDC:=DllCall("CreateCompatibleDC", Ptr,hDC, Ptr)
	;-------------------------
	VarSetCapacity(bi, 40, 0), NumPut(40, bi, 0, "int")
	NumPut(w, bi, 4, "int"), NumPut(-h, bi, 8, "int")
	NumPut(1, bi, 12, "short"), NumPut(bpp, bi, 14, "short")
	;-------------------------
	if hBM:=DllCall("CreateDIBSection", Ptr,mDC, Ptr,&bi
		, "int",0, PtrP,ppvBits, Ptr,0, "int",0, Ptr)
	{
		oBM:=DllCall("SelectObject", Ptr,mDC, Ptr,hBM, Ptr)
		DllCall("BitBlt", Ptr,mDC, "int",0, "int",0, "int",w, "int",h
			, Ptr,hDC, "int",x, "int",y, "uint",0x00CC0020|0x40000000)
		DllCall("RtlMoveMemory","ptr",Scan0,"ptr",ppvBits,"ptr",Stride*h)
		DllCall("SelectObject", Ptr,mDC, Ptr,oBM)
	}
	DllCall("DeleteObject", Ptr,hBM)
	DllCall("DeleteDC", Ptr,mDC)
	DllCall("ReleaseDC", Ptr,win, Ptr,hDC)
}

;-----------------------------------------
; 图像内查找文字/图像字符串及OCR函数
;-----------------------------------------
PicOCR(Scan0, Stride, sx, sy, sw, sh, wenzi, c
	, ByRef rx, ByRef ry, ByRef ocr, cha1, cha0)
{
	static MyFunc
	if !MyFunc
	{
		x32:="5589E55383C4808B452C0FAF45248B5528C1E20201D0894"
		. "5F08B5530B80000000029D0C1E00289C28B452401D08945ECC"
		. "745E800000000C745D800000000C745D4000000008B4530894"
		. "5D08B45348945CCC745C800000000837D08000F854D0100008"
		. "B450CC1E81025FF0000008945C48B450CC1E80825FF0000008"
		. "945C08B450C25FF0000008945BC8B4510C1E81025FF0000008"
		. "945B88B4510C1E80825FF0000008945B48B451025FF0000008"
		. "945B08B45C42B45B88945AC8B45C02B45B48945A88B45BC2B4"
		. "5B08945A48B55C48B45B801D08945A08B55C08B45B401D0894"
		. "59C8B55BC8B45B001D0894598C745F400000000E9A6000000C"
		. "745F800000000E9840000008B45F083C00289C28B452001D00"
		. "FB6000FB6C08945C48B45F083C00189C28B452001D00FB6000"
		. "FB6C08945C08B55F08B452001D00FB6000FB6C08945BC8B45C"
		. "43B45AC7C338B45C43B45A07F2B8B45C03B45A87C238B45C03"
		. "B459C7F1B8B45BC3B45A47C138B45BC3B45987F0B8B55E88B4"
		. "53C01D0C600318345F8018345F0048345E8018B45F83B45300"
		. "F8C70FFFFFF8345F4018B45EC0145F08B45F43B45340F8C4EF"
		. "FFFFFE917020000837D08010F85A30000008B450C83C001C1E"
		. "00789450CC745F400000000EB7DC745F800000000EB628B45F"
		. "083C00289C28B452001D00FB6000FB6C06BD0268B45F083C00"
		. "189C18B452001C80FB6000FB6C06BC04B8D0C028B55F08B452"
		. "001D00FB6000FB6D089D0C1E00429D001C83B450C730B8B55E"
		. "88B453C01D0C600318345F8018345F0048345E8018B45F83B4"
		. "5307C968345F4018B45EC0145F08B45F43B45340F8C77FFFFF"
		. "FE96A010000C745F400000000EB7BC745F800000000EB608B5"
		. "5E88B45388D0C028B45F083C00289C28B452001D00FB6000FB"
		. "6C06BD0268B45F083C00189C38B452001D80FB6000FB6C06BC"
		. "04B8D1C028B55F08B452001D00FB6000FB6D089D0C1E00429D"
		. "001D8C1F80788018345F8018345F0048345E8018B45F83B453"
		. "07C988345F4018B45EC0145F08B45F43B45340F8C79FFFFFF8"
		. "B453083E8018945948B453483E801894590C745F401000000E"
		. "9B0000000C745F801000000E9940000008B45F40FAF453089C"
		. "28B45F801D08945E88B55E88B453801D00FB6000FB6D08B450"
		. "C01D08945EC8B45E88D50FF8B453801D00FB6000FB6C03B45E"
		. "C7F488B45E88D50018B453801D00FB6000FB6C03B45EC7F328"
		. "B45E82B453089C28B453801D00FB6000FB6C03B45EC7F1A8B5"
		. "5E88B453001D089C28B453801D00FB6000FB6C03B45EC7E0B8"
		. "B55E88B453C01D0C600318345F8018B45F83B45940F8C60FFF"
		. "FFF8345F4018B45F43B45900F8C44FFFFFF8B45D40FAF45308"
		. "9C28B45D801D089458CC745F800000000E912030000C745F40"
		. "0000000E9F60200008B45F40FAF453089C28B45F801C28B458"
		. "C01D08945F0C745E800000000E9C40200008B45E883C0018D1"
		. "485000000008B454801D08B008945948B45E883C0028D14850"
		. "00000008B454801D08B008945908B55F88B459401D03B45D00"
		. "F8F800200008B55F48B459001D03B45CC0F8F6F0200008B45E"
		. "88D1485000000008B454801D08B008945888B45E883C0038D1"
		. "485000000008B454801D08B008945848B45E883C0048D14850"
		. "00000008B454801D08B008945808B45E883C0058D148500000"
		. "0008B454801D08B008945E48B45E883C0068D1485000000008"
		. "B454801D08B008945E08B45843945800F4D458089857CFFFFF"
		. "FC745EC00000000E9820000008B45EC3B45847D378B55888B4"
		. "5EC01D08D1485000000008B454001D08B108B45F001D089C28"
		. "B453C01D00FB6003C31740E836DE401837DE4000F889E01000"
		. "08B45EC3B45807D378B55888B45EC01D08D1485000000008B4"
		. "54401D08B108B45F001D089C28B453C01D00FB6003C30740E8"
		. "36DE001837DE0000F88620100008345EC018B45EC3B857CFFF"
		. "FFF0F8C6FFFFFFF837DC8000F858A0000008B55288B45F801C"
		. "28B454C89108B454C83C0048B4D2C8B55F401CA89108B454C8"
		. "D50088B459489028B454C8D500C8B45908902C745C80400000"
		. "0837D180175728B45F42B45908945D48B559089D001C001D08"
		. "945CC8B559089D0C1E00201D001C083C0648945D0837DD4007"
		. "907C745D4000000008B45342B45D43B45CC7D338B45342B45D"
		. "48945CCEB288B55DC8B451401D03B45F87F1B8B45C88D50018"
		. "955C88D1485000000008B454C01D0C700FFFFFFFF8B45C88D5"
		. "0018955C88D1485000000008B454C01D08B55E883C20789108"
		. "17DC8FD0300000F8FAA000000C745EC00000000EB298B55888"
		. "B45EC01D08D1485000000008B454001D08B108B45F001D089C"
		. "28B453C01D0C600308345EC018B45EC3B45847CCF8B45F883C"
		. "0010145D88B45948945DC8B45302B45D83B45D00F8D0AFDFFF"
		. "F8B45302B45D88945D0E9FCFCFFFF90EB0490EB01908345E80"
		. "78B45E83B451C0F8C30FDFFFF8345F4018B45F43B45CC0F8CF"
		. "EFCFFFF8345F8018B45F83B45D00F8CE2FCFFFF837DC800750"
		. "8B800000000EB0690B80100000083EC805B5DC24800"
		x64:="554889E54883C480894D108955184489452044894D288B4"
		. "5580FAF45488B5550C1E20201D08945F48B5560B8000000002"
		. "9D0C1E00289C28B454801D08945F0C745EC00000000C745DC0"
		. "0000000C745D8000000008B45608945D48B45688945D0C745C"
		. "C00000000837D10000F855D0100008B4518C1E81025FF00000"
		. "08945C88B4518C1E80825FF0000008945C48B451825FF00000"
		. "08945C08B4520C1E81025FF0000008945BC8B4520C1E80825F"
		. "F0000008945B88B452025FF0000008945B48B45C82B45BC894"
		. "5B08B45C42B45B88945AC8B45C02B45B48945A88B55C88B45B"
		. "C01D08945A48B55C48B45B801D08945A08B55C08B45B401D08"
		. "9459CC745F800000000E9B6000000C745FC00000000E994000"
		. "0008B45F483C0024863D0488B45404801D00FB6000FB6C0894"
		. "5C88B45F483C0014863D0488B45404801D00FB6000FB6C0894"
		. "5C48B45F44863D0488B45404801D00FB6000FB6C08945C08B4"
		. "5C83B45B07C388B45C83B45A47F308B45C43B45AC7C288B45C"
		. "43B45A07F208B45C03B45A87C188B45C03B459C7F108B45EC4"
		. "863D0488B45784801D0C600318345FC018345F4048345EC018"
		. "B45FC3B45600F8C60FFFFFF8345F8018B45F00145F48B45F83"
		. "B45680F8C3EFFFFFFE959020000837D10010F85B60000008B4"
		. "51883C001C1E007894518C745F800000000E98D000000C745F"
		. "C00000000EB728B45F483C0024863D0488B45404801D00FB60"
		. "00FB6C06BD0268B45F483C0014863C8488B45404801C80FB60"
		. "00FB6C06BC04B8D0C028B45F44863D0488B45404801D00FB60"
		. "00FB6D089D0C1E00429D001C83B451873108B45EC4863D0488"
		. "B45784801D0C600318345FC018345F4048345EC018B45FC3B4"
		. "5607C868345F8018B45F00145F48B45F83B45680F8C67FFFFF"
		. "FE999010000C745F800000000E98D000000C745FC00000000E"
		. "B728B45EC4863D0488B4570488D0C028B45F483C0024863D04"
		. "88B45404801D00FB6000FB6C06BD0268B45F483C0014C63C04"
		. "88B45404C01C00FB6000FB6C06BC04B448D04028B45F44863D"
		. "0488B45404801D00FB6000FB6D089D0C1E00429D04401C0C1F"
		. "80788018345FC018345F4048345EC018B45FC3B45607C86834"
		. "5F8018B45F00145F48B45F83B45680F8C67FFFFFF8B456083E"
		. "8018945988B456883E801894594C745F801000000E9CA00000"
		. "0C745FC01000000E9AE0000008B45F80FAF456089C28B45FC0"
		. "1D08945EC8B45EC4863D0488B45704801D00FB6000FB6D08B4"
		. "51801D08945F08B45EC4898488D50FF488B45704801D00FB60"
		. "00FB6C03B45F07F538B45EC4898488D5001488B45704801D00"
		. "FB6000FB6C03B45F07F388B45EC2B45604863D0488B4570480"
		. "1D00FB6000FB6C03B45F07F1D8B55EC8B456001D04863D0488"
		. "B45704801D00FB6000FB6C03B45F07E108B45EC4863D0488B4"
		. "5784801D0C600318345FC018B45FC3B45980F8C46FFFFFF834"
		. "5F8018B45F83B45940F8C2AFFFFFF8B45D80FAF456089C28B4"
		. "5DC01D0894590C745FC00000000E98E030000C745F80000000"
		. "0E9720300008B45F80FAF456089C28B45FC01C28B459001D08"
		. "945F4C745EC00000000E9400300008B45EC48984883C001488"
		. "D148500000000488B85900000004801D08B008945988B45EC4"
		. "8984883C002488D148500000000488B85900000004801D08B0"
		. "08945948B55FC8B459801D03B45D40F8FEA0200008B55F88B4"
		. "59401D03B45D00F8FD90200008B45EC4898488D14850000000"
		. "0488B85900000004801D08B0089458C8B45EC48984883C0034"
		. "88D148500000000488B85900000004801D08B008945888B45E"
		. "C48984883C004488D148500000000488B85900000004801D08"
		. "B008945848B45EC48984883C005488D148500000000488B859"
		. "00000004801D08B008945E88B45EC48984883C006488D14850"
		. "0000000488B85900000004801D08B008945E48B45883945840"
		. "F4D4584894580C745F000000000E9980000008B45F03B45887"
		. "D428B558C8B45F001D04898488D148500000000488B8580000"
		. "0004801D08B108B45F401D04863D0488B45784801D00FB6003"
		. "C31740E836DE801837DE8000F88D40100008B45F03B45847D4"
		. "28B558C8B45F001D04898488D148500000000488B858800000"
		. "04801D08B108B45F401D04863D0488B45784801D00FB6003C3"
		. "0740E836DE401837DE4000F888D0100008345F0018B45F03B4"
		. "5800F8C5CFFFFFF837DCC000F859D0000008B55508B45FC01C"
		. "2488B85980000008910488B85980000004883C0048B4D588B5"
		. "5F801CA8910488B8598000000488D50088B45988902488B859"
		. "8000000488D500C8B45948902C745CC04000000837D3001757"
		. "A8B45F82B45948945D88B559489D001C001D08945D08B55948"
		. "9D0C1E00201D001C083C0648945D4837DD8007907C745D8000"
		. "000008B45682B45D83B45D07D3B8B45682B45D88945D0EB308"
		. "B55E08B452801D03B45FC7F238B45CC8D50018955CC4898488"
		. "D148500000000488B85980000004801D0C700FFFFFFFF8B45C"
		. "C8D50018955CC4898488D148500000000488B8598000000480"
		. "1D08B55EC83C2078910817DCCFD0300000F8FB5000000C745F"
		. "000000000EB348B558C8B45F001D04898488D1485000000004"
		. "88B85800000004801D08B108B45F401D04863D0488B4578480"
		. "1D0C600308345F0018B45F03B45887CC48B45FC83C0010145D"
		. "C8B45988945E08B45602B45DC3B45D40F8D8EFCFFFF8B45602"
		. "B45DC8945D4E980FCFFFF90EB0490EB01908345EC078B45EC3"
		. "B45380F8CB4FCFFFF8345F8018B45F83B45D00F8C82FCFFFF8"
		. "345FC018B45FC3B45D40F8C66FCFFFF837DCC007508B800000"
		. "000EB0690B8010000004883EC805DC3909090909090909090"
		MCode(MyFunc, A_PtrSize=8 ? x64:x32)
	}
	;--------------------------------------
	; 统计字库文字的个数和宽高,将解释文字存入数组并删除<>
	;--------------------------------------
	ocrtxt:=[], info:=[], t1:=[], t0:=[], p:=0
	loop, Parse, wenzi, |
	{
		v:=A_LoopField, txt:="", e1:=cha1, e0:=cha0
		; 用角括号输入每个字库字符串的识别结果文字
		if RegExMatch(v,"<([^>]*)>",r)
			v:=StrReplace(v,r), txt:=Trim(r1)
		; 可以用中括号输入每个文字的两个容差,以逗号分隔
		if RegExMatch(v,"\[([^\]]*)]",r)
		{
			v:=StrReplace(v,r), r2:=""
			StringSplit, r, r1, `,
			e1:=r1, e0:=r2
		}
		; 记录每个文字的起始位置、宽、高、01字符的数量和容差
		StringSplit, r, v, .
		w:=r1, v:=base64tobit(r2), h:=StrLen(v)//w
		if (r0<2 or h<1 or w>sw or h>sh or StrLen(v)!=w*h)
			continue
		len1:=len0:=0, j:=sw-w+1, i:=-j
		ListLines, Off
		loop, Parse, v
		{
			i:=Mod(A_Index,w)=1 ? i+j : i+1
			if A_LoopField
				t1[4*(p+len1++)]:=i
			else
				t0[4*(p+len0++)]:=i
		}
		ListLines, On
		e1:=Round(len1*e1), e0:=Round(len0*e0)
		info.Push(p,w,h,len1,len0,e1,e0)
		ocrtxt.Push(txt), p+=StrLen(v)
	}
	IfEqual, p, 0, return, 0
	;--------------------------------------
	; in 输入各文字的起始位置等信息,out 返回结果
	; interval 两字的间隔超过此值,识别结果就加入*号
	; limit 根据第一个字限制后续查找高度和右范围
	;--------------------------------------
	mode:=InStr(c,"**") ? 2 : InStr(c,"*") ? 1 : 0
	c:=StrReplace(c,"*"), interval:=5, limit:=1
	if mode=0
	{
		c:=StrReplace(c,"0x") . "-0"
		StringSplit, r, c, -
		c:=Round("0x" r1), dc:=Round("0x" r2)
	}
	num:=info.MaxIndex()
		, VarSetCapacity(gs, sw*sh)
		, VarSetCapacity(ss, sw*sh, Asc("0"))
		, VarSetCapacity(s1, p*4, 0)
		, VarSetCapacity(s0, p*4, 0)
		, VarSetCapacity(in, num*4)
		, VarSetCapacity(out, 1024*4, 0)
	ListLines, Off
	loop, % num
		NumPut(info[A_Index], in, (A_Index-1)*4, "int")
	For k,v in t1
		NumPut(v, s1, k, "int")
	For k,v in t0
		NumPut(v, s0, k, "int")
	ListLines, On
	if DllCall(&MyFunc, "int",mode
		, "uint",c, "uint",dc
		, "int",interval, "int",limit, "int",num
		, "ptr",Scan0, "int",Stride
		, "int",sx, "int",sy, "int",sw, "int",sh
		, "ptr",&gs, "ptr",&ss
		, "ptr",&s1, "ptr",&s0, "ptr",&in, "ptr",&out)
	{
		; 返回第一个文字的中心位置
		x:=NumGet(out,0,"int"), y:=NumGet(out,4,"int")
		w:=NumGet(out,8,"int"), h:=NumGet(out,12,"int")
		rx:=x+w//2, ry:=y+h//2, ocr:="", i:=12
		while (k:=NumGet(out,i+=4,"int"))
			v:=ocrtxt[k//7], ocr.=v="" ? "*" : v
		return, 1
	}
	return, 0
}

MCode(ByRef code, hex)
{
	ListLines, Off
	bch:=A_BatchLines
	SetBatchLines, -1
	VarSetCapacity(code, StrLen(hex)//2)
	loop, % StrLen(hex)//2
		NumPut("0x" . SubStr(hex,2*A_Index-1,2), code, A_Index-1, "char")
	Ptr:=A_PtrSize ? "UPtr" : "UInt"
	DllCall("VirtualProtect", Ptr,&code, Ptr
		,VarSetCapacity(code), "uint",0x40, Ptr . "*",0)
	SetBatchLines, %bch%
	ListLines, On
}

base64tobit(s)
{
	ListLines, Off
	Chars:="0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	. "abcdefghijklmnopqrstuvwxyz"
	SetFormat, IntegerFast, d
	StringCaseSense, On
	loop, Parse, Chars
	{
		i:=A_Index-1, v:=(i>>5&1) . (i>>4&1)
		. (i>>3&1) . (i>>2&1) . (i>>1&1) . (i&1)
		s:=StrReplace(s,A_LoopField,v)
	}
	StringCaseSense, Off
	s:=SubStr(s,1,InStr(s,"1",0,0)-1)
	s:=RegExReplace(s,"[^01]+")
	ListLines, On
	return, s
}

bit2base64(s)
{
	ListLines, Off
	s:=RegExReplace(s,"[^01]+")
	s.=SubStr("100000",1,6-Mod(StrLen(s),6))
	s:=RegExReplace(s,".{6}","|$0")
	Chars:="0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	. "abcdefghijklmnopqrstuvwxyz"
	SetFormat, IntegerFast, d
	loop, Parse, Chars
	{
		i:=A_Index-1, v:="|" . (i>>5&1) . (i>>4&1)
		. (i>>3&1) . (i>>2&1) . (i>>1&1) . (i&1)
		s:=StrReplace(s,v,A_LoopField)
	}
	ListLines, On
	return, s
}


/************  机器码的C源码 ************

int __attribute__((__stdcall__)) OCR( int mode
, unsigned int c, unsigned int dc
, int interval, int limit, int num
, unsigned char * Bmp, int Stride
, int sx, int sy, int sw, int sh
, unsigned char * gs, char * ss
, int * s1, int * s0, int * in, int * out )
{
int x, y, o=sy*Stride+sx*4, j=Stride-4*sw, i=0;
int o1, o2, w, h, max, len1, len0, e1, e0, lastw;
int sx1=0, sy1=0, sw1=sw, sh1=sh, Ptr=0;

//先将图像各点在ss中转化为01字符
if (mode==0)    //颜色模式
{
int R=(c>>16)&0xFF, G=(c>>8)&0xFF, B=c&0xFF;
int dR=(dc>>16)&0xFF, dG=(dc>>8)&0xFF, dB=dc&0xFF;
int R1=R-dR, G1=G-dG, B1=B-dB;
int R2=R+dR, G2=G+dG, B2=B+dB;
for (y=0; y<sh; y++, o+=j)
for (x=0; x<sw; x++, o+=4, i++)
{
R=Bmp[2+o]; G=Bmp[1+o]; B=Bmp[o];
if (R>=R1 && R<=R2 && G>=G1 && G<=G2 && B>=B1 && B<=B2)
ss[i]='1';
}
}
else if (mode==1)    //灰度阀值模式
{
c=(c+1)*128;
for (y=0; y<sh; y++, o+=j)
for (x=0; x<sw; x++, o+=4, i++)
if (Bmp[2+o]*38+Bmp[1+o]*75+Bmp[o]*15<c)
ss[i]='1';
}
else    //mode==2,边缘灰差模式
{
for (y=0; y<sh; y++, o+=j)
{
for (x=0; x<sw; x++, o+=4, i++)
gs[i]=(Bmp[2+o]*38+Bmp[1+o]*75+Bmp[o]*15)>>7;
}
w=sw-1; h=sh-1;
for (y=1; y<h; y++)
{
for (x=1; x<w; x++)
{
i=y*sw+x; j=gs[i]+c;
if (gs[i-1]>j || gs[i+1]>j || gs[i-sw]>j || gs[i+sw]>j)
ss[i]='1';
}
}
}

//ss中每一点都进行一次全字库匹配
NextWenzi:
o1=sy1*sw+sx1;
for (x=0; x<sw1; x++)
{
for (y=0; y<sh1; y++)
{
o=y*sw+x+o1;
for (i=0; i<num; i+=7)
{
w=in[i+1]; h=in[i+2];
if (x+w>sw1 || y+h>sh1)
continue;
o2=in[i]; len1=in[i+3]; len0=in[i+4];
e1=in[i+5]; e0=in[i+6];
max=len1>len0 ? len1 : len0;
for (j=0; j<max; j++)
{
if (j<len1 && ss[o+s1[o2+j]]!='1' && (--e1)<0)
goto NoMatch;
if (j<len0 && ss[o+s0[o2+j]]!='0' && (--e0)<0)
goto NoMatch;
}
//成功找到文字或图像
if (Ptr==0)
{
out[0]=sx+x; out[1]=sy+y; out[2]=w; out[3]=h; Ptr=4;
//找到第一个字就确定后续查找的上下范围和右边范围
if (limit==1)
{
sy1=y-h; sh1=h*3; sw1=h*10+100;
if (sy1<0)
sy1=0;
if (sh1>sh-sy1)
sh1=sh-sy1;
}
}  //与前一字间隔较远就添加*号
else if (x>=lastw + interval)
out[Ptr++]=-1;
out[Ptr++]=i+7;
//返回的int数组中元素个数不超过1024
if (Ptr>1021)
goto returnOK;
//清除找到的文字,后续查找范围从文字左侧X坐标+1开始
for (j=0; j<len1; j++)
ss[o+s1[o2+j]]='0';
sx1+=x+1; lastw=w;
if (sw1>sw-sx1)
sw1=sw-sx1;
goto NextWenzi;
//------------
NoMatch:
continue;
}
}
}
if (Ptr==0)
return 0;
returnOK:
return 1;
}

*/


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

;
*/

/*
; ==========================================================================
以下是以前的老版本的文件管理规范

徐晓亮的电脑文件管理规范



2019年11月15日定稿



1、本文的最新版访问网页地址是











https://www.cnblogs.com/delphixx/p/11846546.html

备用网址:

https://gitee.com/weiyunwps618/codes/x6t3se08fiwjc95rbaqz787



2、我的所有电脑文件按照用途和大小分成叁大类

第1类是办公文件,办公文件只分类保存在腾讯微云网盘中,严格禁止在除了腾讯微云网盘以外的其他地方新建或保存办公文件,如果因为需要上传或共享文件时可以临时导出办公文件到电脑桌面,但是一旦上传或共享文件操作完毕必需立即永久性地删除桌面的临时办公文件。



第2类是非办公文件,非办公文件只分类保存在随身固态U盘中,严格禁止在除了随身固态U盘以外的其他地方新建或保存非办公文件。



时刻保持所有电脑文件版本最新,不缺失,不重复并按照日期完整手动备份办公文件到电脑桌面。



第3类是本地磁盘或者安卓手机TF内存卡文件



3、办公文件按照内容分成6类

第1类即此文档,此文档保存在“01- 文件管理规范”文件夹中。



第2类是工作单位的办公文件,此类文件只分类保存在“02- 单位办公文件”文件夹中。



第3类是我的个人办公文件,此类文件只分类保存在“03-本人办公文件”文件夹中。



第4类是其他单位的办公文件,此类文件只分类保存在“04-其他单位办公文件”文件夹中。



第5类是其他个人的办公文件,此类文件只分类保存在“05-其他个人办公文件”文件夹中。



第6类是我的所有网址用户名密码,此文件保存在“06-网址用户名密码”文件夹中。并打印两份已加密转换的暗文到A4纸分别保存在单位和家中的保险柜中。



4、办公文件按照格式分成3类

第1类Word文档,文档格式采用最新的微软Office 2019 docx格式,严格禁止使用Word 97-2003 doc文档或纯文本文件txt等其他格式。



第2类Excel表格,表格格式采用最新的微软Office 2019 xlsx格式,严格禁止使用Excel 97-2003 xls等其他格式。



第3类安卓手机拍照JP图片格式,可以使用文档表格格式时尽量不使用图片格式。图片在上传保存时应当先检查清晰度和大小,清晰度以能正确反映照片内容为准,图片大小尽量小于1MB(可以调整手机拍照的清晰度来控制图片文件大小)。推荐使用Photoshop CS6编辑图片。



5、办公文件新建、编辑、删除、查询和备份



微云携手Office在线编辑,腾讯微云国内首家与微软Office合作,用微云随时随地都可以对文档在线编辑!



只使用腾讯微云网盘Web网页版的新建Word文档和新建Excel表格的菜单新建办公文档和表格。

在编辑办公文件时时刻关注窗口顶部的保存状态是否有“已保存”的文字提示。





推荐使用搜狗高速浏览器电脑桌面版登录腾讯微云网盘Web网页版







登录腾讯微云网盘Web网页版时请使用手机QQ的扫一扫功能登录

为了简便的编辑办公文档请拖放任务栏浏览器图标到第一个

并拖放浏览器标签栏Word文档图标到第一个

操作电脑时请不要随意关闭编辑或浏览窗口,建议完成本次所有操作需要离开电脑时再一起关闭窗口和电脑。



台式电脑、笔记本电脑和安卓手机都安装WPS_Office_2019专业免激活软件。作为Web网页版Office搜索、查看和编辑文档表格的备用软件。只有在腾讯微云网盘Web网页版中附带的Word和Excel无法使用时才使用WPS软件,为了使用实时自动保存功能只好牺牲一些快捷键操作功能了,请务必养成此习惯。并且不要在电脑桌面、本地磁盘或手机TF内存卡中新建或编辑文档表格(可以下载备份副本到本地存储空间,但是不要直接在本地存储空间中新建或编辑办公文件)。



不建议临时在电脑桌面上新建办公文件,如果因上传、发送等原因必需在电脑桌面上保存办公文件时在本次办公结束时必需清理干净桌面上的临时文件,桌面上只可以长期保存微云网盘Web网页版快捷方式、自建“回收站”文件夹和每日备份文件夹等少量图标。



执行以下批处理脚本命令文件可以设置WPS文字和WPS表格的定时自动备份,不要因为WPS_Office_2019有自动备份功能就不坚持使用腾讯微云网盘附带的Word网页版和Excel网页版编辑文档和表格,为了保持办公文件的随时随地可以快捷的搜索、查看和编辑,时刻保持最新版本,集中统一唯一分类整理,请始终坚持只在腾讯微云网盘Web网页版中办公,请始终坚持只使用Word网页版和Excel网页版查看和编辑办公文件,即使无法使用快捷键也在所不惜。再强调一下,请不要安装和使用MS_Office或者WPS_Office,永远不要用。如果你不同意我的观点非要使用WPS或者Office时,建议把此批处理设置成跟随电脑操作系统一起在启动时自动执行一下,当然此脚本也可以翻译成AutoHotkey或者其他编程语言的脚本或程序,只要效果相同用什么编程语言无所谓了。

rem ================================================

rem 一键设置WPS_Office_2019专业版的定时自动备份的批处理文件



rem 为何使用批处理而不使用AutoHotkey,批处理兼容性更高,AutoHotkey容易被杀毒软件误杀

rem 新建WPS文字和WPS表格定时备份的目的文件夹

md d:\WPSTimeBackup



rem 设置WPS_Office_2019专业版的定时自动备份

reg add "HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\Backup" /v "AutoRecoverFilePath" /t REG_SZ /d "d:\WPSTimeBackup" /f

reg add "HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\Backup" /v "EnableBackup" /t REG_SZ /d "0" /f

reg add "HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\Backup" /v "EnableTimeBackup" /t REG_SZ /d "1" /f

reg add "HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\Backup" /v "TimeBackupInterval" /t REG_SZ /d "1" /f

rem ================================================



下面是AutoHotkey版本的WPS定时自动备份设置脚本文件

;~ rem 一键设置WPS_Office_2019专业版的定时自动备份的批处理文件



;~ rem 新建WPS文字和WPS表格定时备份的目的文件夹

FileCreateDir,d:\WPSTimeBackup



;~ rem 设置WPS_Office_2019专业版的定时自动备份

;~ RegWrite, ValueType, RootKey\SubKey [, ValueName, Value]  ; v1.1.21+

RegWrite,REG_SZ,HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\Backup,AutoRecoverFilePath,D:\WPSTimeBackup

RegWrite,REG_SZ,HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\Backup,EnableBackup,0

RegWrite,REG_SZ,HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\Backup,EnableTimeBackup,1

RegWrite,REG_SZ,HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\Backup,TimeBackupInterval,1

;~ rem ===========================================





严格禁止在电脑本地磁盘中新建办公文件。

严格禁止在安卓手机TF内存卡中新建办公文件。

严格禁止在腾讯微云网盘电脑桌面版中新建办公文件,

请不要安装微云桌面版。

严格禁止用Microsoft_Office 桌面软件新建办公文件

请不要安装MS_Office软件

严格禁止在随身固态U盘中新建新建办公文件,

编辑办公文件时推荐使用搜狗拼音输入法,

电脑也应安装搜狗五笔和极品五笔输入法

办公文件的编辑、删除、查询操作也限制在腾讯微云网盘Web网页版中操作。

当需要按照文件和表格的文件正文内容搜索时可以使用FileLocator_Pro软件对电脑桌面的按WT日期备份的文件夹进行包含子文件夹的全文检索。



;~ 创建腾讯微云网盘网页版快捷方式到电脑桌面的AHK脚本源代码



;~ 用安卓手机QQ应用软件的扫一扫功能登录腾讯微云网盘网页版

;~ 所有办公文档和办公表格都使用腾讯微云网盘网页版的微软Office网页版查看和编辑

;~ 在下班前5分钟“重置同步信息”并同步所有腾讯微云网盘中的文件到

;~ 电脑的本地磁盘以防丢失办公文件

;~ 非办公文件都分类整理保存到随身固态U盘中



FileCreateShortcut,http://www.weiyun.com,%A_DesktopCommon%\微云网页版.lnk



每天下班前5分钟进行如下的备份办公文件的5步操作:

此5步操作只在唯一的单位西南办公室台式电脑上进行

严格禁止把腾讯微云网盘中的文件备份到公用电脑上。

第1步:退出腾讯微云网盘的PC客户端和Web网页端

第2步: 右击右下角腾讯微云同步PC助手软件的图标并退出

	第3步:按照日期重命名桌面微云同步文件夹

	第4步:重新启动腾讯微云同步PC助手软件

	第5步:重置腾讯微云同步PC助手软件的同步数据



	6、非办公文件新建、编辑、删除、查询和备份

	如上文所述,非办公文件新建、编辑、删除、查询只在随身固态U盘中进行。



	为防遗失,U盘一直用焊接不锈钢链连接博友皮带不锈钢钥匙扣上,从不取下。分类整理非办公文件时必需使用USB延长线连接U盘,严禁取下后使用U盘。



	非办公文件用FastCopy软件复制到标签是“随身固态U盘副本备份”的U盘或移动硬盘中手动备份。



	●电脑软件安装包分类保存在随身U盘的“02_电脑软件安装包”文件夹中。

	● AutoHotkey源代码分类保存在随身U盘的“03_AHK脚本源代码”文件夹中。

	●所有AutoHotkey视频教程分类保存在随身U盘的“04_AHK编程视频教程”文件夹中。

	●绿色免安装电脑软件分类保存在电脑D盘的“05_绿色免安装电脑软件”文件夹中。

	(例如:uTools的位置是 D:\DIYTOOLS\uTools\uTools.exe)

	(例如:MasterSeeker的位置是 D:\DIYTOOLS\MasterSeeker\MasterSeeker.exe)

	(例如:FileLocator_Pro的位置是 D:\DIYTOOLS\FileLocator_Pro\FileLocator_Pro.exe)

	绿色免安装电脑软件也复制一份到随身U盘的“DIYTOOLS”文件夹中。

	所有电脑软件快捷方式都保存在文件夹“D:\DIYTOOLS\uTools\lnks”中并用uTools搜索访问。

	推荐用飞扬时空的TotalCommander v5.18.3(9.22a) 和 MasterSeeker 整理所有本地磁盘文件。

	●单机电脑游戏分类保存在随身U盘的“06_单机电脑游戏”文件夹中。

	●国语中字华语电影只用“优酷视频”安卓版应用程序软件缓存下载到手机TF内存卡中。

	● MV歌曲只用“音悦台MV解析下载工具”下载到安卓手机TF内存卡中

	(建议用MX Player播放器播放MV歌曲)。

	●电脑操作系统安装光盘ISO镜像文件和360驱动大师网卡版、驱动精灵万能网卡版、驱动人生万能网卡版保存在安装了杏雨梨云USB维护系统的随身固态可启动U盘的“01_GhoWin7Pro_Setup”文件夹中。

	(常用系统光盘ISO镜像文件有

	win7x86_cn_windows_7_professional_with_sp1_vl_build_x86_dvd_u_677939_ISOMD5_AC0.ISO

	win7x64_cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816_ISOMD5_E9D.ISO)

	●所有电脑的操作系统分区(Win7Pro_x64)的Ghost镜像文件保存在随身固态可启动U盘中的“07_电脑系统GHO备份”文件夹中。请重命名GHO镜像文件并设置Everyone只读访问NTFS权限,防止误删除。



	在测试、分类、整理、保存和备份电脑文件时

	以能够高效快捷简便的搜索查看编辑为目标标准,

	不断改进方式方法,不断测试研究提高电脑文件分类整理的质量和水平。



	利用电脑操作办公文件时多用复制少用新建

	利用电脑操作办公文件时多用键盘少用鼠标

	利用电脑操作办公文件时保持中速操作,

	电脑操作速度以舒适,不出差错,

	以一次操作成功为准,不紧不慢,泰然处之。





	以下是一些电脑操作的技巧收集,供大家参考:

	●建议选用“一键GHOST硬盘版”软件备份电脑操作系统

	●建议选用“雨过天晴电脑保护系统”保护电脑操作系统

	“影子系统PowerShadow http://www.yingzixitong.cn/”作为保护电脑操作系统的备用软件

	●建议选用“MSDN,我告诉你https://msdn.itellyou.cn/”

	的“cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816.iso”作为电脑的操作系统安装文件

	●建议选用360驱动大师作为电脑驱动程序的安装工具软件

	驱动精灵作为驱动安装备用软件

	●建议选用“搜狗拼音输入法”和“搜狗五笔输入法”输入文字

	●建议选用PrimoCache作为电脑本地磁盘的缓存加速软件

	●建议选用“MasterSeeker”作为本地磁盘文件的搜索软件

	●建议选用“uTools”作为电脑程序软件的快捷方式的搜索软件

	●建议选用“WPS_Office_2019专业免激活版”作为文档表格编辑的备用软件(以腾讯微云网盘附带的网页版Word和网页版Excel作为默认编辑器)。

	●建议选用“EmEditor_Pro”作为文本编辑处理软件

	●建议选用“FileLocator_Pro”作为文档表格全文搜索软件

	●建议选用“SciTE4AutoHotkey”作为电脑自动化智能操作脚本的编辑器和调试器



	●请设置屏幕保护程序为空白并等待9分钟,并选中在恢复时显示登录屏幕

	●请设置电源选项中关闭显示器等待时间为5分钟

	●如需自动登录电脑系统可以运行netplwiz命令或者

	Control userpasswords2命令

	●请设置浏览器下载文件的默认位置为桌面

*/

 

给TA捐赠
共{{data.count}}人
人已捐赠
其他案例

一键设置WPS_Office_2019专业版的定时自动备份的批处理文件

2019-11-17 10:13:51

其他

获取光标位置的多种方法和用途-MouseGetPos/A_Caret/ACC/AccessibleObjectFromWindow

2019-11-20 20:06:17

3 条回复 A文章作者 M管理员
  1. 半永退

    让我看看!!!!!

  2. aahk

    现在使用群晖NAS保存文件了

    现在不再使用腾讯微云网盘了

    现在不再使用百度网盘存放办公文件了

  3. 小幸福

    可以分享下新的文件么?

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