hide python window, con'td
Robin Becker
robin at NOSPAMreportlab.com
Fri May 26 17:27:18 EDT 2006
Larry Bates wrote:
> Something that runs all day in the background is a perfect candidate
> for being turned into a Service. That and servicemanager has a good
> way of managing the task so that it doesn't take up lots of excess
> CPU cycles that a "normal" application would take while sleeping
> or unnecessarily looping. Pick up a copy of Mark Hammond's Python
> Programming on Win32 book for example services in Python. You could
> then start/stop the service with service manager or with net start/
> net stop commands.
>
> -Larry Bates
>
> Bell, Kevin wrote:
>> Great! And now that it's hiding w/ .pyw, how would I kill it if I want?
>> Just log off, or is there a better way?
>>
>> Kevin
>>
>>
It is possible to get a background process in windows especially with
Python-2.4, but it's fairly hard.
try using
python runner.py dingo.py
where
###### runner.py
def bgScript(script,scriptArgs):
from _subprocess import CreateProcess
class STARTUPINFO:
dwFlags = 0
hStdInput = None
hStdOutput = None
hStdError = None
class pywintypes:
error = IOError
import sys
exe = sys.executable.replace('n.exe','nw.exe')
startupinfo = STARTUPINFO()
args = ''.join([' "%s"' % a for a in scriptArgs])
cmd = '"%s" "%s" %s' % (exe,script,args)
try:
hp, ht, pid, tid = CreateProcess(None, cmd,
# no special security
None, None,
0, #don't inherit standard handles
0x208,
None,
None,
startupinfo)
except pywintypes.error, e:
print str(e)
if __name__=='__main__':
import sys
bgScript(sys.argv[1],sys.argv[2:])
###### dingo.py
if __name__=='__main__':
import time
for i in xrange(15):
time.sleep(1)
######
dingo.py shoul be running in the background detached from the console.
Of course as others point out, the official way to do this stuff is to
use all the M$ paraphernalia and have stuff start up at boot time etc etc.
--
Robin Becker
More information about the Python-list
mailing list