使用其他父流程启动流程

时间:2016-03-03 22:05:43

标签: delphi process vcl shellexecute

在myApplication.exe中,我调用ShellExecute启动另一个进程,假设是OtherApplication.exe。

在OtherApplication.exe中,我注意到它无法生成它自己的进程,例如cmd.exe来执行某些任务。

如果我从Windows资源管理器(而不是myApplication.exe)运行OtherApplication.exe,则OtherApplication.exe中的所有内容都会按预期运行。

我查看了Process Explorer并在流程树中观察到以下内容:

  • 的Explorer.exe
    • myApplication.exe
      • OtherApplication.exe [这不起作用]
    • OtherApplication.exe [这是有效的]

所以我想我的问题是我可以从myApplication.exe启动一个子进程,但不会将其显示为父进程吗?如果我自己从Windows资源管理器或其他应用程序使用ShellExecute运行它,那么我无法想到为什么OtherApplication.exe的行为会有所不同。

如果我使用myApplication.exe中的内容,我会得到相同的结果:

ShellExecute(0, nil, 'cmd.exe', PWideChar('/C "' + '"C:\...somepaths...\OtherApplication.exe"'), nil, SW_HIDE);

然后cmd.exe是myApplication.exe的子代。其进程子进程包括conhost.exe和OtherApplication.exe。它仍然与explorer.exe进程的行为不同。

0 个答案:

没有答案