c++ - 如何在 Windows 中编写可最小化到系统托盘的控制台应用程序?

标签 c++ c windows visual-c++

我编写了一个 Visual C++ 控制台应用程序(即 subsystem:console),它可以将有用的诊断消息打印到控制台。

但是,我希望大部分时间都将应用程序最小化,而不是最小化到任务栏,而是在系统托盘上显示为一个漂亮的图标。我还想在单击系统托盘图标时恢复控制台。

我应该如何更改我的程序来执行此操作?

最佳答案

这将是一个丑陋的 hack。

首先,您必须检索控制台应用程序的 hWnd/hInstance。目前,我只能想出一个办法:

  • 使用 CoCreateGuid() 创建 Guid
  • 将其转换为字符串
  • 使用 SetConsoleTitle()
  • 将控制台窗口的标题设置为此 guid
  • 使用 FindWindow()
  • 找到带有 Guid 的窗口的 hWnd
  • 从现在开始,您可以按照通常的方式进行操作。 See http://www.gidforums.com/t-9218.html for more info.
  • 不要忘记在完成后将控制台窗口重命名为原始标题。

如您所见,尽管这是可能的,但这是一个可怕而痛苦的解决方案。请不要这样做。请不要将控制台应用程序最小化到系统托盘。 这不是您应该能够在 Windows API 中执行的操作。

关于c++ - 如何在 Windows 中编写可最小化到系统托盘的控制台应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268260/

相关文章:

c++ - 从文件中读取混合类型行

c++ - SEGFAULT 调用 DLL 函数

c - 在 C 中打印字符串的所有排列

c++ - C/C++ header 保护一致性

css - Windows 上的 Chrome 中的日期输入宽度

c++ - 在随机数组中查找最小值和最大值

c++ - 非法指令(核心转储)HElib

C - 写入结构数组 - 不可修改的左值

windows - Perl Windows CPANM 代理问题

windows - 在 Jenkins 中运行批处理命令