thanks for your answer. I changed the localserver.py like you suggested by skipping to call pythoncom.EnableQuitMessage(). But what is the best way to close the pythonw process when desired? I tried to call sys.exit() in the COM-Server Modul and got an error. A patch to specify a custom driver program would be to insert a registration-related attribute on the COM Object (e.g. _reg_custom_driver_) with the absolute path of the file of custom driver program? Would this be sufficient when py2exe is used to compile the hole server? What about an extension of the _reg_clsctx_ attribute to take a switch like pythoncom.CLSCTX_LOCAL_SERVER_NO_QUIT? Ciao, Frank [EMAIL PROTECTED] wrote: Currently there is no nice solution to your problem. I'm sure you understand it is by design pythonw.exe closes when the last reference is closed, and why your work-around is effective.When hosted as a localserver, win32com\server\localserver.py is used as the main program. This is configured in win32com\server\register.py, but there is no facility for overriding this. I'd be happy to accept a patch which allowed you to specify a custom driver program, and this would be free to ignore the shutdown request (ie, simply not call pythoncom.EnableQuitMessage()) Mark-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Frank Guenther Sent: Thursday, 17 February 2005 11:22 PM To: python-win32@python.org Subject: [python-win32] keeping a COM server alive Hi, I posted this some days ago in comp.lang.python <http://groups-beta.google.com/group/comp.lang.python> but didn't get a real solution. Perhaps someone here can help me. I have implemented a local COM Server with win32com framework where all clients use the same global object (test_obj). So far it works, but when the last client is closed the gobal object is deleted because the pythonw.exe is closed. When I create a new client a new pythonw process is started. I need that the new client gets the same global object. How can I prevent the Python COM enviornment (pythonw.exe) to close when no client exist. I figured out a workaround, but there must be real solution to the problem. The code looks like: class test: ... test_obj=test() class test_F: _reg_clsid_ = ... _reg_progid_ = "test.cl" _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER _public_methods_ = ... def __init__(self): self.delegate=test_obj .... ... ####Workaround to keep the local server alive if not __name__=='__main__': import win32com.client dummy=win32com.client.Dispatch("test.cl") ########################################################## if __name__=='__main__': import win32com.server.register win32com.server.register.UseCommandLine(test_F, debug=0) _______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32 |
_______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32