首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本机C++ Systray应用程序问题

本机C++ Systray应用程序问题
EN

Stack Overflow用户
提问于 2010-11-09 08:03:33
回答 3查看 852关注 0票数 0

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

我在这个项目上取得了很大的成功,这在很大程度上要归功于这里社区的强大。

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

我使用的是Visual studio 2008,并且我已经使用安装项目安装了我的代码。如果你们能给我任何帮助,我将不胜感激。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-09 08:20:59

原生C++ systray应用程序基于Win32外壳应用程序接口Shell_NotifyIcon

要将您的图标添加到sys任务栏中,您需要如下所示:

代码语言:javascript
复制
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);
}

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

代码语言:javascript
复制
Shell_NotifyIcon(NIM_DELETE, &iconData);
票数 2
EN

Stack Overflow用户

发布于 2010-11-09 08:06:25

使用Shell_NotifyIcon函数。这是一个比Win32文档更具教程风格的article

票数 1
EN

Stack Overflow用户

发布于 2010-11-09 08:10:20

如果你想在C++中做这件事,你就必须像Zildjohn01提到的那样使用windows的低级api。这并不难。您可以随时查看这个旧代码项目的帖子:http://www.codeproject.com/kb/shell/systemtray.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4129284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档