以下のコードは正常に動作します。from にいくつかの引数を渡したり、 fromEventHandler
のメソッドを呼び出したりする方法が見つかりません。たとえば、定数を使用する代わりに、コンストラクターまたはセッター メソッドを介して渡したいと思います。ここからの推奨事項を試しました。ただし、この場合、インスタンスはイベントをキャッチしません (または、少なくとも stdout には何も表示されません)。MainClass
EventHandler
param
EventHandler
class EventHandler:
param = "value"
def OnConnected(self):
print 'connected'
return True
class MainClass:
def run(self):
pythoncom.CoInitialize()
session = win32com.client.Dispatch("Lib.Obj")
session_id = pythoncom.CoMarshalInterThreadInterfaceInStream(pythoncom.IID_IDispatch, session)
args = { 's_id': session_id, }
thread = threading.Thread(target=self.run_in_thread, kwargs=args)
thread.start()
def run_in_thread(self, s_id):
pythoncom.CoInitialize()
session = win32com.client.DispatchWithEvent(
pythoncom.CoGetInterfaceAndReleaseStream(s_id, pythoncom.IID_IDispatch),
EventHandler
)
session.connect()
while True:
pythoncom.PumpWaitingMessages()
time.sleep(1)
if __name__ == '__main__':
obj = MainClass()
obj.run()