关于wps 表格、演示、文字三个应用,无法正确连接到COM,监听VBA事件的bug问题咨询

想通过一个Demo监听wps ppt用户操作产生的VBA事件,如下为demo源码: def ppt(): pythoncom.CoInitialize() ppt_app = None cnt = 0 while True: try: ppt_app = win32com.client.GetActiveObject("kwpp.Application") except Exception as e: print("Error occurred:",e) if ppt_app is not None: print("ppt listen sucess...") break cnt += 1 if cnt > 60: break time.sleep(1) # 获取PPT应用程序事件处理器 event_sink = win32com.client.WithEvents(ppt_app, PPTEvents) pythoncom.PumpMessages() pythoncom.CoUninitialize() print("ppt thread exit .......") 实验步骤,将demo先行运行起来,打开wps ppt,自然运行起ppt,发现如果不切换窗口,GetActiveObject函数始终无法连接到ppt对象,但是如果切换窗口,就可以连接上。同时,ppt正常点击退出时,十分容易出现卡死现象 针对这个问题反复在wps excel、wps word上进行实验,都能复现同等现象 所有问题尝试在office上操作,都没有此等现象
陕西省
浏览 1813
2
5
分享
5 +1
8
2 +1
全部评论 8
 
艾泽林
艾泽林

@金山办公

我们已经定位到无法连接问题的原因了,内部正在处理,后续会再跟您联系,麻烦加一下下面的社区管理员。 您也可以尝试一下临时方案:通过创建对象来连接wps,替换GetActiveObject相关代码。
· 广东省
回复
月逸纷飞
如果使用创建的方法,会导致新的问题。就是如果当前wps没有打开或者同步打开的时候,创建的对象容易在某种特殊场合下自动弹出窗口,经过压测,office就有类似的问题。同时,如果先创建对象,然后打开wps进行连接,容易出现在退出时候,后台仍然有wps的进程,需要手动去清理
· 陕西省
回复
 
WPS 冲浪队长
WPS 冲浪队长

社区管理员

请问可以提供下提供一下mso版本吗? 您的qq或者别的联系方式可以私信管理员留一下吗
· 广东省
回复
月逸纷飞
已经添加了企业微信
· 陕西省
回复
 
範.□
抱歉帮不到,帮顶一下
· 黑龙江省
回复
 
202121450045
问题不大
· 北京
回复
月逸纷飞
问题不大是什么意思了?有办法解掉吗?还有一个问题是如果连接的是excel对象,退出时会出现窗口白屏无响应的状态
· 陕西省
回复