I’m trying to kill the notepad.exe process on windows using this function:
import thread, wmi, os
print 'CMD: Kill command called'
def kill():
c = wmi.WMI ()
Commands=['notepad.exe']
if Commands[0]!='All':
print 'CMD: Killing: ',Commands[0]
for process in c.Win32_Process ():
if process.Name==Commands[0]:
process.Terminate()
else:
print 'CMD: trying to kill all processes'
for process in c.Win32_Process ():
if process.executablepath!=inspect.getfile(inspect.currentframe()):
try:
process.Terminate()
except:
print 'CMD: Unable to kill: ',proc.name
kill() #Works
thread.start_new_thread( kill, () ) #Not working
It works like a charm when I’m calling the function like this:
kill()
But when running the function in a new thread it crashes and I have no idea why.
Running Windows functions in threads can be tricky since it often involves COM objects. Using
pythoncom.CoInitialize()usually allows you do it. Also, you may want to take a look at the threading library. It’s much easier to deal with than thread.