我一直在编写一个程序来 ping 三个不同的站点,然后它会通知用户他们是否有互联网。
我在让这个程序运行方面取得了很大的成功,这在很大程度上归功于这里的社区令人敬畏。
我的代码是用原生 c++ 编写的,因为我最了解这门语言。我希望社区为我指明方向,让我的程序在不使用 .net 编程的情况下在系统托盘中运行。
我正在使用 Visual Studio 2008,并且我已经使用安装项目安装了我的代码。我将不胜感激你们可以向我展示的任何帮助。谢谢。
我一直在编写一个程序来 ping 三个不同的站点,然后它会通知用户他们是否有互联网。
我在让这个程序运行方面取得了很大的成功,这在很大程度上归功于这里的社区令人敬畏。
我的代码是用原生 c++ 编写的,因为我最了解这门语言。我希望社区为我指明方向,让我的程序在不使用 .net 编程的情况下在系统托盘中运行。
我正在使用 Visual Studio 2008,并且我已经使用安装项目安装了我的代码。我将不胜感激你们可以向我展示的任何帮助。谢谢。
本机 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);
使用Shell_NotifyIcon函数。这是一篇比 Win32 文档更类似于教程的文章。
如果您想在 C++ 中执行此操作,则必须使用 Zildjohn01 刚刚提到的 Windows 低级 API。这并不难。您可以随时查看这个旧代码项目帖子: http: //www.codeproject.com/kb/shell/systemtray.aspx