如何删除 Windows 托盘区指定图标?
一:原理
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 托盘区指定图标?相关推荐
- C#WinForm 程序退出后,托盘区的图标不能及时消失
C#WinForm 程序退出后,托盘区的图标不能及时消失 问题发现 这个问题其实出现在C#的WinForm中,我写了一个退出程序的button.程序退出后,托盘区的图标不能及时消失. 处理方法 pri ...
- 清除异常关闭进程的任务栏托盘区残留图标
使用TerminateProcess关闭的进程如果生成过托盘图标,这个图标就会停留在右下角的托盘区(因为该进程来不及执行自己的图标清理代码),直到鼠标移上去时才消失.显然这个效果并不理想. 这里我们可 ...
- win10隐藏任务栏_如何隐藏或删除Windows 10任务栏图标
了解如何从任务栏中删除默认的Win10应用程序图标 对Windows 10而言可能困扰的一件事是预装在系统上的应用程序数量. 虽然它们中的许多都没有出现其界面运行,但它们最终可能会在Windows时钟 ...
- 如何隐藏或删除Windows 10任务栏图标
了解如何从任务栏中删除默认的Win10应用程序图标 对Windows 10而言可能困扰的一件事是预装在系统上的应用程序数量. 虽然它们中的许多都没有出现其界面运行,但它们最终可能会在Windows时钟 ...
- 托盘区图标操作(NOTIFYICONDATA)
经常能够看到软件运行后在托盘产生图标 ,其实也就是对结构 NOTIFYICONDATA 的设置 再调用Shell_NotifyIcon就能完成 NOTIFYICONDATA notifycd; not ...
- Windows 10任务栏中托盘区(通知区域)图标怎么缩略成^
1.重启电脑后windows的通知区域就不能缩略了,有些图标还没有,用了这个办法才重新显示.但是图标不能缩略看着很不习惯. Windows 10任务栏中托盘区(通知区域)图标消失的解决方法_Ayka的 ...
- python turtle画气球-python windows下显示托盘区气球消息
有一个小需求希望在wx下建立的托盘区图标上显示气球消息,很尴尬的是wx.TaskBarIcon不像wx.Window等有GetHandle方法,无法直接获得句柄.解决的办法1.自己重写TaskBarI ...
- python画气球_python windows下显示托盘区气球消息
有一个小需求希望在wx下建立的托盘区图标上显示气球消息,很尴尬的是wx.TaskBarIcon不像wx.Window等有GetHandle方法,无法直接获得句柄.解决的办法1.自己重写TaskBarI ...
- [AHK]双击托盘区某可见程序图标以激活之(为读取微信新消息定义热键)
检索TrayIcon对应的程序,并激活 为QQ激活,自定义热键win+q,实现代码如下:(注意win10下面 "QQ.exe"区分大小写才可以) #q:: o:=TrayIcon_ ...
最新文章
- WindowManager如何被Android深度解析(3)
- lucene索引文件格式
- 【玩转cocos2d-x之三十七】粒子系统的加载优化
- 闭包 —JavaScript面向对象高级
- bzoj2060[USACO2010,Nov]Visiting Cows拜访奶牛
- LeetCode 1196. 最多可以买到的苹果数量(贪心)
- Java中如何编写一个完美的equals方法
- JAVA基础系列:Object类
- 微信公众号--H5商城在线客服的解决方案:使用微信公众号的对话能力插件实现在线客服沟通
- 教你流程化梳理外贸工作(附18个全流程邮件模板分享)
- google guava Joiner 示列
- document.querySelector()方法
- 塞规公差带图_塞规公差2017
- Linus Benedict Torvalds
- 高通安卓关闭WiFi服务不卸载驱动
- 微信小程序开发--组织通讯录
- Discord教程:Discord账号注册、Discord多账号登录和管理
- 获取名字首字母,js
- 八大排序算法简明扼要
- BUUCTF:[DDCTF2018](╯°□°)╯︵ ┻━┻
热门文章
- 数据库查找姓李的人_数据库中查询姓李的老师的个数
- 装修工地现场工程队监控时间水印相机软件新利器
- OpenGL使用笔记【2】鼠标交互操作
- Win10 10586 更新
- MySQL 查看表结构最后变更时间
- 编译micropython固件时解决fatal error: mbedtls/aes.h: No such file or directory等问题
- 显示器是微型计算机必须配置的一,显示器是微型计算机必须配置的一种( )
- Syslog和Windows事件日志收集
- Windows 11禁用驱动程序强制签名的方法
- Mujoco以及mujoco_py在win10下的从零开始无脑安装法