各位大哥!
如何隱藏任務欄中的某個視窗,例如:我們運行IE,但在任務欄沒有IE這個視窗,但IE還在桌面正常運行,
注意,不是隱藏整個任務欄!求解?
謝謝
uj5u.com熱心網友回復:
Function Long FindWindowEx(Long ph, Long ch, ref String cn, refString wn) Library “user32.dll”
Function Long ShowWindow(Long hWnd, Long nCmdShow) Library “user32.dll”
用ShowWindow來顯示或隱藏視窗,其第二個引數為0表示隱藏,為5表示顯示:
handle = FindWindowEx(0,0,” Shell_TrayWnd”,wn) //wn為空串
ShowWindow(handle,0) //隱藏任務欄
uj5u.com熱心網友回復:
有個簡單的辦法;一、建兩個視窗w_main,w_pop,w_main為main型別的視窗,w_pop為popup,w_main的visible設定為false;
二、在w_main的open事件中open(w_pop);
三、在application的open中open(w_main);
看看效果就知道了~~
uj5u.com熱心網友回復:
應該要用API吧!uj5u.com熱心網友回復:
這樣會把整個任務欄都隱藏的。
uj5u.com熱心網友回復:
handle = FindWindowEx(0,0,” Shell_TrayWnd”,wn) //wn為空串這個函數,我怎麼獲得某個程式的句柄,
例如,我正在運行某個PB的程式,我想獲得這個PB程式在任務欄的句柄,
給個這個函數具體的用法好嗎?謝謝
uj5u.com熱心網友回復:
以下內容參考于:184270428
(華哥)
http://topic.csdn.net/u/20101127/17/b963cb08-e5a6-40ad-980f-ecc39ef04d7c.html?96773
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()里面測驗。
uj5u.com熱心網友回復:
彈出式視窗在任務欄就不顯示呀轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/81594.html
標籤:API 調用
上一篇:系統運行不了 ,請大家幫忙,
