comtypes icon indicating copy to clipboard operation
comtypes copied to clipboard

PumpEvents - does not work on windows 10

Open QuadCorei8085 opened this issue 2 years ago • 1 comments

Using python 3.9.7 and Windows 10.

When trying out a COM DLL that supports events (written in C++) the ShowEvents function detects and prints out the events correctly but attaching an event handler and using PumpEvents(1) does not result in any report.

However same script reports events when I replace "PumpEvents(1)" with "pythoncom.PumpMessages()".

Any idea why i need to pump messages using another python module?

QuadCorei8085 avatar Jun 27 '22 08:06 QuadCorei8085

Hi @QuadCorei8085, I have the same Python 3.9.7, Win 10 and using a COM DLL written in C++ that fires events, and I have had no problems with PumpEvents(). Note that you don't need a separate event handler if using ShowEvents(), it will print the event calls itself (I don't know if having a second handler interferes with that in some way). Are you keeping open the connection returned by ShowEvents()? Perhaps share the script (or the minimum example code) and we can try and figure out if there is anything wrong with it. My code looks like this:

import comtypes.client
obj = comtypes.client.CreateObject("MyLibrary.Object")
conn = comtypes.client.ShowEvents(obj)
obj.generate_event()
comtypes.client.PumpEvents(1)

where MyLibrary.Object raises an event in response to the generate_event() method being called. This generates output like:

# event found: IMyObject_MyEvent
Event IMyObject_MyEvent(None)

bennyrowland avatar Jun 30 '22 14:06 bennyrowland