BOOL ShowInTaskbar(HWND hWnd, BOOL bShow)
{LPVOID lp = NULL ;CoInitialize(lp);//初始化COM库:没有这两句隐藏不起作用HRESULT hr; ITaskbarList* pTaskbarList;hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,  IID_ITaskbarList, (void**)&pTaskbarList );if(SUCCEEDED(hr)){pTaskbarList->HrInit();if(bShow)pTaskbarList->AddTab(hWnd);elsepTaskbarList->DeleteTab(hWnd);pTaskbarList->Release();return TRUE;}return FALSE;
}

实质上是直接通过从任务栏删除 图标;

本文介绍三种方法,可以实现隐藏窗口在任务栏中的图标。其中前两种比较坑爹,不建议使用。

方法1:

ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);

为窗口设置WS_EX_TOOLWINDOW属性。会有以下效果:

1. 窗口图标不在任务栏显示。

2. 窗口不显示在Alt+Tab的切换列表中。

3. 在任务管理器的应用程序Tab中不显示。

但这个属性有一个坑爹的副作用一定要小心,详细请参考:WS_EX_TOOLWINDOW 属性的陷阱

方法2:

使用ITaskbarList接口的DeleteTab方法。这个方法在XP下是有问题的,被删除的任务栏图标,在窗口被激活时,会再次出现!!再次坑爹!!

BOOL ShowInTaskbar(HWND hWnd, BOOL bShow)
{
    HRESULT hr;
    ITaskbarList* pTaskbarList;
    hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, 
              IID_ITaskbarList, (void**)&pTaskbarList );

if(SUCCEEDED(hr))
    {
         pTaskbarList->HrInit();
         if(bShow)
               pTaskbarList->AddTab(hWnd);
          else
               pTaskbarList->DeleteTab(hWnd);

pTaskbarList->Release();
         return TRUE;
    }
 
 return FALSE;
}

方法3:

目前我认为比较妥善的一个办法。首先创建一个窗口,并将此窗口隐藏。再以此窗口为父窗口创建你的程序窗口,再利用方法2删除掉任务栏中的图标。

这样处理之后,任务栏中的图标就不会再死而复生了。

通过Spy++去看QQ的主窗口,它也有一个Caption为空的父窗口,想必也是利用的这个方案吧。
————————————————
版权声明:本文为CSDN博主「HarbinZJU」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/HarbinZJU/article/details/7047485

