【发布时间】:2011-04-04 11:39:30
【问题描述】:
我有一个 Delphi 7(不是 2007)应用程序(我们称之为 App1.exe) IDE 认为是 GUI 应用程序,但在 DPR 中是编译器 将其放入控制台应用程序的指令。示例:
{$IFDE MAKE_CONSOLE}
{$APPTYPE CONSOLE}
{$ENDIF MAKE_CONSOLE}
在构建过程中,可能会定义 MAKE_CONSOLE。
我遇到的问题是我们有另一个控制台应用程序 (例如,App2.exe)使用 WinAPI CreateProcess 运行 App1.exe。什么时候 发生时,App1.exe 的输出无处可见:-( 当 App1.exe 直接从命令行 (cmd.exe) 运行,输出为 显示在命令行窗口中。
我猜我需要将 App1.exe 的输出重定向到 CreateProcess,使用 STARTUPINFO 结构。我不确定是什么 我注定要在这里工作。
其他信息: * 正在使用的“dwCreationFlags”是:CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS + DEBUG_PROCESS(是的,App2 调试 App1)
'bInheritHandles' 为假(需要更改吗?)。
'lpProcessAttributes' 和 'lpThreadAttributes' 都为零,同样如此 'lpEnvironment' 和 'lpCurrentDirectory'。
我是否遗漏了任何需要帮助我的信息?
任何指针都会很棒!
非常感谢。
【问题讨论】:
-
请注意,没有“GUI 控制台”应用程序之类的东西。它是一个或另一个。由于您设置了 APPTYPE CONSOLE 设置,因此您的程序是控制台程序。 IDE 在项目选项中显示的内容无关紧要;它被代码打败了。
-
App1.exe 似乎有三种构建方法:Gui、文本输出和 XML 文件输出,我正在测试它被构建为生成 XML 文件输出(因此,没有输出到控制台) .谢谢大家的建议!