【问题标题】:Delphi - Hide console window [duplicate]Delphi - 隐藏控制台窗口
【发布时间】:2012-10-14 22:21:22
【问题描述】:

可能重复:
Profiler and Memory Analysis Tools for Delphi
How do I hide the console window?

我重新发布此内容以使其更清楚。所以,这是我的控制台应用程序:

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

我正在使用 Delphi 2007 (7)。

谢谢。

【问题讨论】:

  • 用户,您已经询问了如何隐藏控制台窗口,并且您得到了答案。如果您的程序无法连接到套接字,那么那就是您需要询问的问题。控制台窗口的存在应该对套接字没有影响。请发布一个描述您遇到的实际问题的新问题。考虑包含一些演示问题的代码。
  • 我不认为屏幕截图将有助于回答这个问题......我们都知道控制台窗口的样子!相反,您需要做的是发布一个显示您遇到的问题的最小项目的代码。
  • 你觉得怎么样,@Bensiu?我发现隐藏控制台窗口和分析之间没有相似之处。

标签: delphi


【解决方案1】:

您可以使用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.

【讨论】:

  • 最好一开始就不显示控制台窗口。
  • 我的意思是,如果您不想要控制台,请不要将应用程序变成控制台应用程序。
  • 没有。如果您不想看到控制台窗口,您也不需要 VCL 表单。从默认控制台应用程序开始并删除 $APPTYPE CONSOLE。现在您有了一个以 GUI 子系统为目标的应用程序。它是 $APPTYPE GUI。但它并不比控制台应用程序大。
  • 为什么你和@David 删除了the other question?这是直接和重点。它并没有被套接字混淆,而且它有一个很好的答案。
  • 我在 Delphi XE7 中删除了 '{$APPTYPE CONSOLE}',但它没有用。然后我用'{$APPTYPE GUI}'替换它,它工作了。然后控制台当然完全停止工作。我需要控制台来报告可能的错误,并根据需要重新启用它'if GetConsoleWindow = 0 then AllocConsole;'
猜你喜欢
  • 1970-01-01
  • 2019-07-22
  • 2011-04-03
  • 2023-03-28
  • 1970-01-01
  • 2022-10-12
  • 2010-10-11
  • 2011-07-19
相关资源
最近更新 更多