我正在开发一个在隐藏模式下调用.net控制台应用程序的Delphi应用程序,但问题是:当我关闭我的delphi应用程序时,控制台应用程序也会关闭,即使使用ShellExecute而不指定等待SingleObject。
我为Windows Calc尝试了相同的Shell调用,所以现在即使关闭我的应用程序,Calc仍然打开,这就是我正在寻找的行为。
有人知道是否可以调用控制台应用程序并使其独立于父进程以及如何执行此操作,因此在主应用程序关闭时它不会关闭?
答案 0 :(得分:6)
问题是子进程附加到父进程的控制台。当父母关闭时,它的控制台关闭,带着孩子接受它。
通过为子进程提供自己的控制台来解决此问题。使用CreateProcess
传递CREATE_NEW_CONSOLE
进程创建标志。您还需要传递CREATE_NO_WINDOW
以避免显示新的控制台窗口。