[python-win32] keeping a COM server alive

Frank Guenther xeoicq at netscape.net
Thu Feb 17 13:21:56 CET 2005


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)





More information about the Python-win32 mailing list