delphi中如何控制windows工作列的顯示
吳淑華為了更有效地利用顯示器的空間,多數程式設計師都有過這樣的經驗,即通過windows工作列屬性對話方塊,在「工作列選項」頁中將工作列設定為「自動隱藏」,並且為了在需要工作列時操作方便,選擇工作列「總在最前」。完成上述設定後,當程式設計師編輯文件或編寫**時,工作列會自動隱藏,增加了顯示器的可利用空間;而當程式設計師需要操作工作列時,只需將滑鼠移動到工作列所在位置的顯示器邊緣上,這時工作列就會自動出現。但如果工作列沒有設定成「總在最前」,此時工作列就不會自動彈出。
要控制windows工作列的隱藏和顯示,可以通過呼叫一組api函式來實現。這組api函式分別是:
(1) findwindow函式
該函式通過指定的類名和視窗名來檢索指定的高層視窗控制代碼,如果檢索成功,則返回視窗控制代碼,否則返回空;另外,需注意改函式不能用於查詢子視窗。函式如下:
hwnd findwindow(lpctstr lpclassname, //類名指標
lpctstr lpwindowname //視窗名指標
); (2) showwindow函式
該函式用於設定指定視窗的顯示狀態。函式如下:
bool showwindow(hwnd hwnd, //指定視窗的控制代碼
int ncmdshow //指定視窗的顯示狀態,可以設定為sw_hide,sw_show等
); (3) setwindowpos函式
該函式用於設定指定視窗的大小、顯示位置和顯示順序等資訊。函式如下:
bool setwindowpos(
hwnd hwnd, // 指定視窗的控制代碼
hwnd hwndinsertafter, // 指定視窗的顯示順序,可以設為如下一組值:hwnd_bottom、hwnd_notopmost、hwnd_top、hwnd_topmost
int x, // 指定視窗的橫座標位置
int y, // 指定視窗的縱座標位置
int cx, // 指定視窗的寬度
int cy, // 指定視窗的長度
uint uflags // 指定視窗的尺寸和位置標記,可以取一組值或這些值的組合
); 下面本文以乙個具體的例子,詳細介紹一下在delphi 5.0中實現windows工作列顯示和隱藏的步驟。
1. 建立乙個應用程式,在主窗體上增加二個tbutton元件和乙個tcheckbox元件。設定其中乙個tbutton元件的caption屬性為「隱藏windows的工作列」,設定另乙個tbutton元件的caption屬性為「顯示windows的工作列」,設定tcheckbox元件的caption屬性為「總在最前」。
2. 編輯tform1.button1click(sender: tobject)
隱藏windows的工作列,**如下:
procedure tform1.button1click(sender: tobject);
var
wndhandle: thandle; //用於儲存指定視窗的控制代碼
wndclass: array[0..50] of char; //用於儲存類名
begin
strpcopy(@wndclass[0], 'shell_traywnd'); //獲取工作列類名
wndhandle := findwindow(@wndclass[0],nil); //獲取工作列視窗的控制代碼
showwindow(wndhandle, sw_hide); //隱藏windows工作列
button2.enabled := true; //設定「顯示windows工作列」按鈕變為可操作狀態
button1.enabled := false; //設定「隱藏windows工作列」按鈕變為不可操作狀態
end;
3. 編輯tform1.button2click(sender: tobject)
顯示windows的工作列,並判斷「總在最前」tcheckbox元件是否選中,如果選中,則工作列總是顯示在最前方,否則工作列顯示在最底層。**如下:
procedure tform1.button2click(sender: tobject);
var
wndhandle: thandle;
wndclass: array[0..50] of char;
begin
strpcopy(@wndclass[0], 'shell_traywnd');
wndhandle := findwindow(@wndclass[0],nil);
showwindow(wndhandle, sw_show); //顯示windows的工作列
//判斷「總在最前」核取方塊是否選中
if checkbox1.checked then //如果選中,則設定工作列為最頂層視窗
setwindowpos(wndhandle, hwnd_topmost, r.top, r.left, r.bottom, r.right, swp_nomove)
else //否則,設定工作列為最底層視窗
setwindowpos(wndhandle, hwnd_bottom, r.top, r.left, r.bottom, r.right, swp_nomove);
//設定按鈕的操作狀態
button2.enabled := false;
button1.enabled := true;
end;
4. 開啟windows工作列屬性對話方塊,不選中「自動隱藏」和「總在最前」兩個核取方塊,並確定後關閉該對話方塊。執行上述建立的應用程式,即可控制windows工作列的顯示和隱藏
隱藏工作列
我有乙個隱藏工作列的程式,你看看你是否用得著。mobile sdk6410下的控制台程式 由於工作列擋住了我要用的除錯工具,所以要關掉,等我不要,在開啟。如果你想一直開啟,下面的 稍微改一下就能實現了。include include int tmain int argc,tchar argv whi...
如何隱藏工作列
有木有,不想讓老總直接看到你電腦下方執行的qq,msn,或是遊戲頁面?有木有,不想因為自己的工作需求而扼殺自己的 愛好?有木有,不想讓過多不相干的人直接目測到你電腦下方執行的各大程式?ok。1 滑鼠右鍵單擊工作列 選擇屬性 2 設定如下圖 3 即可自動隱藏工作列。哈哈 如何全屏截圖 1 找到鍵盤上左...
WM隱藏 顯示工作列
如下 using system.runtime.interopservices const uint shfs showtaskbar 0x0001 const uint shfs hidetaskbar 0x0002 const uint shfs showsipbutton 0x0004 con...