I am writing a wrapper library for the windows IMAPIv2 com object and  
am having trouble getting my event listener connected.

Everything works great if I comment out the event hooks.

Here is the code:

        def run(self):
                # duplicate objects because this is a different thread
                self.Recorder = CreateObject("IMAPI2.MsftDiscRecorder2")
                self.Recorder.InitializeDiscRecorder(self.drive.get_drive())

                self.DataWriter = CreateObject("IMAPI2.MsftDiscFormat2Data")
                self.DataWriter.Recorder = self.Recorder
                self.DataWriter.ClientName = "WinBurn IMAPIv2"
                #help(self.DataWriter)
        
                if not self.DataWriter.IsCurrentMediaSupported(self.Recorder):
                        print "No disc in drive or unsupported media!"
                        self.status = RECORDER_RESULT_ERROR
                else:
                        # connect signal handler
                        # uncomment the following line for a signal dump
                        ev = ShowEvents(self.DataWriter)
                        #self.sink  = self.EventSink(self.parent)
                        #self.connection = GetEvents(self.DataWriter, self.sink)

                        if self.DataWriter.NextWritableAddress == 0:
                                self.DataWriter.SetWriteSpeed(self.speed, False)
                                
self.DataWriter.Write(self.tracks[0].getStream())
                                self.Recorder.EjectMedia()
                                self.status = RECORDER_RESULT_FINISHED
                        else:
                                self.Recorder.EjectMedia()
                                self.status = RECORDER_RESULT_ERROR

And this is the event sink, although I haven't even gotten ShowEvents  
working ...
        # catch and process all events here.  Uncomment the ShowEvents line  
above
        # to get a complete dump of all events generated
        class EventSink(object):
                def __init__(self, parent):
                        self.parent = parent

                def dwBurnEvent_Update(self, this, progress):
                        totalSectors = progress.SectorCount
                        writtenSectors = progress.LastWrittenLba - 
progress.StartLba
                        percentDone = FormatPercent(writtenSectors/totalSectors)

                        self.parent.emit('progress-changed', percentDone)


This is the error it outputs:

   File "C:\Documents and Settings\Administrator\Desktop\stomper 
\stomper\winburn.
py", line 138, in run
     ev = ShowEvents(self.DataWriter)
   File "c:\Python25\lib\site-packages\comtypes\client\_events.py",  
line 229, in
ShowEvents
     return comtypes.client.GetEvents(source, sink=EventDumper(),  
interface=inter
face)
   File "c:\Python25\lib\site-packages\comtypes\client\_events.py",  
line 205, in
GetEvents
     rcv = GetDispEventReceiver(interface, sink)
   File "c:\Python25\lib\site-packages\comtypes\client\_events.py",  
line 163, in
GetDispEventReceiver
     for memid, name in _get_dispmap(itf).iteritems():
   File "c:\Python25\lib\site-packages\comtypes\client\_events.py",  
line 40, in _
get_dispmap
     for tag, name, idlflags, restype, argtypes in  
interface._disp_methods_:
AttributeError: type object 'DDiscFormat2DataEvents' has no attribute  
'_disp_met
hods_'

Any ideas?

-b


-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
comtypes-users mailing list
comtypes-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/comtypes-users

Reply via email to