我一直在写一个程序来ping三个不同的网站,然后它会通知用户他们是否有互联网。
我在这个项目上取得了很大的成功,这在很大程度上要归功于这里社区的强大。
我的代码是用原生c++编写的,因为我最了解这种语言。我希望社区能为我指明方向,让我的程序在不使用.net编程的情况下在系统托盘中运行。
我使用的是Visual studio 2008,并且我已经使用安装项目安装了我的代码。如果你们能给我任何帮助,我将不胜感激。谢谢。
发布于 2010-11-09 08:20:59
原生C++ systray应用程序基于Win32外壳应用程序接口Shell_NotifyIcon。
要将您的图标添加到sys任务栏中,您需要如下所示:
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-09 08:06:25
使用Shell_NotifyIcon函数。这是一个比Win32文档更具教程风格的article。
发布于 2010-11-09 08:10:20
如果你想在C++中做这件事,你就必须像Zildjohn01提到的那样使用windows的低级api。这并不难。您可以随时查看这个旧代码项目的帖子:http://www.codeproject.com/kb/shell/systemtray.aspx
https://stackoverflow.com/questions/4129284
复制相似问题