一:原理
  1、使用 TB_BUTTONCOUNT, 获取按钮数量;
  2、使用 TB_GETBUTTON,获取每一个按钮信息;
  3、使用 TB_GETBUTTONTEXT,获取按钮文字;
  4、比较文字,是否是你想要删除的图标。
  5、使用 TB_DELETEBUTTON 删除图标。

二:实现
   以删除 QQ 图标为例:

uses Winapi.CommCtrl;procedure TForm1.btn1Click(Sender: TObject);
varhToolbar : THandle;I, Count : Integer;hProcess : THandle;PID      : THandle;Buffer   : Pointer;tbn      : TTBButton;intLen   : SIZE_T;strLength: Integer;strTBText: WideString;
beginhToolbar := FindWindow('Shell_TrayWnd', nil);hToolbar := FindWindowEx(hToolbar, 0, 'TrayNotifyWnd', nil);hToolbar := FindWindowEx(hToolbar, 0, 'SysPager', nil);hToolbar := FindWindowEx(hToolbar, 0, 'ToolbarWindow32', '用户提示通知区域');Count    := SendMessage(hToolbar, TB_BUTTONCOUNT, 0, 0);GetWindowThreadProcessId(hToolbar, @PID);hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, PID);Buffer   := VirtualAllocEx(hProcess, nil, SizeOf(TTBButton), MEM_COMMIT, PAGE_READWRITE);tryfor I := 0 to Count - 1 dobeginintLen := 0;SendMessage(hToolbar, TB_GETBUTTON, I, Integer(Buffer));ReadProcessMemory(hProcess, Buffer, @tbn, SizeOf(TTBButton), intLen);strLength := SendMessage(hToolbar, TB_GETBUTTONTEXT, tbn.idCommand, Integer(Buffer));SetLength(strTBText, strLength);ReadProcessMemory(hProcess, Buffer, @(strTBText[1]), strLength * SizeOf(strTBText[1]), intLen);if (strTBText[1] = 'Q') and (strTBText[2] = 'Q') thenbeginSendMessage(hToolbar, TB_DELETEBUTTON, I, 0);Break;end;end;finallyVirtualFreeEx(hProcess, Buffer, 0, MEM_RELEASE);CloseHandle(hProcess);end;
end;

测试环境:WIN10X64 + Delphi10.4.2
qq交流群:101611228

如何删除 Windows 托盘区指定图标?相关推荐

  1. C#WinForm 程序退出后,托盘区的图标不能及时消失

    C#WinForm 程序退出后,托盘区的图标不能及时消失 问题发现 这个问题其实出现在C#的WinForm中,我写了一个退出程序的button.程序退出后,托盘区的图标不能及时消失. 处理方法 pri ...

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

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

  3. win10隐藏任务栏_如何隐藏或删除Windows 10任务栏图标

    了解如何从任务栏中删除默认的Win10应用程序图标 对Windows 10而言可能困扰的一件事是预装在系统上的应用程序数量. 虽然它们中的许多都没有出现其界面运行,但它们最终可能会在Windows时钟 ...

  4. 如何隐藏或删除Windows 10任务栏图标

    了解如何从任务栏中删除默认的Win10应用程序图标 对Windows 10而言可能困扰的一件事是预装在系统上的应用程序数量. 虽然它们中的许多都没有出现其界面运行,但它们最终可能会在Windows时钟 ...

  5. 托盘区图标操作(NOTIFYICONDATA)

    经常能够看到软件运行后在托盘产生图标 ,其实也就是对结构 NOTIFYICONDATA 的设置 再调用Shell_NotifyIcon就能完成 NOTIFYICONDATA notifycd; not ...

  6. Windows 10任务栏中托盘区(通知区域)图标怎么缩略成^

    1.重启电脑后windows的通知区域就不能缩略了,有些图标还没有,用了这个办法才重新显示.但是图标不能缩略看着很不习惯. Windows 10任务栏中托盘区(通知区域)图标消失的解决方法_Ayka的 ...

  7. python turtle画气球-python windows下显示托盘区气球消息

    有一个小需求希望在wx下建立的托盘区图标上显示气球消息,很尴尬的是wx.TaskBarIcon不像wx.Window等有GetHandle方法,无法直接获得句柄.解决的办法1.自己重写TaskBarI ...

  8. python画气球_python windows下显示托盘区气球消息

    有一个小需求希望在wx下建立的托盘区图标上显示气球消息,很尴尬的是wx.TaskBarIcon不像wx.Window等有GetHandle方法,无法直接获得句柄.解决的办法1.自己重写TaskBarI ...

  9. [AHK]双击托盘区某可见程序图标以激活之(为读取微信新消息定义热键)

    检索TrayIcon对应的程序,并激活 为QQ激活,自定义热键win+q,实现代码如下:(注意win10下面 "QQ.exe"区分大小写才可以) #q:: o:=TrayIcon_ ...

最新文章

  1. WindowManager如何被Android深度解析(3)
  2. lucene索引文件格式
  3. 【玩转cocos2d-x之三十七】粒子系统的加载优化
  4. 闭包 —JavaScript面向对象高级
  5. bzoj2060[USACO2010,Nov]Visiting Cows拜访奶牛
  6. LeetCode 1196. 最多可以买到的苹果数量(贪心)
  7. Java中如何编写一个完美的equals方法
  8. JAVA基础系列:Object类
  9. 微信公众号--H5商城在线客服的解决方案:使用微信公众号的对话能力插件实现在线客服沟通
  10. 教你流程化梳理外贸工作(附18个全流程邮件模板分享)
  11. google guava Joiner 示列
  12. document.querySelector()方法
  13. 塞规公差带图_塞规公差2017
  14. Linus Benedict Torvalds
  15. 高通安卓关闭WiFi服务不卸载驱动
  16. 微信小程序开发--组织通讯录
  17. Discord教程:Discord账号注册、Discord多账号登录和管理
  18. 获取名字首字母,js
  19. 八大排序算法简明扼要
  20. BUUCTF:[DDCTF2018](╯°□°)╯︵ ┻━┻

热门文章

  1. 数据库查找姓李的人_数据库中查询姓李的老师的个数
  2. 装修工地现场工程队监控时间水印相机软件新利器
  3. OpenGL使用笔记【2】鼠标交互操作
  4. Win10 10586 更新
  5. MySQL 查看表结构最后变更时间
  6. 编译micropython固件时解决fatal error: mbedtls/aes.h: No such file or directory等问题
  7. 显示器是微型计算机必须配置的一,显示器是微型计算机必须配置的一种( )
  8. Syslog和Windows事件日志收集
  9. Windows 11禁用驱动程序强制签名的方法
  10. Mujoco以及mujoco_py在win10下的从零开始无脑安装法