VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 220|回复: 0

[转载] 真正可用隐藏任务栏图标代码

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-3-24 00:04:44 | 显示全部楼层 |阅读模式
前些年写的一些软件,个别一些有隐藏任务栏图标的需求,也从网上翻了不少例子代码,有很多都说给你要设置的窗口加上 WS_EX_TOOLWINDOW 属性,去掉 WS_EX_APPWINDOW 属性。自己也试过,实际上这个窗口变成了一个类似小工具的窗口,标题栏变的很小,感觉很别扭,效果不完美。后来又发现了一种办法还不错,这里面把文章转载过来,希望对大家有帮助!

隐藏窗口任务栏图标的三种方法:

方法1:
  1. ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);
复制代码

为窗口设置 WS_EX_TOOLWINDOW 属性,会有以下效果:
1. 窗口图标不在任务栏显示;
2. 窗口不显示在Alt+Tab的切换列表中;
3. 在任务管理器的应用程序Tab中不显示。

但这个属性有一个坑爹的副作用一定要小心,详细请参考:WS_EX_TOOLWINDOW 属性的陷阱:http://www.cctry.com/thread-289458-1-1.html

方法2:
使用 ITaskbarList 接口的 DeleteTab 方法。这个方法在 XP 下是有问题的,被删除的任务栏图标,在窗口被激活时,会再次出现!!再次坑爹!!
  1. BOOL ShowInTaskbar(HWND hWnd, BOOL bShow)
  2. {
  3.     HRESULT hr;
  4.     ITaskbarList* pTaskbarList;
  5.     hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,  
  6.               IID_ITaskbarList, (void**)&pTaskbarList );

  7.     if(SUCCEEDED(hr))
  8.     {
  9.          pTaskbarList->HrInit();
  10.          if(bShow)
  11.                pTaskbarList->AddTab(hWnd);
  12.           else
  13.                pTaskbarList->DeleteTab(hWnd);

  14.          pTaskbarList->Release();
  15.          return TRUE;
  16.     }

  17. return FALSE;
  18. }
复制代码


方法3:
目前我认为比较妥善的一个办法。首先创建一个窗口,并将此窗口隐藏。再以此窗口为父窗口创建你的程序窗口,再利用方法2删除掉任务栏中的图标。
这样处理之后,任务栏中的图标就不会再死而复生了。
通过Spy++去看QQ的主窗口,它也有一个Caption为空的父窗口,想必也是利用的这个方案吧。




上一篇:rawsocket写的一个流量监听工具
下一篇:Linux提权Exp+Window提权Exp集合

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-20 13:41

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表