Hi,

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

Reply via email to