Delphi - 隐藏控制台窗口

6

可能是重复的问题:
Delphi的分析器和内存分析工具
如何隐藏控制台窗口?

我重新发布这个问题以使问题更加清晰。所以,这是我的控制台应用程序:

enter image description here

它打开了一个到127.0.0.1:81的套接字,当控制台应用程序可见时,它可以正常工作,现在如何保持它作为控制台正常工作但同时让控制台不可见呢?

我正在使用Delphi 2007(7)。

谢谢。


6
用户,您已经询问了如何隐藏控制台窗口,并且得到了答案。如果您的程序无法连接到套接字,那么这才是您需要询问的问题。 控制台窗口的存在不应影响套接字。请发表一个新问题,描述您实际遇到的问题。考虑包括一些演示问题的代码。 - Rob Kennedy
2
我认为截图不能帮助回答这个问题...我们都知道控制台窗口是什么样子的!相反,你需要做的是发布一个最小化项目的代码,以显示你遇到的问题。 - Andreas Rejbrand
1
你怎么看,@Bensiu?我看不出隐藏控制台窗口和分析之间有任何相似之处。 - Rob Kennedy
1个回答

9
您可以使用 ShowWindowGetConsoleWindow WinAPI 函数。

可以尝试下面的示例。

{$APPTYPE CONSOLE}

uses
  Windows,
  SysUtils;

function GetConsoleWindow: HWND; stdcall; external kernel32;


begin
  try
    Writeln('Press enter to hide console the window');
    Readln;
    //hide the console window
    ShowWindow(GetConsoleWindow, SW_HIDE);

    //do something
    Sleep(5000);

    Writeln('Press enter to exit');
    //show the console window
    ShowWindow(GetConsoleWindow, SW_SHOW);
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

1
更好的方法是从一开始就不显示控制台窗口。 - David Heffernan
3
我的意思是,如果你不想要一个控制台,就不要把应用程序设为控制台应用程序。 - David Heffernan
7
不。如果您不想看到控制台窗口,那也意味着您不需要VCL表单。从默认控制台应用程序开始,并移除$APPTYPE CONSOLE。现在您拥有一个针对GUI子系统的应用程序,它是$APPTYPE GUI。但它的大小与控制台应用程序一样小。 - David Heffernan
4
你和@David为什么删除了另一个问题?它直截了当,没有混淆套接字的困惑,并且回答很好。 - Rob Kennedy
4
我在 Delphi XE7 中删除了 '{$APPTYPE CONSOLE}',但它没有起作用。然后我把它替换为 '{$APPTYPE GUI}',然后它就起作用了。当然,控制台也完全停止工作了。我需要控制台来报告可能的错误,并使用 'if GetConsoleWindow = 0 then AllocConsole;' 按需重新启用它。 - Bent Tranberg
显示剩余7条评论

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