Shell_NotifyIcon失败,很神奇的问题

Primer2012 2013-11-12 03:16:21
我调用Shell_NotifyIcon显示托盘图标偶尔会失败(概率比较小),然后我手动杀掉exporer.exe后再重启,托盘图标又显示正常了,这是什么情况,有没有谁碰到过?怎么解决,谢谢!
...全文
1032 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
楼主在吗? 可以将测试代码贴一下出来,我也遇到这样的问题
oneofzero 2014-01-14
  • 打赏
  • 举报
回复
主逻辑多线程就是个巨坑啊。
Primer2012 2013-11-14
  • 打赏
  • 举报
回复
感谢版本帮忙,问题我己经搞定了,自己写了个测试用例,重现了。 问题是多线程在同时设置托盘图标时没保护引起的,加锁就解决问题了!
Chivalry 2013-11-14
  • 打赏
  • 举报
回复
剩下的就是自己百度google吧
Chivalry 2013-11-14
  • 打赏
  • 举报
回复
如果是win7的话,可以看看这篇文章: http://stackoverflow.com/questions/12954796/shell-notifyicon-an-attempt-was-made-to-reference-a-token-that-does-not-exist
Chivalry 2013-11-14
  • 打赏
  • 举报
回复
设置下m_nid.hWnd = m_hWnd;试试看
Primer2012 2013-11-13
  • 打赏
  • 举报
回复
错误码:1008,可以设置几万次才出一次问题,一旦出问题就一直返回1008
Primer2012 2013-11-13
  • 打赏
  • 举报
回复
BOOL CTrayIcon::SetIcon(HICON hicon, LPCTSTR lpTip, UINT uID) { UINT msg; m_nid.uFlags =NIF_ICON|NIF_TIP; // Set the icon if (hicon) { // Add or replace icon in system tray msg = m_nid.hIcon ? NIM_MODIFY : NIM_ADD; m_nid.hIcon = hicon; } else { // remove icon from tray if (m_nid.hIcon==NULL) return TRUE; // already deleted msg = NIM_DELETE; } // Use the tip, if any if (lpTip) wcscpy(m_nid.szTip,lpTip); // Use callback if any if (m_nid.uCallbackMessage && m_nid.hWnd) m_nid.uFlags |= NIF_MESSAGE; // Do it BOOL bRet = Shell_NotifyIcon(msg, &m_nid); if (msg==NIM_DELETE || !bRet) m_nid.hIcon = NULL; // failed }
allenltiverson 2013-11-12
  • 打赏
  • 举报
回复
是的,要贴代码或者看错误码才可能大概有个了解
Chivalry 2013-11-12
  • 打赏
  • 举报
回复
移不过去,呵呵,把你的代码贴一下,另外失败的时候掉一下GetLastError看看错误号码
Primer2012 2013-11-12
  • 打赏
  • 举报
回复
没钱到技术论坛发贴了,麻烦管理员帮忙移一下,谢谢!

1,659

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