C++ 隐藏窗口在任务栏的显示相关推荐

  1. 隐藏窗口和任务栏图标的实现

    网上也有这类小程序,用过2个都觉得不够方便,所以就想着自己来实现一个. 功能:响应快捷键或者按钮隐藏(显示)包含关键字的窗口和任务栏图标,可设定隐藏关键字.设定快捷键.程序最小化到托盘. 主要包含以下 ...

  2. C++ 实现隐藏窗口和任务栏图标,再也不用担心玩游戏被发现了

    # 前言 大家在日常生活中经常会遇到玩游戏被发现的情况,在我们使用电脑的时候,即使将窗口最小化,任务栏上仍然会留下图标,非常容易被发现. 为了解决这个问题,我使用 C++ 编写了一个可以一键隐藏窗口的 ...

  3. 在任务栏上显示/隐藏窗口

    在任务栏上显示/隐藏窗口 WS_EX_APPWINDOW Forces a top-level window onto the taskbar when the window is visible. ...

  4. 打开计算机后 无法最小化,最小化窗口后无法在任务栏中显示的三种解决方法...

    [文章导读]最近有用户反映打开的窗口最小化后无法在任务栏中显示,通常情况下点击程序的最小化按钮都会显示在任务栏中,方便我们点击再次打开. 最近有用户反映打开的窗口最小化后无法在任务栏中显示,通常情况下 ...

  5. Windows平台下GTK 窗口在任务栏的隐藏问题以及解决办法

    一口气写上了这么长的一个标题,估计吓到不少人.这个问题并不常见,也不是一个很大很严重的问题.但是确实存在,并且gtk的文档里没有说清楚.这导致了我走了一些弯路.好了,进入正题. 我们通过gtk_win ...

  6. 打开计算机无法最小化,电脑最小化窗口后无法在任务栏中显示怎么解决

    ‍ 我们知道在电脑系统中打开的程序,可以点击最小化,这样可以暂时不显示该程序的窗口,然后可以从任务栏中点击再次打开.但有用户却发现无法在任务栏上显示已经被最小化的窗口.接下来系统城小编会提供几种方法, ...

  7. xp计算机管理下的服务显示不出来,WinXP系统任务栏不显示打开窗口的三种解决方案...

    最近,不少windowsXP系统用户都碰到了任务栏不显示打开窗口的问题.不过,他们还反馈用TAB+ALT或任务管理器应用程序却可以看到任务项目.这是怎么回事呢?其实,该问题可能是桌面程序explore ...

  8. html如何让窗口不在任务栏显示,电脑最小化窗口后无法在任务栏中显示怎么解决...

    ‍ 我们知道在电脑系统中打开的程序,可以点击最小化,这样可以暂时不显示该程序的窗口,然后可以从任务栏中点击再次打开.但有用户却发现无法在任务栏上显示已经被最小化的窗口.接下来系统城小编会提供几种方法, ...

  9. 打开任意窗口之后,电脑下方任务栏无法显示,解决方法:

    打开任意窗口之后,电脑下方任务栏无法显示,解决方法: 打开窗口之后在电脑下方任务栏显示不出来?怎么解决呢?下面就给大家讲解方法 鼠标右键点击下方的任务栏,如图所示,选择属性 然后弹出如图所示的窗口 然 ...

  10. vue 电梯导航制作(鼠标滚动控制导航栏的显示与隐藏)

    鼠标滚动控制导航栏的显示与隐藏 上图先看效果: 下面为2张图,默认为导航栏,当鼠标向下滚动一定距离时,变为箭头, 并且点击黄色的返回图标,也变为下方箭头,此时再滚动窗口,不会变为导航栏. 点击下方箭头 ...

最新文章

  1. android adb 控制手机,adb 控制手机动作
  2. Ubuntu 16.04.6 LTS 发布:紧急修复 APT 漏洞
  3. c语言编程 新浪博客,[c语言编程]经典编程
  4. C语言操作符(又称运算符)(2)
  5. 移动端 UI 适配最佳实践(中)
  6. cmake 编译安装方法
  7. SAP CRM One order appointment duration table
  8. 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上
  9. 实战:阿里巴巴 DevOps 转型后的运维平台建设
  10. 信息学奥赛一本通 1166:求f(x,n)
  11. mysql 更改一行_mysql怎么修改数据表里一行数据?
  12. Linux 制作安装程序(rpm,deb)的几个心得
  13. 【基础教程】基于matlab疫情防护动图制作【含Matlab源码 028期】
  14. 微型计算机原理及应用吴宁课后答案,微机原理及应用(吴宁) 习题答案chapter7(4页)-原创力文档...
  15. myfiles_WINDOWSXP-KB936929-SP3-X86-CHS.zip
  16. 不知名程序员金山云大米云主机体验日志
  17. Ceres Solver (ubuntu 安装)
  18. Thinkpad预装win10硬盘分区
  19. Redis 异地双活实战
  20. Python学习笔记:Pandas应用

热门文章

  1. 事实表和维度表得概念
  2. Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表的解决方法
  3. Android常用对话框
  4. 《计算机网络教程》(微课版 第五版) 第六章 网络应用层 课后习题及答案
  5. 全国各地电台在线收听大全(转)
  6. 线性相位FIR数字滤波器的时域和频域特性
  7. 基于MemFireCloud的电子图书馆开发指南(三)
  8. DHCP配置——Linux网络服务
  9. matlab全安装多大_COMSOL Multiphysics 5.3 软件安装教程
  10. couchbase java 手册_Couchbase之环境搭建与基于Java的测试