详解隐藏windows系统托盘图标

这篇讲的很详细~

曾经写过一篇Windows下的任务栏图标编程 ,其实那篇文章讲的是如何将我们自己的程序最小化到托盘并进行操作的编程方法。前两天看到论坛 里有人讨论如何隐藏托盘图标,记得从前为朋友写过一个隐藏大智慧软件的程序,采用的方法就是将窗口最小化并隐藏大智慧在托盘上的图标,但是因为涉及到键盘钩子,最后并没有这么做,而是用添加一个虚拟桌面 的方法达到了效果。

    看到这篇帖子 ,依稀想起我曾经做过的一些尝试,平时总是没有动力整理一些零碎的代码,这回碰到了也算给自己一个机会。
    首先用Spy++查找一下系统托盘所在的窗口类:

      


    可以看到我们需要的ToolbarWindow32其实是有层次的,但不能直接用FindWindow获取ToolbarWindow32句柄,而应该像下面的代码这样一层层深入查找。

  1. hWnd = ::FindWindow( "Shell_TrayWnd" , NULL);
  2. hWnd = ::FindWindowEx(hWnd, 0,  "TrayNotifyWnd" , NULL);
  3. hWndTmp = ::FindWindowEx(hWnd, 0,  "SysPager" , NULL);
  4. if (!hWndTmp)
  5.      hWnd = ::FindWindowEx(hWnd, 0,  "ToolbarWindow32" , NULL);
  6. else
  7.      hWnd = ::FindWindowEx(hWndTmp, 0,  "ToolbarWindow32" , NULL);

    我们的目标是隐藏系统托盘图标,很明显是一个跨进程操作,因此要明白是哪个进程在维护这些图标,知道了窗口的句柄,获取其背后的进程就比较容易了:

  1. ret = ::GetWindowThreadProcessId(hWnd, &lngPID);
  2. hProcess = ::OpenProcess(PROCESS_ALL_ACCESS
  3.         |PROCESS_VM_OPERATION
  4.         |PROCESS_VM_READ
  5.         |PROCESS_VM_WRITE,
  6.         0,
  7.         lngPID);

    首先获取进程ID,然后打开进程,获取进程句柄。
    接着在进程内分配一段内存:

(用VirtualAllocEx在目标进程中分配虚拟内存,SendMessage时用目标进程中的内存,通过ReadProcessMemory/WriteProcessMemory在进程间复制内存数据。)

  1. lngAddress = VirtualAllocEx(hProcess,  0,  0x4096, MEM_COMMIT, PAGE_READWRITE);
  2. ret = ::SendMessage(hWnd,TB_GETBUTTON,i, long (lngAddress));

    并向窗口发送TB_GETBUTTON消息,获得托盘Button的信息,这里的lngAddress中存储的是TBBUTTON结构,其内容如下:

  1. typedef   struct  _TBBUTTON {
  2. int  iBitmap; // zero-based index of button image
  3. int  idCommand;   // command to be sent when button pressed
  4. BYTE  fsState;    // button state--see below
  5. BYTE  fsStyle;    // button style--see below
  6. DWORD  dwData;    // application-defined value
  7. int  iString; // zero-based index of button label string
  8. } TBBUTTON;

    当鼠标移动到系统托盘图标上后,会有一些提示信息,这些信息保存在dwData中,而idCommand则是TBBUTTON的id,我们要隐藏或者显示图标,都要针对这个图标id进行操作:

  1. ret = ::ReadProcessMemory(hProcess,  LPVOID (lngTextAdr),  strBuff,  1024,  0);
  2. ret = ::ReadProcessMemory(hProcess,  LPVOID ( long(lngAddress) + 4),  &lngButtonID,  4,  0);

    strBuffer中存放提示信息,lngButtonID中存放id,有了这些信息,要操作托盘图标就非常简单了,例如我可以
