[python-win32] Re: How to implement a COM interface (that is not part
Roger Upole
rwupole at msn.com
Fri Sep 15 05:02:40 CEST 2006
Ken Channing wrote:
> Hi -- the COM object I'm working on has a number of methods I am able
> to use fairly well by following the various win32com examples around.
>
> However, one of the methods' arguments takes a callback that
> "implements an interface" (I'm new to win COM terminology but I think
> this phrase has a specific context when applied here -- my guess is an
> 'interface' is similar to a 'template' in C++?).
>
> I searched for examples of implementing callbacks such as this one:
>
> class ContextEvents(win32com.client.getevents("SAPI.SpSharedRecoContext")):
> """Called when a word/phrase is successfully recognized -
> ie it is found in a currently open grammar with a sufficiently high
> confidence"""
> def OnRecognition(self, StreamNumber, StreamPosition,
> RecognitionType, Result):
> newResult = win32com.client.Dispatch(Result)
> print "You said: ",newResult.PhraseInfo.GetText()
>
> However, in my case, the interface is not associated with any class
> that I can find,
> so I can't use DispatchWithEvents or getevents to get an object to
> subclass from. (When I try to use getevents on the clsid of the
> interface from the makepy generated file, it returns None)
>
> I think the post here outlines a similar problem:
> http://mail.python.org/pipermail/python-win32/2004-May/001990.html
>
> Is there some obvious way to do this that I'm missing?
> In the VB version of the program I'm trying to re-implement in python,
> it seems to be able to
> implement the interface by simply calling "Implements Foo" and subclassing by
> "Private Sub Foo_OnSomeEvent(..."
>
> Thanks for any help!
You should be able to implement it just as you would a small COM server.
Basically, your class would need to specify the interface with
_com_interfaces_=[iid of Foo]
and define an event method.
def OnSomeEvent(self,.....):
Roger
More information about the Python-win32
mailing list