在C中,我system()之前在控制台应用程序中使用了该函数,如果我使用system()它启动另一个进程,则继承调用它的进程的控制台窗口.
在Delphi system()中不存在所以我ShellExecute()用来创建一个新进程,但新进程出现在一个新的控制台窗口中.有什么方法可以让它继承正在调用它的窗口的句柄?
我用过
function GetConsoleWindow(): HWND; stdcall; external 'kernel32.dll';
Run Code Online (Sandbox Code Playgroud)
获取控制台窗口并将其传递给HWND部分ShellExecute(),但这不起作用.
使用ShellExecute()您将无法使衍生的应用程序使用相同的控制台.调用中的HWND元素ShellExecute()记录在案:
指定父窗口.此窗口接收应用程序生成的任何消息框.例如,应用程序可能通过生成消息框来报告错误.
所以它对控制台应用程序没有任何影响.
如果您使用,CreateProcess()则可以更好地控制衍生过程.通过使用该dwCreationFlags参数,您可以强制新进程获取其自己的控制台(使用该CREATE_NEW_CONSOLE标志),但默认情况下,它也将继承父进程的控制台.
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |