在后台编译C++程序到运行并显示在任务栏

Compile C++ Program to run in background and show in taskbar

我正在用 C++ 创建一个没有 UI 没有控制台程序到 运行 在后台。 一切正常。但是我想在任务栏隐藏图标中有一个程序的图标。

还有一种方法可以向任务栏中的图标添加选项(如设置、退出等)

详情: 编译器:MinGW 64 OS: WIndows 10

如果您使用 Qt,这将完成工作:

MyClass::MyClass(QWidget *parent)
: QDialog(parent)
{
  hide();   // Gui is hidden
  createTrayMenu();
}


void MyClass::createTrayMenu()
{
  QAction* settingsAction = new QAction(tr("&Settings"), this);
  connect(settingsAction, SIGNAL(triggered()), this, SLOT(showSettings()));

  QAction* quitAction = new QAction(tr("&Exit"), this);
  connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));

  QMenu * trayIconMenu = new QMenu(this);         // Qt parent takes care of freeing
  trayIconMenu->addAction(settingsAction);
  trayIconMenu->addSeparator();
  trayIconMenu->addAction(quitAction);

  // Create Icon and add to Tray
  QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this);
  trayIcon->setIcon( setIcon(QIcon(QPixmap("Icon.png"))) );
  trayIcon->setContextMenu(trayIconMenu);
}

hide() 删除 GUI。 trayIcon 最好是 class-member,因此您可以轻松更改图标以反映程序的状态。

拥有托盘图标实际上使您的应用程序成为 GUI 应用程序,即使它仍然有一个控制台。 您可以为此使用 GUI 框架,例如 Qt 或 wxWidgets,但您也可以试试这个项目,它只做托盘图标而没有完整的 GUI 框架:https://github.com/zserge/tray