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



_______________________________________________
Python-win32 mailing list
Python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to