Я открываю приложение через kernel32.CreateProcessW. После этого я получаю PID и дескриптор приложения. Теперь я хочу определить, когда приложение закрыто.
Я использую WaitForSingleObject. Но это только возврат 0.
from ctypes import *
from defines import *
from datetime import *
import time
kernel32 = windll.kernel32
class test():
def __init__(self):
self.hProcess = None
def load(self):
creation_flags = CREATE_NEW_CONSOLE
startupinfo = STARTUPINFO()
process_information = PROCESS_INFORMATION()
startupinfo.cb = sizeof(startupinfo)
if kernel32.CreateProcessW('C:\\Windows\\System32\\calc.exe',
None,
None,
None,
None,
creation_flags,
None,
None,
byref(startupinfo),
byref(process_information)):
self.hProcess = process_information.hProcess
print('CALC PID: {0}, Handle: {1}'.format(process_information.dwProcessId, process_information.hProcess))
else:
print('Error while opening process')
def waitfor(self):
print(kernel32.WaitForSingleObject(self.hProcess, 0xFFFFFFFF))
s = test()
s.load()
s.waitfor()