Hi, I'd like to register an event in order to be informed, whenever a Windows WIA device is connected or disconnected.
In python I can use WIA devices, but I don't know how to register events I have existing C# code, which works and looks like. class MgrHandlerClass { public void devManager_OnEvent(string eventID, string deviceID, string itemID) { } // her emy handler code public void addhandler(DeviceManager manager) { Console.WriteLine("adding handler!"); manager.OnEvent += new WIA._IDeviceManagerEvents_OnEventEventHandler( devManager_OnEvent); } static void Main(string[] args) { MgrHandlerClass mgrhndlr; mgrhndlr = new MgrClass(); DeviceManager manager; manager = new DeviceManagerClass(); manager.RegisterEvent(WIA.EventID.wiaEventDeviceConnected, "*"); manager.RegisterEvent(WIA.EventID.wiaEventDeviceDisconnected, "*"); mgrhndlr.addhandler(manager); // wait for callbacks or do other stuff } Now in python I'm stuck import win32com.client import wia_defs # created with makepy.py manager = win32com.client.Dispatch("WIA.DeviceManager") mgrhndlr = MgrClass() manager.RegisterEvent(EventID=constants.wiaEventDeviceConnected,DeviceID=u'*') manager.RegisterEvent(EventID=constants.wiaEventDeviceDisconnected,DeviceID=u'*') mgrhndlr.addhandler(manager) class MgrHandlerClass: def OnEvent(self, EventID=defaultNamedNotOptArg, DeviceID=defaultNamedNotOptArg, ItemID=defaultNamedNotOptArg): print "Called back with (%s) (%s) (%s)" % (EventID,DeviceID,ItemID) def addhandler(self,manager): # here I'm stuck :-( # the following line doesn't work as it seems, that manager does not have attr # onevent manager.OnEvent.append( WIA._IDeviceManagerEvents_OnEventEventHandler(self.OnEvent) ) The autogenerated file contains: class IDeviceManager(DispatchBaseClass): CLSID = IID('{73856D9A-2720-487A-A584-21D5774E9D0F}') coclass_clsid = IID('{E1C5D730-7E97-4D8A-9E42-BBAE87C2059F}') def RegisterEvent(self, EventID=defaultNamedNotOptArg, DeviceID=u'*'): """Registers the specified EventID for the specified DeviceID. If DeviceID is "*" then OnEvent will be called whenever the event specified occurs for any device. Otherwise, OnEvent will only be called if the event specified occurs on the device specified.""" return self._ApplyTypes_(2, 1, (24, 32), ((8, 1), (8, 49)), u'RegisterEvent', None,EventID , DeviceID) but I do not know where to place (how to create the function) OnEvent() Any help would be appreciated. -- http://mail.python.org/mailman/listinfo/python-list