;徐晓亮的文件管理规范和相关的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命令 ●请设置浏览器下载文件的默认位置为桌面 */
让我看看!!!!!
现在使用群晖NAS保存文件了
现在不再使用腾讯微云网盘了
现在不再使用百度网盘存放办公文件了
可以分享下新的文件么?