gpt4 book ai didi

delphi - 在继承原始控制台的过程中使用Delphi的ShellExecute()吗?

转载 作者:行者123 更新时间:2023-12-03 19:22:29 24 4
gpt4 key购买 nike

在C语言中,我以前在控制台应用程序中使用过system()函数,如果我使用system()启动另一个进程,它将继承调用它的进程的控制台窗口。

在Delphi中不存在system(),因此我使用ShellExecute()创建新进程,但是新进程出现在新的控制台窗口中。有什么办法可以使它继承正在调用它的窗口的句柄?

我用过

function GetConsoleWindow(): HWND; stdcall; external 'kernel32.dll';


获取控制台窗口并将其传递给 HWNDShellExecute()部分,但这没有用。

最佳答案

使用ShellExecute(),将无法使生成的应用程序使用同一控制台。 HWND调用中的ShellExecute()元素已记录在案:


指定父窗口。该窗口接收应用程序产生的所有消息框。例如,应用程序可能会通过生成消息框来报告错误。


因此对控制台应用程序没有任何影响。

如果使用CreateProcess(),则可以更好地控制生成的过程。通过使用dwCreationFlags参数,您可以强制新进程获得其自己的控制台(使用CREATE_NEW_CONSOLE标志),但是默认情况下,它还将继承父进程的控制台。

关于delphi - 在继承原始控制台的过程中使用Delphi的ShellExecute()吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com