详解XP托盘图标结构!

Windows获取系统托盘图标          对于Win7系统,程序的托盘图标最终是放置在和XP一样的ToolbarWindow32工具条窗口,但是有两个地方,同样是ToolbarWindow32工具条窗口,父窗口是不一样的。在右下角可见区域,ToolbarWindow32工具条窗口的父窗口是SysPager窗口,遍历方法同XP一样。对于掩藏的ToolbarWindow32工具条窗口,必须通过点击桌面右下角的可见区域左边的... 阅读详情

下面是转摘。

但是开发的时候要注意 64位系统和32位系统 的数据结构不一致 


详解XP托盘图标结构。

关于这个标题,纯粹是标题党的作为,因为我还没有这个资格是说“详解”,只是能说是我自己一些见解!
近日因为要更新一个托盘管理的软件,所以要苦下头翻译一个国外的托盘结构获取的经典软件(C++版)(http://www.codeproject.com/KB/applications/ShellTrayInfo.aspx),在翻译过程有一些自己体会,所写在这里给大家一起讨论。

首先它的这个软件用到一个结构,据说是一个未公开的托盘结构。
原版为:
struct TRAYDATA
{
HWND hwnd;    
UINT uID;    
UINT uCallbackMessage; 
DWORD Reserved[2];  
HICON hIcon;    
};
后经过试验,发现在XP下结构是应该还包括一个路径参数,但2000下是没有的。
Public Type TRAYDATA
    hwnd              As Long
    uId               As Long
    uCallBackMessage As Long
    Reserved1(0 To 1) As Long
    hIcon             As Long
    Reserved2(0 To 5) As Integer
    ExePath(0 To 255) As Byte
End Type
至于怎样得到这个结构,这就得借用一个TBBUTTON结构(结构如下),因为这结构的dwData指示TRAYDATA所在位置。
Public Type TBBUTTON
    iBitmap         As Long
    idCommand       As Long
    fsState         As Byte
    fsStyle         As Byte
    bReserved1      As Byte
    bReserved2      As Byte
    dwData          As Long '这个指示了TRAYDATA的位置。
    iString         As Long
End Type

综上所述,我们可以这样得到以下结论:
得到以下流程图。

"Shell_TrayWnd" -> "TrayNotifyWnd" -> "SysPager" -> "ToolbarWindow32"最终得到托盘窗口句柄 -> 通过发送 TB_BUTTONCOUNT消息得到托盘窗口TBBUTTON的个数 -> 通过得到总数,用FOR循环,向每个BUTTON发送TB_GETBUTTON消息 -> 用ReadProcessMemory读取每个TBBUTTON结构 -> 再通过TBBUTTON.dwData 得到TRAYDATA结构。

只要得到这个结构,那么托盘的图标,就任我为所欲为了,修改图标,隐藏图标,右移图标小事一件了。。

下面是模仿C++测试软件(改天发布一个我已写完的更多功能桌面托盘管理软件):

windows程序托盘图标以及消息提示--示例程序 之前两个博客介绍一些基本姿势,都是msdn上的,今天就介绍一下如何使用吧。为了简单起见,还是创建一个MFC based on dialog 功能吧。1创建托盘图标,封装了成一个函数:NOTIFYICONDATA m_nid; bool SetupTrayIcon(HWND m_hWnd) { m_nid.cbSize=sizeof(NOTIFYICONDATA);// 结构大小 m_ 阅读详情

相关推荐

托盘图标结构体TBBUTTON和TRAYDATA相关说明文章记录

托盘图标管理器与跨进程SendMessage

dvlinker的技术专栏 3396

VC 获取托盘图标信息

//本例以获取程序托盘图标位置为例 //根据需要还可以获取不少信息 //以下代码网上收集的,变量 初始化 指针句柄 及函数是否成功都没判定 //需要的自己加下判定,有时间再改了 struct TRAYDATA {     HWND hwnd;                                    UINT uID;

liuming54408240的专栏 842

VC++ XP/WIN7系统中删除残留托盘图标的方法(附源码)

XP/WIN7系统中删除残留托盘图标的方法

dvlinker的技术专栏 1万+

完美隐藏系统托盘图标

完美隐藏系统托盘图标(VB源码)!2009-01-05 23:07  我做桌面托盘隐藏时翻译了一篇文章是关于托盘。现在公开我这个翻译。三个文件,一个是FORM1,modIconToPic、modMain。************************modMain*************************************模 块 名:

孤独剑 的专栏 5030

删除托盘图标的方法(适用于VC++ XP/WIN7系统)

在VC++编程中,我们经常需要在系统托盘中添加图标来实现各种功能。然而,在某些情况下,我们可能需要删除托盘中的残留图标。本文将介绍如何使用VC++编程在XP和Windows 7系统中删除残留的托盘图标。要实现这个目标,我们需要使用Windows API来访问系统托盘,并通过标识符识别和删除要删除的图标。结构体,设置了所需的字段,包括窗口句柄、图标标识符和回调消息。在上面的示例代码中,我们定义了一个托盘图标的标识符TRAY_ICON_ID,并在。消息,并在其中删除了托盘图标。最后,在主消息循环中,我们使用。

DevWizard的博客 688

一个可以隐藏任务栏(Traybar)上的开始按钮、Switch Bar、快速启动按钮、任务栏图标、桌面图标的程序(3KB)...

一个可以隐藏任务栏(Traybar)上的开始按钮、Switch Bar、快速启动按钮、任务栏图标、桌面图标的程序(3KB)

获取系统托盘图标信息的尝试

尝试在资源管理器初始化时注入例程,过滤 Shell_TrayWnd 窗口的 WM_COPYDATA 消息,因为任何通过 SHAppBarMessage, Shell_NotifyIcon, SHEnableServiceObject 和 SHLoadInProc 封装的内部实现都是向 Shell_TrayWnd 的消息线程发送 WM_COPYDATA 并带有特殊标志的缓冲区结构来共享系统通知栏的图标信息。

溡漪幽博客 3024

隐藏任意系统托盘图标程序

可以指定任意托盘图标,进行显示/隐藏操作,适合XP系统,为delphi6开发,可以多个图标同时显示/隐藏,可以选择带提示信息功能。

如何制作托盘图标?

想不想让自己的程序也和瑞星或金山词霸一样,启动后在托盘留下一个图标,以表示程序正在后台运行,如果你需要,且你还不知道如何下手,请您一步一步跟我走下来! 一、首先在*.h文件中加入以下声明:        #include       public:              TIcon *myIcon;               void virtual __fastcall IconCli

wilsonloveada的专栏 1465

右下角图标隐藏(PS Tray Factory) 3.2 汉化特别版

系统托盘图标的管理程序 当前版本:3.2 操作系统:Windows 7 / Vista / XP / 2 K / 9 X / NT(32位和64位) PS托盘工厂是一个强大而灵活方便的工具旨在控制其他所有图标在任务栏的系统托盘。PS托盘工厂将帮助您管理的所有应用程序把他们的图标在任务栏上托盘。当你已经安装了PS托盘工厂,你会忘记这个问题缺乏空间在系统托盘中,也将得到一个简单、快速和方便的工具来处理那些应用程序。简而言之,所有的Windows用户将得到这个方便的和强大的工具可供选择,而只有Windows XP用户有一个想法。对于后者,我们已经有了一个美好的惊喜,因为功能PS的托盘工厂超过标准的内置函数的操作系统。与PS托盘工厂可以快速隐藏系统托盘图标和容易管理它们。

Win7 XP托盘图标清理

一键清理Win7 XP托盘图标历史记录 保护隐私

托盘图标的创建

摘 要:本文详细地介绍用VC++6.0设计托盘图标程序的方法。   关键词:VC++6.0,托盘图标程序   Windows95/98/NT/2000/XP中,任务栏的右边(托盘)常驻几个图标,如输入法切换图标、音量控制图标等,此外我们还经常遇到拥有托盘图标的软件,如金山词霸、有实时监测功能的杀毒软件等。这些软件在后台运行,通常不占用太多的屏幕资源,只在通知栏上放一个小小的标志。必要时我们可以

shendu369的专栏 791

xp下实现托盘图标以及冒泡提示

xp下要实现托盘图标需要更新SDK,但为了这个似乎有点小题大做了,网上有解决办法,说是要改_WIN32_IE的值,但仅这些不够,我们还要将新版的shellapi.h覆盖旧版的就可以了,没有必要所有文件都更新的。新旧版比对只需要更改一下结构体的定义: //////////////////////////////修改的地方开始/////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /////////////////////////

java 托盘图标_从系统托盘中删除Java图标

java 托盘图标Why does every single application insist on installing a completely useless icon into the system tray? It would be one thing if it performed some function, but it doesn’t do anything that you...

culiuman3228的博客 400

X光安检模型训练第一步:手把手教你处理OPIXray和HIXray这两个小众数据集

本文详细解析了X光安检AI模型训练的关键步骤,重点介绍如何处理OPIXray和HIXray这两个专业数据集。从数据格式转换到YOLO标准,再到数据增强和质量验证,手把手指导开发者高效利用这些数据集进行目标检测模型训练,提升安检场景下的危险物品识别准确率。

weixin_32629853的博客 316

Android TV远程调试全攻略:从开发者模式开启到ADB连接(附常见问题排查)

本文提供了一份详尽的Android TV远程调试实战指南,涵盖从开启开发者模式、配置网络ADB连接到高效调试与深度排错的完整流程。文章重点解析了通过Wi-Fi进行远程调试的核心步骤,并针对常见的连接失败、授权问题等提供了系统性的解决方案,旨在帮助开发者为Android TV应用开发构建稳定高效的调试环境。

1341

C++ 隐藏系统托盘图标(支持XP-Win10)

#include "stdafx.h" #include #include #include BOOL IsWow64() { BOOL bIsWow64 = FALSE; //IsWow64Process is not available on all supported versions of Windows. //Use GetModuleHandle to get a han

RootSuper 2049

LiveKit 本地部署实战:从零搭建安全实时通信环境(Caddy+HTTPS)

本文详细介绍了如何从零开始搭建LiveKit本地部署环境,结合Caddy服务器实现HTTPS安全通信。通过环境准备、证书生成、服务配置到前端客户端集成的完整流程,帮助开发者快速构建实时音视频应用,特别适合需要安全实时通信的场景。

weixin_29227585的博客 681

vc添加任务栏托盘图标

添加一个托盘图标是很有必要的,如果要实现程序的隐藏和唤醒的话。 令一方面添加了托盘图标的程序比较方便用户进行退出等操作,而且有时候我们可以添加一些信息,让用户移动到图标上时候显示。最后还可以搞个简单点的动画方案,如qq登陆时候左看看右看看。 要实现这些我们先看一个结构:NOTIFYICONDATA官方定义为 NOTIFYICONDATA 结构体说明   包含系统需要的用来传递托盘区

奔跑在编程大地上 1852

KEITHLEY 2182A + 6220/6221 系列测试系统软件

6221型与2182A型相结合,是业界最完整的差分电导测量解决方案

业余程序员小徐的博客 2989

Vanna 2.0:基于LLM的智能文本到SQL框架,实现企业级数据查询与权限控制

文本到SQL技术是自然语言处理与数据库交互的重要桥梁,它允许用户使用日常语言直接查询数据库,无需编写复杂的SQL语句。其核心原理是利用大语言模型理解用户意图,并结合检索增强生成技术,将自然语言问题转换为准确的结构化查询语言。这项技术的价值在于大幅降低了数据访问门槛,提升了业务人员的数据自助分析能力,并能在金融分析、销售报表、运营监控等场景中实现实时数据洞察。Vanna 2.0作为一个开源框架,通过引入用户感知的智能体架构和行级安全策略,解决了企业级应用中的多租户数据隔离与权限控制等关键问题,使得自然语言数据

weixin_42629522的博客 544

获取 Windows 系统托盘图标信息的最新方案(一)

本文分析获取系统通知区域图标的多种方法。解释了在 Win11 22H2 更新后无法获取托盘图标信息的问题所在,并给出了有效的解决方案。这篇文章发布前,我一直在我的一篇历史文章中更新我的研究进度。在解决这个这个问题的过程中,我逐步地了解到了通知消息传递的一些细节,而在此之前对细节实现的分析过程只是被我潦草地堆砌在一起,并没有很好地梳理事情的整个流程。所以我决定将文章重新整理出来。也就是大家现在看到的这篇长文,请认真地阅读下去,这将会解决一部分的一直以来在文献中含糊不清的问题。

溡漪幽博客 4151

华为OD机试真题2026双机位C卷 Python&JS 语言 实现【主次关联成环警告】

在ICT运维领域,现网运维工程师面向对设备上报的众多告警,往往需要筛选出最主要的告警优先处理,次等级的告警或许为同一个根因导致的告警,处理优先级会放后或者不处理,这样就诞生出主次关联告警的概念。给定一系列告警的主次关联关系,判断是否存在如下情况:

MISAYAONE的博客 269
上一篇: 操作被占用的文件-unlocker机理分析
wcppcw
博客等级 码龄18年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值