我可以使用pywin32 WithEvents并不抢占进程?

我有一个win32com.client.WithEvents问题。 我正在调度Excel及其事件。 之后,我遇到问题,我通常不能与Excel交互(例如保存工作簿),似乎像python已经抢占了Excel的过程。 我的代码的最小例子:

对我来说真的很奇怪,这段代码在PyScripter的内部引擎中工作得很好,但是不能像我期望的那样使用远程引擎,或者在PyCharm的python控制台中工作。

import win32com.client class Events: def __init__(self): pass def OnWorkbookBeforeSave(self, workbook, saveAsUI, Cancel): print "before save" excel = win32com.client.Dispatch("Excel.Application") excel.Visible = True wb = excel.Workbooks.Add() event = win32com.client.WithEvents(excel, Events) print "dispatched events" wb.Save() 

此代码旨在每次保存文档时打印“保存前”。 当我把它放到解释器中时,它通过python保存工作簿,但我不能更改工作簿内容或使用我的鼠标和保存图标保存我的工作簿。 但是,当我使用PyScripter内部引擎它的作品。

有没有办法,可以在这种情况下使用,所以我可以通过Python保存我的工作簿,并改变它的内容,就像在正常的交互(使用鼠标和键盘)? 而不是使用PyScripter内部引擎。