关于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上操作,都没有此等现象
@金山办公
社区管理员