0

我一直在编写一个程序来 ping 三个不同的站点,然后它会通知用户他们是否有互联网。

我在让这个程序运行方面取得了很大的成功,这在很大程度上归功于这里的社区令人敬畏。

我的代码是用原生 c++ 编写的,因为我最了解这门语言。我希望社区为我指明方向,让我的程序在不使用 .net 编程的情况下在系统托盘中运行。

我正在使用 Visual Studio 2008,并且我已经使用安装项目安装了我的代码。我将不胜感激你们可以向我展示的任何帮助。谢谢。

4

3 回答 3

2

本机 C++ 系统托盘应用程序基于 Win32 Shell API Shell_NotifyIcon

要将您的图标添加到系统托盘,您需要以下内容:

memset(&iconData, 0, sizeof(NOTIFYICONDATA));
iconData.hIcon = ::LoadIcon(hResourceModule, MAKEINTRESOURCE(IDR_MAINFRAME));
iconData.hIcon = ::LoadIcon(hResourceModule, MAKEINTRESOURCE(IDI_ICON));
iconData.cbSize = sizeof(NOTIFYICONDATA);
iconData.uFlags = NIF_ICON | NIF_TIP;
iconData.hWnd = this->m_hWnd;
strncpy(iconData.szTip, programTitle_buffer, programTitle_length);
if(iconData.hIcon)
{
  Shell_NotifyIcon(NIM_ADD, &iconData);
}

要删除你的图标,你需要这样的东西:

Shell_NotifyIcon(NIM_DELETE, &iconData);
于 2010-11-09T00:20:58.523 回答
1

使用Shell_NotifyIcon函数。这是一篇比 Win32 文档更类似于教程的文章。

于 2010-11-09T00:06:25.103 回答
0

如果您想在 C++ 中执行此操作,则必须使用 Zildjohn01 刚刚提到的 Windows 低级 API。这并不难。您可以随时查看这个旧代码项目帖子: http: //www.codeproject.com/kb/shell/systemtray.aspx

于 2010-11-09T00:10:20.043 回答