如何隐藏程序的任务栏

greatxingxing 2010-11-27 05:08:22
我最近想做一个便笺程序,
就是运行程序后,
能在桌面上看到程序窗口内容,但没有任务栏的那种。

google和百度一天了,都没找到解决办法,试过好多API,都没办法实现,只好向各位大人询问了。


请问怎么隐藏程序的任务栏?

谢谢各位。。。
...全文
149 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
greatxingxing 2010-11-27
  • 打赏
  • 举报
回复
谢谢1楼的,在你的指导下我查找了SetWindowLong函数,已经实现了我想要的功能,
再次感谢!
184270428 2010-11-27
  • 打赏
  • 举报
回复
getwindowlong
setwindowlong

WS_EX_TOOLWINDOW=0x00000080L=128

怎么会查不到呢?:
之前想弄个像QQ旋风那样的悬浮窗口,就研究了下怎么让窗口不显示在任务栏中,方法其实很简单就是将窗口的扩张属性设置成WS_EX_TOOLWINDOW,MSDN中对该属性有详细介绍,代码如下:

::SetWindowLong(m_hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW );

但是这样一来窗口的其他的扩展属性不管有没有,肯定是全没有,因此可以用下面的方法保留窗口的其他扩展属性:

DWORD dwExStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
dwExStyle |= WS_EX_TOOLWINDOW;
::SetWindowLong(m_hWnd, GWL_EXSTYLE, dwExStyle);

不过上面的代码并不能达到目的,也就是任务栏中仍然有显示,后来研究发现只有去掉了WS_EX_APPWINDOW这个扩展属性才能两个目的都能完全达到,代码如下:

DWORD dwExStyle = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
dwExStyle |= WS_EX_TOOLWINDOW;
::SetWindowLong(m_hWnd, GWL_EXSTYLE, dwExStyle & ~WS_EX_APPWINDOW);

我在网上看过一种方法是先创建一种隐藏窗口,然后以这个隐藏窗口为父窗口再创建一个子窗口,是的,任务栏是没有显示了,但是你用ALT+TAB还是看得到,要彻底隐藏,这个时候只需再给这个子窗口设置一个WS_EX_TOOLWINDOW属性就可以了。

另外还有一个WS_EX_LAYERED 的使用,当你需要修改窗口的透明度时必须给窗口加上该属性。

注:上面的代码可以加在OnInitDialog()里面测试。

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