<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用 VB 完成任務欄的模塊化設置

      [摘要]武漢 艾軍在 VB 編程中有時需要對系統的任務欄的各個部分(如開始菜單按鈕、時鐘等等)進行各類操作(如隱藏、顯示、有效、無效)等等,這是如何實現的呢,主要就是通過 ShowWindow、EnableWindow 來完成的。下面將通過一個自定義的函數(ShowHideTaskbar ),來完成“隱藏...
      武漢 艾軍

      在 VB 編程中有時需要對系統的任務欄的各個部分(如開始菜單按鈕、時鐘等等)進行各類操作(如隱藏、顯示、有效、無效)等等,這是如何實現的呢,主要就是通過 ShowWindow、EnableWindow 來完成的。
      下面將通過一個自定義的函數(ShowHideTaskbar ),來完成“隱藏”,“顯示”任務欄各部分的操作。
      注釋:使用示例
      注釋:ShowHideTaskbar "任務欄", "隱藏"
      注釋:ShowHideTaskbar "任務欄", "顯示"
      注釋:ShowHideTaskbar "圖標", "隱藏"
      注釋:ShowHideTaskbar "圖標", "顯示"
      注釋:ShowHideTaskbar "程序按鈕", "隱藏"
      注釋:ShowHideTaskbar "程序按鈕", "顯示"
      注釋:ShowHideTaskbar "開始菜單", "隱藏"
      注釋:ShowHideTaskbar "開始菜單", "顯示"
      注釋:ShowHideTaskbar "時鐘", "隱藏"
      注釋:ShowHideTaskbar "時鐘", "顯示"
      注釋:ShowHideTaskbar "快速啟動", "隱藏"
      注釋:ShowHideTaskbar "快速啟動", "顯示"

      請大家新建一個模塊(.bas)文件,自定義 ShowHideTaskbar 函數及其他,這樣在以后的任何程序中只要調用此模塊就可以了。
      注釋:本模塊是關于顯示隱藏系統任務欄的
      Option Explicit
      注釋:有關 API 函數的注釋,將在最后詳細說明
      Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
      Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
      Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
      Const SW_HIDE = 0
      Const SW_SHOW = 5
      Dim wnd As Long
      Public Function ShowHideTaskbar(ByVal Part As String, ByVal Action As String)
          注釋:獲得任務欄的窗口句柄
          wnd = FindWindow("Shell_TrayWnd", vbNullString)
          
          Select Case Part
              Case "任務欄"
              Case "開始菜單"
                  wnd = FindWindowEx(wnd, 0, "Button", vbNullString)
              Case "圖標"
                  wnd = FindWindowEx(wnd, 0, "TrayNotifyWnd", vbNullString)
              Case "程序按鈕"
                  wnd = FindWindowEx(wnd, 0, "ReBarWindow32", vbNullString)
                  wnd = FindWindowEx(wnd, 0, "MSTaskSwWClass", vbNullString)
              Case "時鐘"
                  wnd = FindWindowEx(wnd, 0, "TrayNotifyWnd", vbNullString)
                  wnd = FindWindowEx(wnd, 0, "TrayClockWClass", vbNullString)
              Case "快速啟動"
                  wnd = FindWindowEx(wnd, 0, "ReBarWindow32", vbNullString)
                  wnd = FindWindowEx(wnd, 0, "ToolbarWindow32", vbNullString)
          End Select
          
          If Action = "顯示" Then ShowWindow wnd, SW_SHOW(注意點1)
          If Action = "隱藏" Then ShowWindow wnd, SW_HIDE
      End Function

      補充:通過上面的模塊就可以很方便對任務欄的各個部分進行“顯示”、“隱藏”的操作,如果還需要使其“無效”、“有效”大家可使用 EnableWindow  來完成,方法和上面的差不多,只是在(注意點1)處稍做修改就行了。本程序在 Win98、VB5.0 環境下運行良好,大家如果還有什么問題可到 www.d1vb.com 來一起討論。

      API 函數詳細注釋:
      1、FindWindowEx
      VB聲明
      Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
      說明
      在窗口列表中尋找與指定條件相符的第一個子窗口
      返回值
      Long,找到的窗口的句柄。如未找到相符窗口,則返回零。會設置GetLastError
      參數表
      參數 類型及說明
      hWnd1 Long,在其中查找子的父窗口。如設為零,表示使用桌面窗口(通常說的頂級窗口都被認為是桌面的子窗口,所以也會對它們進行查找)
      hWnd2 Long,從這個窗口后開始查找。這樣便可利用對FindWindowEx的多次調用找到符合條件的所有子窗口。如設為零,表示從第一個子窗口開始搜索
      lpsz1 String,欲搜索的類名。零表示忽略
      lpsz2 String,欲搜索的類名。零表示忽略

      2、ShowWindow
      VB聲明
      Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
      說明
      控制窗口的可見性(在vb里使用:針對vb窗體及控件,請使用對應的vb屬性)
      返回值
      Long,如窗口之前是可見的,則返回TRUE(非零),否則返回FALSE(零)
      參數表
      參數 類型及說明
      hwnd Long,窗口句柄,要向這個窗口應用由nCmdShow指定的命令
      nCmdShow Long,為窗口指定可視性方面的一個命令。請用下述任何一個常數
      SW_HIDE 隱藏窗口,活動狀態給令一個窗口
      SW_MINIMIZE 最小化窗口,活動狀態給令一個窗口
      SW_RESTORE 用原來的大小和位置顯示一個窗口,同時令其進入活動狀態
      SW_SHOW 用當前的大小和位置顯示一個窗口,同時令其進入活動狀態
      SW_SHOWMAXIMIZED 最大化窗口,并將其激活
      SW_SHOWMINIMIZED 最小化窗口,并將其激活
      SW_SHOWMINNOACTIVE 最小化一個窗口,同時不改變活動窗口
      SW_SHOWNA 用當前的大小和位置顯示一個窗口,不改變活動窗口
      SW_SHOWNOACTIVATE 用最近的大小和位置顯示一個窗口,同時不改變活動窗口
      SW_SHOWNORMAL 與SW_RESTORE相同

      3、FindWindow
      VB聲明
      Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
      說明
      尋找窗口列表中第一個符合指定條件的頂級窗口(在vb里使用:FindWindow最常見的一個用途是獲得ThunderRTMain類的隱藏窗口的句柄;該類是所有運行中vb執行程序的一部分。獲得句柄后,可用api函數GetWindowText取得這個窗口的名稱;該名也是應用程序的標題)
      返回值
      Long,找到窗口的句柄。如未找到相符窗口,則返回零。會設置GetLastError
      參數表
      參數 類型及說明
      lpClassName String,窗口類型名稱,或不知道窗口的類型的名稱,可填入 vbNullString。
      lpWindowName String,窗口標題,或只知道窗口類型名稱,這一參數可填入 vbNullString。
      注解
      很少要求同時按類與窗口名搜索。為向自己不準備參數傳遞一個零,最簡便的辦法是傳遞vbNullString常數

      4、EnableWindow
      VB聲明
      Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
      說明
      在指定的窗口里允許或禁止所有鼠標及鍵盤輸入(在vb里使用:在vb窗體和控件中使用Enabled屬性)
      返回值
      Long,非零表示成功,零表示失敗。會設置GetLastError
      參數表
      參數 類型及說明
      hwnd Long,窗口句柄
      fEnable Long,非零允許窗口,零禁止


      日韩精品一区二区三区高清