python调用com以及com事件
作者:梅劲松
Email:stephen.cn@gmail.com
时间:2004年9月13日
感谢:刘鑫
python调用有事件发生的com时,需要一些技巧。
我们以ie这个com为例来讲解一下我的经验。
首先我们需要pywin32这个模块的支持,它提供了我们调用com便利直接方法。你可以www.sf.net搜索并下载它。
先运行如下代码:
import win32gui
import win32com
import win32com.client
import pythoncom
import time
class EventHandler:
def OnVisible(self, visible):
global bVisibleEventFired
bVisibleEventFired = 1
def OnDownloadBegin(self):
print "DownloadBegin"
def OnDownloadComplete(self):
print "DownloadComplete"
def OnDocumentComplete(self, pDisp = pythoncom.Missing , URL = pythoncom.Missing):
print "documentComplete of %s" % URL
#这里用EventHandler类来处理ie中发生的事件,这里的函数名必须和事件名称一致。
ie = win32com.client.DispatchWithEvents("InternetExplorer.Application", EventHandler)
ie.Visible = 1
ie.Navigate("www.aawns.com")
#这里是等待事件的发生
pythoncom.Pump

本文介绍了Python调用有事件发生的COM组件,以IE为例,通过pywin32模块实现。在遇到事件触发后调用自定义方法的问题时,由于COM事件模式限制,无法直接继承Python类的self。作者提出使用全局变量作为数据传递的解决方案,但提出了使用Twisted时如何同时处理COM事件的未解决问题。
最低0.47元/天 解锁文章
5589

被折叠的 条评论
为什么被折叠?



