Delphi 7开启启动时打开命令提示符窗口

3
每次我运行Delphi应用程序时,都会打开一个“cmd”窗口,我的一些用户抱怨这个窗口会导致他们的计算机崩溃。我想知道为什么会出现此cmd窗口,并且如何使其不再弹出。
我的.dpr文件如下:
... 
Frm05715 in 'fontes\Frm05715.pas' {Form05715}, 
Frm99903 in 'fontes\Frm99903.pas' {Form99903}; 
{$R *.res} 
begin 
Application.Initialize; 
... 
Application.Run; 

即使在第一行运行的Application.Initialize之前,命令行窗口也会打开。


在你的.Dpr文件中,在Application.Run上设置一个断点。如果命令行窗口在断点之前打开,那么该命令行窗口很可能是在您的单元初始化代码中打开的,这将很容易进行调试。请参见我 这里 的回答以了解如何操作。 - MartynA
是的,它在我的 Application.run 之前运行。我会尝试你在答案中提到的方法。 - Gustavo Schmidt
不,它是一个 .Exe 应用程序。 - Gustavo Schmidt
@GustavoSchmidt 没有所谓的 .exe 应用程序。在 Windows 上,可执行文件可以是控制台应用程序或 GUI 应用程序,这取决于针对哪个子系统进行目标定位。 - David Heffernan
抱歉,这是一个GUI应用程序。 - Gustavo Schmidt
显示剩余2条评论
1个回答

10

如我在评论中所解释的,调试此问题的方法是在您的.Dpr文件中的Application.Run上放置断点。

如果命令行窗口在断点触发之前打开,则命令行窗口很可能是在其中一个单元的初始化代码中打开的,这将很容易调试。 您可以按照我的答案中这个问题中的步骤来操作。

如果您检查System.Pas中InitUnitsCount变量的值,您可能会惊讶于它有多高,通常超过200。 但是,您可以使用二进制搜索快速识别罪魁祸首单元,方法是在以下行上设置断点。

TProc(P)();

将其初始通过计数/2并设置其密码计数。一旦您确定了问题单元,您可以使用调试器的跟踪(F7)命令来识别启动Cmd窗口的代码,如果从单元初始化代码的检查中不明显。


1
我已经完成了这个任务,实际上找到了引起问题的文件,并且成功修复了。感谢您的帮助。 - Gustavo Schmidt
2
所以,我发现在代码中有一个带有“{$APPTYPE CONSOLE}”的文件,我将其更改为{$APPTYPE GUI},然后CMD就不再打开了。 - Gustavo Schmidt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接