alttab:让窗口不显示在任务栏和ALT+TAB中



的前想弄个像QQ旋风那样悬浮窗口就研究了下如何让窗口不显示在任务栏中思路方法其实很简单就是将窗口扩张属性设置成WS_EX_TOOLWINDOWMSDN中对该属性有详细介绍代码如下:

::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里面测试
Tags:  delphialttab alttab无效 屏蔽alttab alttab

延伸阅读

最新评论

发表评论