ahk用ComObjActive操作word提示ComObjActive错误的解决办法

感谢岁月如歌、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的项目,右键属性,设置权限

给TA捐赠
共{{data.count}}人
人已捐赠
办公

send % 变量 到ie输入框会缺少字符

2021-12-17 20:59:04

办公

电脑用小键盘数字键盘九宫格拼音输入法

2022-1-7 12:55:15

10 条回复 A文章作者 M管理员
  1. 致良知·明

    最完美的解决方案,来自Q群岁月如歌大佬
    组件服务>我的计算机>dcom配置>找word或者Excel的项目,右键属性,设置权限

    • kongson

      wps是32位的,在运行里面输入 comexp.msc -32 来打开32位的组件服务,找到wps组件,修改后还是不行,只能手动以管理员运行了

  2. 11010010
    1河许人给您打赏了¥2
    • 11010010

      非常不错

个人中心
今日签到
有新私信 私信列表
搜索