根据某些条件匹配strBuffer,然后根据相应的lngButtonID隐藏图标,隐藏或者显示图标是发送TB_HIDEBUTTON消息。

  1. ::SendMessage(hWnd,   TB_HIDEBUTTON,   BID,  MAKELONG ( true , 0));  //隐藏图标
  2. ::SendMessage(hWnd,   TB_HIDEBUTTON,   BID,  MAKELONG ( false ,0));  //显示图标

    当操作完成后,记得做清理工作:

  1. ::VirtualFreeEx( hProcess,  lngAddress,  0x4096, MEM_RELEASE);
  2. ::CloseHandle(hProcess);

    上面仅仅是针对一个图标的操作,其实可以发送TB_BUTTONCOUNT消息,获得图标数量,然后循环处理。这里是我写的一个
sample,其中第一列显示的是图标id,第二列显示的是图标提示信息,在ListBox上选取,然后可以点击隐藏,恢复。

     

    总结一下,隐藏Windows系统托盘图标基本步骤是这样的:

    1:获取窗口句柄(此窗口里面分布着所有的图标button)

    2:打开系统进程(管理系统所有托盘图标的进程),对应一个大窗口

    3:分配虚拟内存,读取进程内存获取相应信息

    4:操作

    5:释放内存,关闭进程句柄。

参考:http://blog.csdn.net/hailongchang/article/details/3454569

