在实际应用中遇到类似下列需要:

隐藏windows窗口,在windows任务栏中窗口不可见,但应用程序在后台运行。

windows应用程序的窗口默认会在任务栏中添加一个可见的窗口项,方便用户操作和在不同应用程序中切换。

考虑到windows操作系统是基于shell的,查找shell的接口资料会发现 ITaskbarList interface 。ITaskbarList提供了AddTabDeleteTab函数,用于向任务栏中添加删除窗口项。

第一种方法就是使用ITaskbarList接口,在程序启动时将窗口项从任务栏中删除。

代码如下:

   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();
}

从另一个角度考虑,windows窗口是否有类似的属性,用于指定窗口样式,不在任务栏中显示呢?

下面可以看看Extended Window Styles的资料,其中有这样的扩展属性:WS_EX_TOOLWINDOW。指定该属性表示窗口将会作为浮动工具栏使用,其窗口不会再任务栏中显示,并且有特殊的显示处理逻辑,这也恰好符合需要。

那么使用这种方式就需要调用CreateWindowEx函数。

另外,如果你希望窗口完全不可见,可以在创建窗口的时候指定窗口属性为不可见,这样就是直接创建一个后台进程用于处理其他事务。但不推荐这么处理,毕竟窗口完全不可见的话,可以直接CUI编程,没必要使用GUI。

本文作者:Tocy

版权所有,请勿用于商业用途,转载请注明原文地址。本人保留所有权利。

隐藏windows任务栏中的窗口显示的更多相关文章

  1. Android: Service中创建窗口显示

    WindowManager.LayoutParams: int TYPE_SYSTEM_ALERT  Window type: system window, such as low power ale ...

  2. windows下控制台程序实现窗口显示

    windows下实现窗口显示,如果限定是C/C++语言,并且是原生Windows支持,需要使用GDI或GDI+.一般是在Visual Studio里新建Win32应用程序,而不是Win32 conso ...

  3. Windows MFC 两个OpenGL窗口显示与线程RC问题

    问题为:背景界面是一个OpenGL窗口(对话框),在其上弹出一个OpenGL窗口(模态对话框)时, 1.上方的OpenGL窗口能响应鼠标操作等并刷新: 2.当移动或放大缩小上方的OpenGL窗口时,其 ...

  4. winform中让显示的图片覆盖到父窗体保持父窗体的不可选中的状态,且任务栏中不会显示子窗体的任务选项

    要求:为父窗体添加一个类似于加载等待的功能,当窗体点击备份时弹出且覆盖掉窗体 问题一产生:当为弹窗添加控件时,form.show();导致窗体卡死,控件变得透明化; 问题一分析:当窗体show();之 ...

  5. Windows应用开发中程序窗口中的各种图标尺寸规划

    为了让你的图标在各个视图模式下都能有合适的尺寸,需要制作4种尺寸16x16.32x32.48x48.256x256 在Windows系统中,几乎所有窗口都是ListView,其中的图标都按照指定的尺寸 ...

  6. 【转载】Sqlserver中查询窗口显示行号

    在Sqlserver中编写语句的时候,有时候因为业务逻辑比较复杂,编写的语句会比较多,此时如果编辑器中显示代码的行号,则对于我们的语句编写有很好的辅助作用.sqlserver默认未开启行号显示功能,可 ...

  7. WPF中控制窗口显示位置的三种方式

    首先新建一个WPF工程,在主界面添加一个按钮,并给按钮添加点击事件button1_Click,然后新建一个用于测试弹出位置的窗口TestWindow.1.在屏幕中间显示,设置window.Window ...

  8. Windows:子线程中创建窗口

    一般来讲,UI的所有操作都必须在主线程,否则会出现未知错误.但有时候我们会需要一个功能比较单一的窗口,同时希望他在一个单独的线程运行.并不影响主线程的效率. 下面说明一下新建子线程创建的新窗口的方法, ...

  9. PyQt5中的窗口显示控制

    setWindowState(state) #设置窗口状态 Qt.WindowNoState 无状态-正常状态 Qt.WindowMinimized 最小化 Qt.WindowMaximized 最大 ...

随机推荐

  1. Java进制转换, 数据类型, 运算符

    1:进制转换 转换规则: 先把数据的每一位上的系数乘以对应基数的次幂(低位从零开始),然后相加即可 十进制到其他进制 规则:除基取余,直到商为0,最后将余数反转 十进制到二进制: 除2取余,直到商为0 ...

  2. 实现iOS序列化与反序列化(runtime)

    一.变量声明 为便于下文讨论,提前创建父类Biology以及子类Person: Biology: @interface Biology : NSObject { NSInteger *_hairCou ...

  3. “C++的数组不支持多态”?

    先是在微博上看到了个微博和云风的评论,然后我回了“楼主对C的内存管理不了解”. 后来引发了很多人的讨论,大量的人又借机来黑C++,比如: //@Baidu-ThursdayWang:这不就c++弱爆了 ...

  4. Java 9 揭秘(1. 入门介绍)

    文 by / 林本托 在第一部分中,主要讲解如下内容: JDK 9 包含了哪些内容 运行代码的系统要求 如何安装 NetBeans 1 JDK 介绍 JDK 9是Java开发工具包的第九个主要版本,计 ...

  5. RDLC 设置表的重复标题行(在每页中显示标题行)

    在Tablix 属性对话框中勾选“在每一页上重复标题行”及“滚动时保持标题可见”结果没有用. 如果您使用的是一个“表”式布局,有一个简单的方法,可以尝试以下四个步骤: 1.在分组窗格中,单击窗格上的小 ...

  6. jms异步转同步调用实例

    思路: 当主线程调用异步方法时,将自己挂起,并把引用交给jms的监听: 当监听收到返回的消息时,处理并唤醒主线程继续执行(可以获取和处理返回的消息) Test.java package com.my. ...

  7. Android Activity全面解析

    Android Activity全面解析 首先,就从Android四大组件Activity开始. 1.Activity生命周期方法完全解析   activity_lifecycle.png 1).on ...

  8. 学习Git---20分钟git快速上手

    学习Git-----20分钟git快速上手  在Git如日中天的今天,不懂git都不好意思跟人说自己是程序猿.你是不是早就跃跃欲试了,只是苦于没有借口(契机). 好吧,机会就在今天. 给我20分钟,是 ...

  9. MySQL 示例数据库 employees 详解

    [引子] IT这一行在我看来是比较要求动手能力的,但是人非生而知之:人们身上的技能除了一些本能之外,大多都是通过学习而得到的. 前一段时间一直在整理素材,写一个关于explain 的系列文章:在一开始 ...

  10. FIR基本型仿真_03

    作者:桂. 时间:2018-02-05 20:50:54 链接:http://www.cnblogs.com/xingshansi/p/8419452.html 一.仿真思路 设计低通滤波器(5阶,6 ...