99爱免费观看_日韩在线免费_97成人在线视频_中文字幕三区_美女福利视频网站_色伊人

如何利用Delphi全面控制Windows任務欄

來源:期刊VIP網所屬分類:應用電子技術時間:瀏覽:

  使用Windows95/NT/98操作系統的用戶知道:Windows正常啟動后,在電腦屏幕下方出現一塊 任務欄。從系統功能角度而言,整個任務欄包括幾個不同的子區域,從左至右依次是:開始 按鈕、應用程序切換區(Application Switch Bar)、任務欄通知區(Notification Area)以 及任務欄時鐘。與其它Windows應用程序相同,任務欄程序(systray.exe)由幾個不同的窗體 組成,這些窗體是具有各自的窗口類名、顯示方式等信息。因此,只要得到有關窗口信息, 即可通過編程全面控制Windows任務欄的不同區域。?

  1. 編程思想?

  (1)任務欄窗體的窗口信息為:?

  ①任務欄的窗口類名是:ShellTrayWnd。?

  ②開始按鈕的窗口類名是:Button。?

  ③應用程序切換區的窗口類名是:ReBarWindow32。?

  ④任務欄通知區的窗口類名是:TrayNotifyWnd。?

  ⑤任務欄時鐘的窗口類名是:TrayClockWClass。?

  (2)調用FindWindow函數得到任務欄的窗口句柄。?

  (3)調用FindWindowEx函數得到任務欄各子區域的窗口句柄。?

  (4)根據窗口句柄,調用ShowWindow函數控制任務欄各區域顯示或隱藏 (show/hide);調用En ableWindow函數控制任務欄各區域有效或無效(enabled/disabled)。?

  2. 編程方法?

  (1)在Delphi3.0 IDE中新建工程Project1, Project1中包含Form1, 窗體如下圖所示:

  (2)定義窗口句柄數組:Wnd:array[0..4] of THandle;?

  (3)GetHandles過程代碼如下:?

  procedure TForm1.GetHandles;?

  begin?

  //得到Tray Bar的窗口句柄;?

  Wnd[0]:=FindWindow(′ShellTrayWnd′,nil);?

  //得到開始按鈕的窗口句柄;?

  Wnd[1]:=FindWindow(′ShellTrayWnd′,nil);?

  Wnd[1]:=FindWindowEx(Wnd[1],HWND(0),′Button′,nil);?

  //得到應用程序切換區的窗口句柄;?

  Wnd[2]:=FindWindow(′ShellTrayWnd′,nil);?

  Wnd[2]]:=FindWindowEx(Wnd[2],HWND(0),′ReBarWindow32′,nil);?

  //得到任務欄通知區的窗口句柄;?

  Wnd[3]:=FindWindow(′ShellTrayWnd′,nil);?

  Wnd[3]:=FindWindowEx(Wnd[3],HWND(0),′TrayNotifyWnd′,nil);?

  //得到任務欄時鐘的窗口句柄;?

  Wnd[4]:=FindWindow(′ShellTrayWnd′,nil);?

  Wnd[4]:=FindWindowEx(Wnd[4],HWND(0),′TrayNotifyWnd′,nil);?

  Wnd[4]:=FindWindowEx(Wnd[4],HWND(0),′TrayCLockWClass′,nil);?

  end;?

  (4)EnableOrDisable過程代碼如下:?

  procedure TForm1.EnableOrDisable(Sender:TOBject);?

  begin?

  GetHandles;?

  if TCheckBox(Sender). Checked then?

  case TCheckBox(Sender). Tag of?

  0: EnableWindow(Wnd[0], False);?

  1: EnableWindow(Wnd[1], False);?

  2: EnableWindow(Wnd[2], False);?

  3: EnableWindow(Wnd[3], False);?

  4: EnableWindow(Wnd[4], False);?

  end?

  else?

  case TCheckBox(Sender). Tag of?

  0: EnableWindow(Wnd[0], True);?

  1: EnableWindow(Wnd[1], True);?

  2: EnableWindow(Wnd[2], True);?

  3: EnableWindow(Wnd[3], True);?

  4: EnableWindow(Wnd[4], True);?

  end;?

  end;?

  (5)HideOrShow過程代碼如下:?

  procedure TForm1.HideOrShow(Sender:TObject);?

  begin?

  GetHandles;?

  if TCheckBox(Sender). Checked then?

  case TCheckBox(Sender). Tag of?

  0: ShowWindow(Wnd[0],SWHIDE);?

  1: ShowWindow(Wnd[1],SWHIDE);?

  2: ShowWindow(Wnd[2],SWHIDE);?

  3: ShowWindow(Wnd[3],SWHIDE);?

  4: ShowWindow(Wnd[4],SWHIDE);?

  end?

  else?

  case TCheckBox(Sender). Tag of?

  0: ShowWindow(Wnd[0],SWShow);?

  1: ShowWindow(Wnd[1],SWShow);?

  2: ShowWindow(Wnd[2],SWShow);?

  3: ShowWindow(Wnd[3],SWShow);?

  4: ShowWindow(Wnd[4],SWShow);?

  end;?

  end;?

  (6)FormClose事件代碼如下://將Windows任務欄恢復到正常狀態;?

  procedure TForm1.FormClose(Sender:TObject; var Action: TCloseAction);?

  var i:Integer;?

  begin?

  for i:=0 to 4 do?

  begin?

  EnableWindow(Wnd[i],True);?

  ShowWindow(Wnd[i],SWShow);?

  end;?

  end;?

  (7)按F9運行程序。以上程序在Delphi3.0/4.0、Windows95/98簡體中文版環境下調試通過。 ?

  (8)說明:本文所述方法同樣適用于VB、VC、BC、C++Builder等編程工具,但應注意語法、 變量類型等不同要求。

主站蜘蛛池模板: 91一区二区三区久久国产乱 | 夜久久| 天天草夜夜操 | 最新黄色av | 国产高清一区二区 | 亚洲三级在线看 | 日本美女黄网站 | 九九热在线视频 | 亚洲看片 | 亚洲久草 | 伊人免费在线观看高清版 | 欧美一区二区三区电影 | 国产精品99 | 羞羞视频在线免费 | 伊人免费观看视频 | 日韩成人短视频 | 日韩一区二区在线视频 | 999在线视频免费观看 | 91在线成人 | 人人看黄色 | 在线观看毛片视频 | 色香蕉在线 | 18成人在线观看 | 日韩在线观看一区 | 成人国产在线观看 | 自拍色图| 国产美女久久久 | 欧美久久视频 | 综合色视频 | av午夜电影| 欧美午夜影院 | 成人一区av偷拍 | 精品二区 | 伊人小视频 | 欧洲成人午夜免费大片 | www.huangse| 99久久精品免费看国产四区 | 95香蕉视频 | 国产精品日韩精品 | 国产精品中文字幕在线播放 | 99久久精品免费 |