如何检测已创建的 Exe 创建的另一个 exe 是否已关闭?
How to detect Created Exe's created another exe is closed?
例如,我们在windows上有2个可执行文件。 (EXE_1.exe, EXE_2.exe)
EXE_1.exe 正在调用带参数的 EXE_2.exe。我想检测何时 EXE_2 关闭(终止、被杀死等)
我无法在 C++ 中使用 WaitForSingleObject 或在 python 中使用 Psutil 进程等待。因为它是 returns 当 First 可执行文件关闭时。 (记住:第一个exe启动第二个exe并自己关闭)
所以我需要一个函数,其中一个 returns 称为 exe 的函数称为 exe 的 pid 或类似的东西。
我在 C++ 中尝试了 GetChildProcessID,它可以工作,但它的 returns CMD.exe 的 pid。没关系,如果我检查这个 cmd exe;当它关闭时,这意味着我创建的第二个 exe 太关闭了。但我希望获得第二个 exe 的 pid。
info = subprocess.STARTUPINFO()
info.dwFlags = subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = EmreWin32Con.SW_MINIMIZE
EXE = subprocess.Popen([EXE_KONUM], cwd=KLASOR_KONUM_EXE,
creationflags=subprocess.CREATE_NO_WINDOW,
startupinfo=info, stderr=subprocess.DEVNULL,
stdout=subprocess.DEVNULL,
shell=False)
def GetChildProcessIDList(pid):
prc = psutil.Process(pid)
return prc.children(recursive=True)
Childrens = GetChildProcessIDList(EXE.pid)
isCmd = False
for chcmd in Childrens:
if chcmd.name() == "cmd.exe":
isCmd=True
Childrens.remove(chcmd)
break
# variable Childrens: list of process created process PID's.
例如,我们在windows上有2个可执行文件。 (EXE_1.exe, EXE_2.exe)
EXE_1.exe 正在调用带参数的 EXE_2.exe。我想检测何时 EXE_2 关闭(终止、被杀死等)
我无法在 C++ 中使用 WaitForSingleObject 或在 python 中使用 Psutil 进程等待。因为它是 returns 当 First 可执行文件关闭时。 (记住:第一个exe启动第二个exe并自己关闭)
所以我需要一个函数,其中一个 returns 称为 exe 的函数称为 exe 的 pid 或类似的东西。
我在 C++ 中尝试了 GetChildProcessID,它可以工作,但它的 returns CMD.exe 的 pid。没关系,如果我检查这个 cmd exe;当它关闭时,这意味着我创建的第二个 exe 太关闭了。但我希望获得第二个 exe 的 pid。
info = subprocess.STARTUPINFO()
info.dwFlags = subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = EmreWin32Con.SW_MINIMIZE
EXE = subprocess.Popen([EXE_KONUM], cwd=KLASOR_KONUM_EXE,
creationflags=subprocess.CREATE_NO_WINDOW,
startupinfo=info, stderr=subprocess.DEVNULL,
stdout=subprocess.DEVNULL,
shell=False)
def GetChildProcessIDList(pid):
prc = psutil.Process(pid)
return prc.children(recursive=True)
Childrens = GetChildProcessIDList(EXE.pid)
isCmd = False
for chcmd in Childrens:
if chcmd.name() == "cmd.exe":
isCmd=True
Childrens.remove(chcmd)
break
# variable Childrens: list of process created process PID's.