问题托盘图标
功能说明:该程序是一个运行在Windows平台上的易语言编写的系统级工具,核心功能是**动态扫描、识别并控制Windows任务栏右侧系统托盘(通知区域)中特定名称的图标显示状态**。程序通过窗口句柄遍历技术逐层定位到系统托盘主窗口(Shell_TrayWnd → TrayNotifyWnd → SysPager → ToolbarWindow32),进而获取其所属进程ID,并以高权限(PROCESS_ALL_ACCESS)打开该进程,实现跨进程内存读取与消息注入。
程序关键逻辑如下:
1. **托盘图标枚举**:调用SendMessageA向ToolbarWindow32发送TB_BUTTONCOUNT(消息号1048)获取当前托盘按钮总数;再循环调用TB_GETBUTTON(消息号1047)逐个读取每个按钮的内存结构数据,包括按钮ID、关联窗口句柄地址、文本地址等;
2. **图标名称识别**:对每个按钮的文本(Unicode编码)进行宽字节转ANSI(W2A函数)后判断——若文本前两个字符为“YY”(如“YY语音”“YY直播”等常见YY系软件图标),则视为目标图标;
3. **显示/隐藏控制**:对匹配的“YY”图标,调用SendMessage(消息号TB_HIDEBUTTON,即1028)向托盘控件发送隐藏/显示指令,参数lParam由全局变量“是否隐藏”决定(真=隐藏,假=显示);同时调用“置托盘图标”命令更新自身程序托盘图标状态(显示提示文字“1111111111”或清空),提供用户反馈;
4. **交互控制**:通过按钮2的点击事件切换“是否隐藏”布尔值,并实时更新按钮标题(“隐藏”?“显示”),实现一键切换;
5. **资源安全释放**:每次操作后调用VirtualFreeEx释放远程分配的内存,CloseHandle关闭进程句柄,防止资源泄漏。
综上,本程序并非通用托盘管理器,而是**专用于识别并批量控制以“YY”为前缀命名的第三方软件(如YY语音、虎牙YY直播等)系统托盘图标的可见性**的轻量级控制工具,适用于需要临时隐藏特定托盘图标(如避免误点、减少视觉干扰、自动化运维场景)的用户。其行为属于合法的Windows UI自动化范畴,不涉及注入DLL或修改目标进程代码,仅通过标准Win32 API与托盘控件通信完成状态控制。
======窗口程序集1
| |
| |------ 子程序1
| |
| |------ W2A
| |
| |------ _按钮2_被单击
| |
| |
======调用的Dll
| |
| |---[dll]------ FindWindow
| |
| |---[dll]------ FindWindowEx
| |
| |---[dll]------ GetWindowThreadProcessId
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ OpenProcess
| |
| |---[dll]------ VirtualAllocEx
| |
| |---[dll]------ SendMessage
| |
| |---[dll]------ SendMessageA
| |
| |---[dll]------ ReadProcessMemory_字节集
| |
| |---[dll]------ ReadProcessMemory_整数
| |
| |---[dll]------ VirtualFreeEx
| |
| |---[dll]------ WideCharToMultiByte
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。