通过找出该图标所相应的进程ID,假设该ID为NULL则删除该图标.

#include <AFX.H>
#include <COMMCTRL.H>
#include <iostream.h>
int main()
{
HWND  hStatus=::FindWindow("Shell_TrayWnd",NULL);  //得到任务栏句柄
if  (hStatus==NULL)
{
cout<<"Get Shell_TrayWnd error!\n";
return -1;
}
HWND  hNotify=FindWindowEx(hStatus,NULL,"TrayNotifyWnd",NULL); //右下角区域
if  (hNotify==NULL)
{
cout<<"Get TrayNotifyWnd error!\n";
return -1;
}
HWND  hNotify1=FindWindowEx(hNotify,NULL,"SysPager",NULL);
if  (hNotify==NULL)
{
cout<<"Get SysPager error!\n";
return -1;
}
HWND  hNotify1_0=FindWindowEx(hNotify1,NULL,"ToolBarWindow32",NULL);//右下角区域(不包含时间)
if  (hNotify1_0==NULL)
{
cout<<"Get ToolBarWindow32 error!\n";
return -1;
}
//-------------------以上是得到任务栏右下脚一块地方的句柄
DWORD  pid = 0;
GetWindowThreadProcessId(hNotify1_0,&pid);
if  (pid==NULL)
{
cout<<"Get pid error!\n";
return -1;
}   HANDLE  hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_ALL_ACCESS,true,pid);
if  (hProcess==NULL)
{
cout<<"Get hd error!\n";
return -1;
}
::SendMessage(hNotify1_0,WM_PAINT ,NULL,NULL);
CRect rect;
::GetWindowRect(hNotify1_0,&rect);
::InvalidateRect(hNotify1_0,&rect,false);
int  iNum=::SendMessage(hNotify1_0,TB_BUTTONCOUNT ,NULL,NULL);  //获取任务栏上图标个数unsigned long n = 0;
TBBUTTON  *pButton = new TBBUTTON;
CString  strInfo = _T("");
wchar_t  name[256] = {0};
TBBUTTON  BButton;
unsigned   long    whd,proid;
CString x;for(int i=0; i<iNum; i++)
{
::SendMessage(hNotify1_0,TB_GETBUTTON,i,(LPARAM)(&BButton));
ReadProcessMemory(hProcess,&BButton,pButton,sizeof(TBBUTTON),&n);
if  (pButton->iString != 0xffffffff)
{
try
{
ReadProcessMemory(hProcess,(void *)pButton->iString,name,255,&n);
}
catch(...)
{
}
strInfo.Format("%d : %s\n",i+1,CString(name));
TRACE(strInfo);
cout<<strInfo<<endl;
}try
{
whd=0;
ReadProcessMemory(hProcess,(void   *)pButton->dwData,&whd,4,&n);
}
catch(...)
{
}
proid=NULL;
GetWindowThreadProcessId((HWND)whd,&proid);
if(proid==NULL)
::SendMessage(hNotify1_0,TB_DELETEBUTTON,i,0);
}
delete pButton;
return 0;
}

任务栏托盘不消失的问题-有启示相关推荐

  1. Explorer.exe崩溃后自动重启任务栏托盘区图标丢失

    相信很多Windows用户都碰到过这种情况:运行某个程序时出现意外错误,导致外壳程序Explorer.exe崩溃而发生重启(即Explorer.exe被关闭后重新运行),任务栏也在消失后重新生成,但应 ...

  2. 【语言栏最小化到任务栏里面就消失不见了】

    一般情况下我们都是把语言栏放到任务栏里面的,很少把它独立出来,而有的人会遇到语言栏能独立出来,但是最小化到任务栏就消失不见了. 1 语言栏最小化到任务栏里面就消失不见了详细描述: 其他电脑右键任务栏 ...

  3. 定制任务栏托盘的dll

    定制任务栏托盘的 dll 罗朝辉(飘飘白云)  2009.06.08 http://www.cppblog.com/kesalin (转载时请注明作者和出处.未经许可,请勿用于商业用途) 源文件下载: ...

  4. win10任务栏固定图标消失

    win10任务栏固定图标消失 参考记录: Redirecting 关于 "任务栏显示错误" 的问题,请您尝试以下方法. 一.启动 "任务管理器",找到 &quo ...

  5. 解决win7系统任务栏音量图标消失

    win7系统任务栏音量图标消失了怎么办? 今天看着这个链接的步骤解决啦: 点击这里查看步骤

  6. Latex 双栏论文中间间隔消失 文字重叠

    问题 Latex双栏论文,两栏中间间隙消失,文字重叠.删除部分文字,回复正常.通常伴随 "Overfull, hbox" 的警告. 解决方法 参考LaTeX two-column ...

  7. 清除异常关闭进程的任务栏托盘区残留图标

    使用TerminateProcess关闭的进程如果生成过托盘图标,这个图标就会停留在右下角的托盘区(因为该进程来不及执行自己的图标清理代码),直到鼠标移上去时才消失.显然这个效果并不理想. 这里我们可 ...

  8. 任务栏音量图标消失不见之解决方法汇总

    任务栏音量图标虽然不起眼,但用到的频率还是挺高的,如果它不见了,对我们的使用来说肯定会造成不小的影响.好,下面我就总结了几种恢复任务栏音量图标的方法,如果你正收此问题困扰的话,不妨一试哦: 第一种:& ...

  9. 玩机小技巧 | 自定义专属自己的优麒麟任务栏托盘

    一.应用场景 在系统使用的过程中,有些应用需要长时间运行在桌面环境中,例如网络,声音,麒麟天气,电源电池,输入法,QQ,微信等,为了让用户随时访问这些程序以及了解它们的状态,任务栏除了需要快速启动图标 ...

最新文章

  1. 库存系统难破题?京东到家来分享
  2. [Linux Mysql] Linux下Mysql的基本操作
  3. Java多线程之CAS深入解析
  4. 云时代,我们需要怎样的数据库?
  5. 人脸识别案例:【实战】opencv人脸检测+Haar特征分类器
  6. 8086汇编语言显示一串字符串中ASCII码最大的一个字符
  7. 手机摄像头采集并推流_助力网上广交会—OBS直播推流软件简易教程
  8. 2021年道路运输企业安全生产管理人员考试内容及道路运输企业安全生产管理人员题库
  9. 【更新中21/31】NTIRE 2022 ESR(efficient super-resolution) 方案与结果
  10. 3dsmax scripts 学习笔记集合_未整理
  11. 方便微信公众号征集图片视频的小程序
  12. 基于Python的视频中的人脸识别系统设计与实现
  13. oc对mysql支持_iOS中数据库使用什么技术实现的
  14. PMP缓考怎么操作?
  15. 输入年月 输出日历表
  16. 基于docker 搭建Prometheus+Grafana监控
  17. 【通信仿真】基于matlab噪声调频干扰仿真【含Matlab源码 1951期】
  18. 【CTA03】期货套利策略
  19. 用js实现高清放大图片效果
  20. 整理了23年3月英语四级真题全三套(可复制版)共11页

热门文章

  1. Linux安全学习总结
  2. j函数 判断以 什么开头
  3. 前端工程师算法(一)
  4. 获取String类型汉字乱码,如何进行编码
  5. [HAOI 2010]软件安装
  6. 深入解读Python的unittest并拓展HTMLTestRunner
  7. Date.prototype.format
  8. 洛谷P1330 封锁阳光大学
  9. 九度OJ 1019:简单计算器 (基础题、DP)
  10. 使用Windows Mobile Device Center进行手机的同步