Delphi - 隐藏控制台窗口

use*_*015 4 delphi

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

我正在重新发布这个以使其更清晰.所以,这是我的控制台应用程序:

在此输入图像描述

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

我正在使用Delphi 2007(7).

谢谢.

RRU*_*RUZ 8

您可以使用ShowWindowGetConsoleWindowWinAPi功能.

试试这个样本

{$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.
Run Code Online (Sandbox Code Playgroud)

  • 不.如果您不想看到控制台窗口,您也不需要VCL表单.从默认控制台应用程序启动并删除$ APPTYPE CONSOLE.现在您有一个针对GUI子系统的应用程序.这是$ APPTYPE GUI.但它并不比控制台应用程序更大. (5认同)
  • 为什么你和@David删除[另一个问题](http://stackoverflow.com/q/13042036/33732)?这是直接而且重要的.它并没有被插座混淆而糊里糊涂,它有一个很好的答案. (4认同)
  • 我在Delphi XE7中删除了"{$ APPTYPE CONSOLE}",但它没有用.然后我用"{$ APPTYPE GUI}"替换它,它起作用了.然后控制台当然完全停止了工作.我需要控制台来报告可能的错误,并使用'if GetConsoleWindow = 0然后AllocConsole;'按需重新启用它. (4认同)
  • 我的意思是,如果你不想要一个控制台,不要让应用程序成为一个控制台应用程序. (3认同)