|
分享源码
界面截图: |
- |
是否带模块: |
调用了模块 |
备注说明: |
- |
本帖最后由 按键精灵 于 2021-9-16 13:52 编辑
excel07和10版本默认的都是单进程单窗口,也就是不管打开几个文件,其实用的都是一个窗口一个进程显示,类似浏览器的切换标签。但有些人会打补丁把excel搞成多进程多窗口,也就是每个文件都是独立的进程和窗口,这样我们就不能用对象去操作EXCEL了,因为只能获取到一个进程的对象。这时候就要切换回单进程单窗口的才能用程序完成想要的操作。
|
excel单_多进程切换 | 文本型 | | |
singleProc | 逻辑型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | reg | 注册表操作 | | | str | 文本型 | | | param | 文本型 | | | regInfo | 自_注册表信息 | | 6 | i | 整数型 | | |
regInfo [1 ].项名 = “HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command” regInfo [1 ].键名 = “”regInfo [1 ].类型 = #REG_SZ str = reg. 取字符串值 (regInfo [1 ].项名, regInfo [1 ].键名 )判断 (寻找文本 (str, “excel.exe” + #引号, , 真) = -1 ) 返回 (“未找到EXCEL程序”)如果真 (寻找文本 (str, “\Office11\”, , 真) = -1 且 寻找文本 (str, “\Office12\”, , 真) = -1 且 寻找文本 (str, “\Office14\”, , 真) = -1 ) 返回 (“EXCEL2003、2007、2010以上版本无需更改”)regInfo [2].项名 = “HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command”
regInfo [2 ].键名 = “command”regInfo [2 ].类型 = #REG_MULTI_SZ regInfo [3 ].项名 = “HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command” regInfo [3 ].键名 = “”regInfo [3 ].类型 = #REG_SZ regInfo [4 ].项名 = “HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command” regInfo [4 ].键名 = “command”regInfo [4 ].类型 = #REG_MULTI_SZ regInfo [5 ].项名 = “HKEY_CLASSES_ROOT\Excel.SheetMacroEnabled.12\shell\Open\command” regInfo [5 ].键名 = “”regInfo [5 ].类型 = #REG_SZ regInfo [6 ].项名 = “HKEY_CLASSES_ROOT\Excel.SheetMacroEnabled.12\shell\Open\command” regInfo [6 ].键名 = “command”regInfo [6 ].类型 = #REG_MULTI_SZ 判断 (singleProc = 真)param = “/e”reg. 项重命名 (“HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\ddeexec2”, “ddeexec”)reg. 项重命名 (“HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\ddeexec2”, “ddeexec”)reg. 项重命名 (“HKEY_CLASSES_ROOT\Excel.SheetMacroEnabled.12\shell\Open\ddeexec2”, “ddeexec”)param = #引号 + “%1” + #引号 reg. 项重命名 (“HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\ddeexec”, “ddeexec2”)reg. 项重命名 (“HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\ddeexec”, “ddeexec2”)reg. 项重命名 (“HKEY_CLASSES_ROOT\Excel.SheetMacroEnabled.12\shell\Open\ddeexec”, “ddeexec2”)计次循环首 (取数组成员数 (regInfo ), i )如果真 (reg. 是否存在 (regInfo [i ].项名, regInfo [i ].键名 )) 判断 (regInfo [i ].类型 = #REG_SZ )str = reg. 取字符串值 (regInfo [i ].项名, regInfo [i ].键名 )判断 (regInfo [i ].类型 = #REG_MULTI_SZ )str = reg. 取多字符串值 (regInfo [i ].项名, regInfo [i ].键名 )regInfo [i].键值 = 文本_删右边 (str, 文本_取长度 (文本_取右边 (str, “ ”, , ))) + param判断 (regInfo [i ].类型 = #REG_SZ )reg. 写字符串值 (regInfo [i ].项名, regInfo [i ].键名, regInfo [i ].键值 )判断 (regInfo [i ].类型 = #REG_MULTI_SZ )reg. 写多字符串值 (regInfo [i ].项名, regInfo [i ].键名, regInfo [i ].键值 )计次循环尾 ()返回 (选择 (singleProc = 真, “已更改为单一进程”, “已更改为多进程”))
|
-
-
多进程
评分
-
查看全部评分
|