隐藏windows任务栏中的窗口显示

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

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

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

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

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

代码如下:

 1  1 ITaskbarList* pTaskbarList;
 2  2 hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
 3  3     IID_ITaskbarList, (void**)&pTaskbarList );
 4  4
 5  5 if(SUCCEEDED(hr))
 6  6 {
 7  7     pTaskbarList->HrInit();
 8  8     if(bShow)
 9  9         pTaskbarList->AddTab(hWnd);
10 10     else
11 11         pTaskbarList->DeleteTab(hWnd);
12 12
13 13     pTaskbarList->Release();
14 14 }

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

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

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

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

本文作者:Tocy

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

时间: 2024-08-26 00:16:53

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

Android: Service中创建窗口显示

WindowManager.LayoutParams: int TYPE_SYSTEM_ALERT  Window type: system window, such as low power alert.(系统窗体,例如低电量警告提示框)int TYPE_SYSTEM_OVERLAY  Window type: system overlay windows, which need to be displayed on top of everything else.(系统覆盖窗体,哪个需要显示在

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

windows下实现窗口显示,如果限定是C/C++语言,并且是原生Windows支持,需要使用GDI或GDI+.一般是在Visual Studio里新建Win32应用程序,而不是Win32 console application(控制台程序),然后使用GDI的一些API,例如CreateWindow.CreateWindowEx来实现窗口的创建.显示等. 实际上MSDN官方并没有说只能是Win32应用程序,控制台程序完全可以.个人并不习惯WinMain()函数,更习惯main(int argc,

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

要求:为父窗体添加一个类似于加载等待的功能,当窗体点击备份时弹出且覆盖掉窗体 问题一产生:当为弹窗添加控件时,form.show();导致窗体卡死,控件变得透明化; 问题一分析:当窗体show();之后socket方式的传输方式,使线程卡死了,导致弹窗窗体为加载完全就卡死了; 问题一解决:将备份的代码重新开启一个线程进行操作,使主窗体的代码不会卡死 注意:可能会产生跨线程访问问题,注意善用this.invoke(new Action());来解决问题; 问题二:弹窗窗体会被覆盖导致主窗体可能被操

Excel在任务栏中只显示一个窗口的解决办法

Excel在任务栏中只显示一个窗口的解决办法 以前朋友遇到过这个问题,这次自己又遇到了,习惯了以前的那种在任务栏中显示全部窗口,方便用Alt+Tab键进行切换. 如果同时打开许多Excel工作簿,在桌面任务栏中通常会显示多个工作簿窗口按钮.如果任务栏只中显示了一个Excel窗口按钮,所有的工作簿窗口只出现在Excel程序窗口内部,可能是相关的设置被改动了,可以通过下面方法改回设置: 在Excel 2003中单击菜单“工具→选项”,选择“视图”选项卡,选择“任务栏中的窗口”. 在Excel 200

QT中关于窗口全屏显示与退出全屏的实现

近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助. 首先,在QT中对于窗口显示常用的有这么几个方法可以调用: Qt全屏显示函数            showFullScreen() Qt最大化显示函数         showMaximized()Qt最小化显示函数         showMinimized()Qt固定尺寸显示函数      resize(x,y)Qt设置最大尺寸函数      setMaximum

Python的raw_input语句包含中文,在Windows环境CMD中显示乱码的解决方法

Python的raw_input语句中如果包含中文,在Windows环境CMD中执行时会显示乱码: 由于raw_input语句不支持unicode显示,在中文字符串前加u会报错: 解决办法: 在语句中进行强制的编码转换,格式如下: shuzi = raw_input (unicode('请输入日期:','utf-8').encode('gbk'))

[delphi技术]隐藏/显示任务栏-程序不在任务显示-全面控制Windows任务栏

1.隐藏任务条 var  h:THandle; //变量h:=FindWindow('Shell_TrayWnd',nil);ShowWindow(h,SW_hide); 2.显示任务条h:=FindWindow('Shell_TrayWnd',nil);ShowWindow(h,SW_SHOW); 3.怎样在Delphi中调用API函数使任务不在任务栏中显示出来 SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW); Sh

任务显示与隐藏,任务管理器中应用程序显示与隐藏,悬浮窗任务栏显示 效果

1. 隐藏底部 "任务栏图标"和 隐藏 "任务任务管理器--应用程序-任务" ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW); ShowWindow(SW_HIDE); 此上为:迅雷悬浮窗任务栏显示效果. 2. 显示底部 "任务栏图标"  和 隐藏 "任务任务管理器--应用程序-任务" ShowWindow(SW_SHOW); ModifyStyleEx(WS_EX_APPWIN

Windows 10 开始菜单和任务栏中的隐藏秘密“退出资源管理器”

1. 开始菜单中的秘密:"退出资源管理器". 打开方法:打开开始菜单--同时按下 "CTRL+SHIFT",右键单击开始菜单中的空白处:你就可以看到以下秘密: 2. 任务栏中的秘密(windows 8也可实现):"退出资源管理器" 打开方法:同时按下 "CTRL+SHIFT",右键单击任务栏: 3. 重新回到资源管理器. 操作方法:同时按下"Ctrl+Shift+Esc"调出任务管理器--文件--运行新任务