另可参考:http://blog.csdn.net/hailongchang/article/details/3490353

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深圳某公司网管收集的精华资料,十分具有收藏价值,下载不扣分。特此分享给广大CSDN会员朋友。 目录如下: 2000XP双系统启动问题.txt ADSL拨号中出现的错误代码 .txt AWARD BIOS设置详解.txt BIOS与CMOS区别 .txt CMOS密码清除方法.txt DOS下安装WinXP方法.txt DOS中使用系统还原工具.txt Explorer的作用.txt folder.htt等文件的问题.txt found.000文件夹的问题.txt Mfm1992文件问题.txt Regsvr32使用方法.txt Regsvr32修复系统故障.txt RUNDLL32内容.txt URL解码器.exe Win2000XP启动详解.txt Win2000优化技巧.txt Win2000使用纯DOS的方法.txt Win2000进程.txt windows下的EXE文件.txt Windows常用命令集.txt Windows系统安装.txt WinXP中对文件进行加密.txt WinXP中运行DOS程序.txt WINXP优化精髓.txt winXP免激活升级.txt winXP几项设置.txt winXP去除登陆画面.txt WinXP常见进程.txt WinXP开机菜单含义.txt winXP瘦身减肥大全.txt WinXP瘦身办法.txt winxp的boot文件.txt WinXP系统内置的AT命令.txt WinXP系统自动关机.txt winXP重装不需激活.txt Win操作系统安装方法.txt 关闭WinXP的错误报告.txt 关闭没有响应的程序.txt 加快WinXP窗口显示速度.txt 加快软驱传输速度.txt 取消磁盘扫描.txt 取消磁盘扫描等待时间.txt 处理冲击波.txt 如何优化BIOS.txt 如何使IE不发错误报告.txt 如何使用Tasklist命令.txt 如何使用系统还原.txt 如何保存网页的背景音乐.txt 如何关闭CD自动播放功能.txt 如何关闭Dr.Watson.txt 如何加密文件及文件夹.txt 如何启动休眠功能.txt 如何实现关机时清空页面文件.txt 如何彻底删除输入法文件.txt 如何找到自启动程序.txt 如何挽救软盘文件.txt 如何清除冰河.txt 如何移动收藏夹.txt 如何让注册表保持在根目录.txt 如何设置从光驱启动.txt 如何设置显别人的IP.txt 如何设置显示器.txt 如何进入BIOS设置.txt 如何锁住桌面背景.txt 如何防止篡改注册表.txt 如何隐藏磁盘驱动器.txt 常见死机原因剖析.txt 常见电脑故障处理方法.txt 恢复开始菜单的运行.txt 控制面板大全.txt 操作系统系统配置.txt 操作系统进程描述.txt 更改IE默认搜索引擎.txt 更改临时文件夹的路径.txt 更改屏幕保护程序关联.txt 更改系统源文件途径.txt 更改输入法调出顺序.txt 清除WinXP任务栏图标.txt 电脑死机故障分析.txt 破解IE分级密码.txt 破解网页禁用鼠标右键.txt 磁盘格式的问题.txt 禁止ipc$默认共享的方法.txt 禁止Win2000启动时读软驱.txt 禁止WinXP文件夹自动展开.txt 禁止winxp默认共享.txt 禁止光盘自动运行.txt 禁用指定DOS命令办法.txt 解决A盘不见的方法.txt 解决EXE关联丢失方法.txt 解决IE二级链接方法.txt 解决IE器常见故障.txt 解决IP地址冲突的方法.txt 解决NTFS下Win2000密码丢失.txt 解决reg.inf文件被锁定.txt 解决Win98不能关机问题.txt 解决WinXP启动慢问题.txt 解决WinXP搜索故障.txt 解决XP搜索失效问题.txt 解决XP输入法不见问题.txt 解决不定时搜寻软驱问题.txt 解决任务栏图标变大.txt 解决光驱读盘不正常.txt 解决关机变重启故障.txt 解决内存不足问题.txt 解决右键发送到问题.txt 解决右键菜单响应慢.txt 解决回收站无法清空.txt 解决图标乱套问题.txt 解决多硬盘盘符混乱问题.txt 解决多系统安装问题.txt 解决导入reg文件对话框.txt 解决应用程序被禁用.txt 解决开关机停止响应.txt 解决开始菜单响应慢.txt 解决开机ESCD错误.txt 解决忘记账户密码问题.txt 解决打开硬盘分区出错.txt 解决接通电源后自动开机问题.txt 解决控件提示问题.txt 解决插电即开机问题.txt 解决文件保护方法.txt 解决无法关机问题.txt 解决无法升级更新.txt 解决无法打开文件夹.txt 解决无法自动保存设置.txt 解决显示器花屏问题.txt 解决某些网页不能访问.txt 解决桌面图标乱的方法.txt 解决活动窗口按钮被改写.txt 解决添加删除程序隐藏问题.txt 解决硬盘坏磁道问题.txt 解决硬盘引导型故障.txt 解决窗口按钮上乱码问题.txt 解决系统声音不正常.txt 解决系统托盘区的图标丢失.txt 解决系统无法保存设置.txt 解决系统资源不足问题.txt 解决系统资源严重不足.txt 解决网页恶意代码方案.txt 解决自动搜索软驱.txt 解决部分软件无法安装.txt 解决限制使用应用程序问题.txt 解决音量自动调节问题.txt 解决鼠标乱动问题.txt 解决鼠标右键被锁定.txt 黑屏的几个原因.txt
也许大家早已经习惯了系统中之存在一个桌面,每复一日的观看视觉上肯定会感到疲倦,即使重新更换一个桌面背景经过长时间的使用后还会显的有些枯燥,能不能同时拥有多个桌面,改变一下我们的视觉效果呢?今天小编就为大家带来一款可以让你拥有多个虚拟桌面的软件——Dexpot,下面就和小编一起来看看它的功能吧!    Dexpot让你可以拥有多个虚拟桌面,这样你就再也不会觉得屏幕上的位置不够用了。不同的桌面可以有不同的背景图像和颜色,点击系统上的托盘图标可以很方面地在各个桌面之间来回切换。新版本增加了许多功能,虚拟桌面数目最多可以 20 个。   软件全称: Dexpot 软件语言: 中文   软件版本: 1.4 软件大小: 1.99M   软件授权: 免费版 华军下载: 点击即可下载   一. 软件安装   Dexpot在使用前须对其进行安装才可进行使用,软件须按照提示进行安装,软件安装过程如下图所示: Dexpot之接受安装协议(图二) Dexpot之选择安装目录(图三) Dexpot之完成安装(图四)   二. 软件使用   Dexpot在安装完毕后,双击桌面图标即可启动软件,软件在启动完毕后会在系统的桌面右下角处显示图标,我们可以点击鼠标右键对其进行操作,如下图所示: Dexpot之设置选项(图五)   在其跳出的菜单选项中分别有窗口目录,全屏预览,设置及配置桌面,桌面管理器,桌面预览,桌面幻灯显示等菜单选项,如果我们要对其进行虚拟桌面的创建,则点击配置桌面即可,软件即会跳出提示窗口,在窗口内我们可以对所创建的桌面进行名称,解析度,图标,屏保进行设置,如下图所示: Dexpot之创建桌面(图六)   刚才我们是对虚拟桌面的属性进行设置,当然我们还可以对虚拟桌面的背景同时进行设置,点击窗口上侧的功能菜单背景即可对虚拟桌面的背景进行设置,如下图所示: Dexpot之创建桌面(图七)   另外我们还可以对所创建的虚拟桌面进行工具选项设置,在这里我们可以设置任意隐藏一些图标,如桌面图标,任务栏,开始按钮,系统托盘等,如下图所示: Dexpot之创建桌面(图八)   该软件还提供了命令启动设置功能,在该选项里我们可以设置该虚拟桌面启动时候自动执行运行命令,点击浏览按钮选择所要运行的命令即可,在进行了一系列设置后,我们即可点击软件右下侧的应用按钮完成创建,如下图所示: Dexpot之创建桌面(图九)   在完成创建的虚拟桌面后我们就可以对所创建的虚拟桌面进行预览,双击系统桌面右下侧小图标即可,也可点击鼠标右键选择桌面预览即可,如下图所示: Dexpot之创建桌面(图十)   如果我们在需要对所创建的多个虚拟桌面之间进行切换管理的换,点击鼠标右键菜单,在其右键菜单选项里选择管理功能即可,软件会自动在系统右下角处显示虚拟桌面列表,我们只要点击相应的虚拟桌面编号即可完成对其转换,如下图所示: Dexpot之桌面管理(图十一)   我们也可以点击鼠标右键在其菜单选项里选择桌面预览,软件即会在桌面的左上角处跳出预览窗口,如果要进行桌面转换的话点击相应的虚拟桌面即可,如下图所示: Dexpot之桌面切换(图十二)   另外我们还可以对虚拟桌面进行幻灯显示,也就是设定固定的时间来让虚拟桌面进行自动转换运行,点击鼠标右键选择桌面幻灯显示,然后在其跳出的窗口写入合适的时间即可,如下图所示: Dexpot之桌面幻灯(图十三)   另外我们还可以对各个虚拟桌面运行的窗口进行查看和修改,点击鼠标右键选择桌面窗口即可查看当前虚拟桌面运行的窗口,如下图所示 Dexpot之桌面窗口(图十四)   另外我们还可以对软件的虚拟桌面数量进行增加或删除,点击鼠标右键选择设置即可,虚拟桌面默认数量为四个,我们可以通过设置选项对其进行设置。
Windows问答精华 001工具地址.txt 2000XP双系统启动问题.txt ADSL拨号中出现的错误代码 .txt at命令的用法.txt AWARD BIOS设置详解.txt BIOS与CMOS区别 .txt BIOS可以被映射.txt BIOS报警声.txt BIOS错误信息.txt CMOS密码清除方法.txt DOS下安装WinXP方法.txt DOS中使用系统还原工具.txt Explorer的作用.txt folder.htt等文件的问题.txt found.000文件夹的问题.txt IE以最大化显示.txt Mfm1992文件问题.txt Regsvr32 用法和错误消息的说明.tx Regsvr32使用方法.txt Regsvr32修复系统故障.txt RUNDLL32内容.txt SFC使用方法.txt Win2000XP启动详解.txt Win2000优化技巧.txt Win2000使用纯DOS的方法.txt Win2000进程.txt windows下的EXE文件.txt Windows常用命令集.txt Windows系统安装.txt WinXP中对文件进行加密.txt WinXP中运行DOS程序.txt WINXP优化精髓.txt winXP免激活升级.txt winXP几项设置.txt winXP去除登陆画面.txt WinXP常见进程.txt WinXP开机菜单含义.txt winXP瘦身减肥大全.txt WinXP瘦身办法.txt winxp的boot文件.txt WinXP系统内置的AT命令.txt WinXP系统自动关机.txt winXP重装不需激活.txt Win操作系统安装方法.txt 为文件夹添加背景音乐.txt 什么时信使服务.txt 什么是 DirectX.txt 什么是host表.txt 什么是POP3和SMTP.txt 什么是Smartdrv程序.txt 什么是丢包.txt 什么是端口.txt 什么是虚拟文件分配表.txt 什么是软件版本标志.txt 使用说明.txt 关闭WinXP的错误报告.txt 关闭没有响应的程序.txt 删除IE右键菜单内容.txt 删除NTFS分区.txt 删除信使服务.txt 删除启动选项中的选项.txt 删除屏幕保护和壁纸.txt 删除添加删除程序的无效信息.txt 删除系统备份文件.txt 删除虚拟光驱遗留盘符.txt 删除隐藏不活动的图标.txt 删除鼠标右键遗留菜单.txt 加快WinXP窗口显示速度.txt 加快软驱传输速度.txt 双系统共用虚拟内存.txt 双系统安装方法.txt 双系统的安全卸载.txt 双系统问题集合.txt 双系统默认启动项更改.txt 取消磁盘扫描.txt 取消磁盘扫描等待时间.txt 在Win2000使用纯DOS方法.txt 在WinXP中运行DOS程序.txt 处理冲击波.txt 如何优化BIOS.txt 如何使IE不发错误报告.txt 如何使用Tasklist命令.txt 如何使用系统还原.txt 如何保存网页的背景音乐.txt 如何关闭CD自动播放功能.txt 如何关闭Dr.Watson.txt 如何加密文件及文件夹.txt 如何启动休眠功能.txt 如何实现关机时清空页面文件.txt 如何彻底删除输入法文件.txt 如何找到自启动程序.txt 如何挽救软盘文件.txt 如何清除冰河.txt 如何直接移动应用程序.txt 如何移动收藏夹.txt 如何自动重启.txt 如何让注册表保持在根目录.txt 如何设置从光驱启动.txt 如何设置显别人的IP.txt 如何设置显示器.txt 如何进入BIOS设置.txt 如何重新安装IE浏览器.txt 如何锁住桌面背景.txt 如何防止篡改注册表.txt 如何隐藏磁盘驱动器.txt 常见死机原因剖析.txt 常见电脑故障处理方法.txt 恢复开始菜单的运行.txt 找回显示桌面按钮.txt 找回桌面图标透明效果.txt 控制面板大全.txt 操作系统系统配置.txt 操作系统进程描述.txt 更改IE默认搜索引擎.txt 更改临时文件夹的路径.txt 更改屏幕保护程序关联.txt 更改系统源文件途径.txt 更改输入法调出顺序.txt 清除WinXP任务栏图标.txt 电脑死机故障分析.txt 破解IE分级密码.txt 破解网页禁用鼠标右键.txt 硬盘物理坏道处理方法.txt 磁盘格式的问题.txt 禁止ipc$默认共享的方法.txt 禁止Win2000启动时读软驱.txt 禁止WinXP文件夹自动展开.txt 禁止winxp默认共享.txt 禁止光盘自动运行.txt 禁用指定DOS命令办法.txt 自动关闭停止响应程序.txt 自动安装Windows XP.txt 自动开启小键盘上NumLock.txt 自动清除地址栏的记录.txt 自动释放系统资源.txt 虚拟软驱.txt 解决A盘不见的方法.txt 解决EXE关联丢失方法.txt 解决IE二级链接方法.txt 解决IE器常见故障.txt 解决IP地址冲突的方法.txt 解决NTFS下Win2000密码丢失.txt 解决reg.inf文件被锁定.txt 解决Win98不能关机问题.txt 解决WinXP启动慢问题.txt 解决WinXP搜索故障.txt 解决XP搜索失效问题.txt 解决XP输入法不见问题.txt 解决不定时搜寻软驱问题.txt 解决任务栏图标变大.txt 解决光驱读盘不正常.txt 解决关机变重启故障.txt 解决内存不足问题.txt 解决右键发送到问题.txt 解决右键菜单响应慢.txt 解决回收站无法清空.txt 解决图标乱套问题.txt 解决多硬盘盘符混乱问题.txt 解决多系统安装问题.txt 解决导入reg文件对话框.txt 解决应用程序被禁用.txt 解决开关机停止响应.txt 解决开始菜单响应慢.txt 解决开机ESCD错误.txt 解决忘记账户密码问题.txt 解决打开硬盘分区出错.txt 解决接通电源后自动开机问题.txt 解决控件提示问题.txt 解决插电即开机问题.txt 解决文件保护方法.txt 解决无法关机问题.txt 解决无法升级更新.txt 解决无法打开文件夹.txt 解决无法自动保存设置.txt 解决显示器花屏问题.txt 解决某些网页不能访问.txt 解决桌面图标乱的方法.txt 解决活动窗口按钮被改写.txt 解决添加删除程序隐藏问题.txt 解决硬盘坏磁道问题.txt 解决硬盘引导型故障.txt 解决窗口按钮上乱码问题.txt 解决系统声音不正常.txt 解决系统托盘区的图标丢失.txt 解决系统无法保存设置.txt 解决系统资源不足问题.txt 解决系统资源严重不足.txt 解决网页恶意代码方案.txt 解决自动搜索软驱.txt 解决部分软件无法安装.txt 解决限制使用应用程序问题.txt 解决音量自动调节问题.txt 解决鼠标乱动问题.txt 解决鼠标右键被锁定.txt 设置任务管理器.txt 设置开始菜单中的用户名.txt 设置窗口自动刷新.txt 设置虚拟内存.txt 运行命令.txt 通过CMOS设置定时开机.txt 限制驱动器的使用.txt 隐藏光驱的方法.txt 隐藏启动程序方法.txt 隐藏控制面板中的选项.txt 隐藏桌面回收站方法.txt 隐藏桌面所有图标.txt 隐藏添加删除程序.txt 隐藏驱动器一法.txt 黑屏的几个原因.txt
Windows操作系统是由微软公司开发的一种广泛使用的操作系统。它被广泛应用于个人计算机、笔记本电脑和服务器等设备中。 Windows操作系统具有强大的图形化用户界面,用户可以通过可视化的操作来执行各种任务。它包括桌面、任务栏、开始菜单等组件,用户可以方便地访问其所需的程序和文件。 Windows操作系统支持多任务处理,用户可以同时运行多个应用程序,并且可以在不影响其他程序的情况下切换任务。它还支持多用户登录,允许多个用户同时使用同一台计算机。 此外,Windows操作系统还具有丰富的硬件和软件兼容性。它可以与各种不同的硬件设备和软件应用程序进行良好的兼容,以满足用户的各种需求。 Windows操作系统还提供了大量的内置工具和功能,如文件管理器、网络连接、安全设置等。用户可以使用这些工具来管理和操作他们的计算机系统,提高工作效率。 同时,Windows操作系统还提供了强大的安全性能。它具有防火墙、反病毒程序和安全更新等功能,可以有效地保护用户的计算机免受恶意软件和网络攻击的威胁。 综上所述,Windows操作系统是一种功能强大、易于使用和广泛应用的操作系统。它具有图形用户界面、多任务处理、硬件和软件兼容性、丰富的内置工具和强大的安全性能等特点。通过深入了解Windows操作系统,用户可以更好地利用其功能和特点,提高工作和生活效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值