X
xeoicq
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)
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)