感谢岁月如歌、Tebayaki、Troy_daniel、yilian大佬的帮助和解答。
ahk调用ComObjActive操作word提示ox :=ComObjActive(“Word.Application”)错误的解决办法
经测试发现,问题产生的原因是:ahk脚本和word软件的权限不一致,即未同时为管理员权限,或未同时为普通用户权限。
解决方案:将二者权限调整为一致即可。
情况一:当ahk为管理员权限,word启动默认为普通权限时
将脚本中与office有关的内容抠出单独成一个新脚本B,B脚本不要给与管理员权限,此时ahk脚本和office同为普通权限,即可解决com调用问题。
情况二:当ahk为管理员权限,TC为普通用户权限时(针对TC用户)
方案一:维持TC普通用户权限,使用TC内部关联解决问题,此解决方案来自TC群Troy_daniel
此方案的缺点是:当文件路径有空格时,无法打开文件。曲线方案:可在word中按ctrl+o打开路径有空格的文件
在TC的Associations.ini中加入即可
Filter2=*.docx;*.doc
Filter2_open=cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
方案二:将TC更改为管理员权限即可解决问题
Tips-1:
岁月如歌大佬给出降权运行的方案,解决了此问题。降权方式如下:
1、runas 指定 普通用户,再用 run 调用 autohotkey.exe 你的脚本.ahk
2、cmd命令行 runas /user:<隶属于Administrators组的账户名> autohotkey.exe路径 你的脚本.ahk路径
这是两种方法,1是ahk实现,2是系统自带的cmd命令行实现。
#IfWinActive ahk_exe WINWORD.EXE
runas WIN-IEHGU64KAQP,run %COMMANDER_PATH%\capsez.ahk
F2:: ;添加连续分页符
ox := ComObjActive(“Word.Application”)
wdSectionBreakContinuous := 3
ox.Application.Selection.InsertBreak(wdSectionBreakContinuous)
Return
Tips-2:
若仍旧调用com不成功,可能是dcom权限未配置,可按照下图配置。
组件服务>我的计算机>dcom配置>找word或者Excel的项目,右键属性,设置权限
最完美的解决方案,来自Q群岁月如歌大佬
组件服务>我的计算机>dcom配置>找word或者Excel的项目,右键属性,设置权限
wps是32位的,在运行里面输入 comexp.msc -32 来打开32位的组件服务,找到wps组件,修改后还是不行,只能手动以管理员运行了
我用的office,wps不是太清楚
这个厉害
非常不错
学习
评论区更新了一个终极方案
这个报错是什么意思?
换了64位ahk打开,换了个报错?。文档是打开激活的情况下了
66666666666666