與以前的Windows相比,Win2K/XP的使用者介面作了不少改進,極大地方便了使用者使用Windows。例如,“活動案頭”以HTML為基礎,對於Windows NT 4.0使用者來說,這是一次巨大的變化。不管你是否喜歡它,新的使用者介面為有經驗的使用者帶來了定製案頭的機會,使人們能夠更高效地完成日常工作。“開啟”對話方塊屬於最常用的對話方塊之一,在Win 2K/XP的使用者介面中,它增加了一個“位置條”,本文要討論的就是如何定製這個位置條。
本文的說明主要針對Win 2K,但基本原理同樣適用於XP,不同之處會另行指出。
一、“開啟”對話方塊
也許你已經注意到,一些軟體在Win2K/XP下運行時,它們的“開啟”對話方塊與Win9x/NT 4.0下有所不同。圖一顯示了標準的Win2K“開啟”對話方塊,點擊記事本的“檔案/開啟”菜單即可顯示出這個對話方塊。與以前的作業系統相比,這個對話方塊新增了一樣東西:視窗的左邊增加了一個垂直的按鈕條。Win2K的SDK文檔把這個按鈕條稱作“位置條”(Places Bar)。
圖一:標準的Win2K“開啟”對話方塊
位置條的作用是讓使用者只用一次滑鼠點擊就可以到達經常使用的檔案夾。Win2K/XP位置條包含的按鈕最多5個,每個按鈕指向一個系統檔案夾。點擊任意一個按鈕,“開啟”對話方塊就會立即顯示出對應檔案夾的內容。
預設的位置條分別為下列檔案夾各提供一個按鈕:曆史,案頭,我的文件,我的電腦,網路位置。“曆史”檔案夾記錄了使用者最近使用的檔案和檔案夾,如果要訪問最近用過的檔案或檔案夾,“曆史”檔案夾是首先要查看的地方。許多使用者還經常要用到其他四個檔案夾。
預設的位置條配置包含了大多數使用者最常用的檔案夾,滿足了大部分使用者的需要。然而,這個預設配置可能不符合你的工作習慣,這時你就要對它進行定製了。
二、定製位置條
無論是註冊表還是其他什麼地方,都沒有明確地列出位置條的各個檔案夾。因此,除非手工或用程式自動建立一組新的位置,否則,Win2K/XP總是使用標準的位置條。
位置條是一種系統級的資源。一旦把一組位置指定給位置條,所有的Win2K/XP軟體都將使用這組位置。這種限制意味著,你不能為記事本的位置條指定一種配置,又為畫筆的位置條指定另一種配置,所有在Win2K/XP下啟動並執行程式共用同一組位置——不管這組位置是標準的還是定製的。(Office例外,它可以有一組不同的位置,稍後再詳細討論)。
要為位置條指定一組新的檔案夾,第一步是要告訴系統你不準備再用預設的5個位置。建立HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesComDlg32Placesbar註冊表子鍵(一般地,Plicies子鍵可能已經存在,但ComDlg32子鍵需要自己建立)。建立該子鍵之後,你可以看到“開啟”對話方塊的位置條已經變成空白了。Placesbar子鍵告訴Win2K你不想使用標準的位置群組合,但這時你尚未指定自己的配置。
Placesbar子鍵包含的註冊項最多5個,名字從Place0到Place4。Win2K/XP不會認可或正確處理Place5、Place6或其他名字的註冊鍵。位置應當順序指定,例如,不能設定Place0、Place2漏掉Place1。如果註冊表設定的位置既淩亂又不完整,位置條將以不可預知的順序顯示表徵圖和檔案夾名字。
在Placesbar子鍵中添加位置資訊時,指定檔案夾的方式是以字串的形式提供檔案夾的完整路徑名。註冊資料的類型是REG_SZ(如果檔案夾的名字中用到了環境變數,則應該是REG_EXPAND_SZ)。
可以在註冊資訊中指定系統檔案夾作為位置條上的位置。系統檔案夾往往有很長的路徑,不容易記住(例如,你能夠立即說出“我的文件”的完整路徑嗎?)如果要把“我的文件”或“收藏”指定為位置,你可以使用與具體系統無關的數字ID,而不是使用它的完整路徑名。Microsoft把這個ID稱為CSIDL。表一列出了Win2K常見系統檔案夾的ID。對於這類檔案夾,你可以在Placesbar子鍵下建立類型為REG_DWORD的註冊項並指定ID。
表一 注意:表一的ID值不適用於XP。如果你使用的是XP,請尋找相關資料,或直接使用檔案夾的絕對路徑。
三、定製過程自動化
下面介紹一個modifyPlaces.vbs指令碼,這是一個自動讀取和寫入位置資訊的程式。在Win2K命令視窗下,執行“CScript modifyPlaces.vbs”或“WScript modifyPlaces.vbs”即可啟動該程式,參見圖二。程式首先詢問你想要修改的位置編號。如果輸入0到4之間的數字,程式繼續,點擊“是”用路徑指定檔案夾,點擊“否”用ID數字指定檔案夾。點擊“是”之後,程式要求你輸入一個完整的路徑名,完成後,程式將建立一個REG_SZ註冊鍵。如果選擇了“否”,程式要求輸入一個系統檔案夾ID,完成後,程式建立一個REG_DWORD子鍵。指定一個位置之後,程式允許你繼續指定其他的位置。
圖二:定製位置條
' 常量
const APP_TITLE = "設定“開啟”對話方塊的位置條"
const REG_PLACESBAR = "HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesComDlg32Placesbar"
Dim place ' 位置編號
Dim canContinue ' 邏輯開關' 擷取待設定的位置編號
canContinue = True
While canContinue
place = InputBox("輸入位置編號 (0到4)", APP_TITLE, 0)
' 點擊了“取消”按鈕...
If place = " Then
WScript.Quit
End If
If place > 4 Then
MsgBox "位置編號錯誤,請指定0-4之間的位置編號!", 16, APP_TITLE
Else
' 位置編號合法,從註冊表讀取資訊
ChangePlace place
End If
Wend
' 修改指定的位置
Sub ChangePlace (place)
Dim shell, curPath, buf, rc, newPath, theType
Set shell = CreateObject("WScript.Shell")
On Error Resume Next
curPath = shell.RegRead(REG_PLACESBAR & "Place" & place)
On Error Goto 0
' 預設值
If curPath = " Then curPath = "預設值"
buf = "
buf = buf & "位置" & place & "當前被設定為" & _
Chr(34) & curPath & Chr(34) & vbCrLf & vbCrLf & _
"點擊“是”指定一個普通檔案夾" & vbCrLf & _
"點擊“否”指定一個系統檔案夾" & vbCrLf & _
"點擊“取消”退出程式"
rc = MsgBox(buf, 3, APP_TITLE)
' YES=6, NO=7, CANCEL=2
If rc = vbCancel Then Exit Sub
' 修改位置
Select Case rc
Case vbYes
newPath = InputBox("輸入新的檔案夾路徑", APP_TITLE, curPath)
If newPath = " Then Exit Sub
theType = "REG_SZ"
Case vbNo
buf = "
buf = buf & "選擇新的檔案夾." & vbCrLf & vbCrLf & _
"5 - 我的文件" & vbCrLf & _
"6 - 收藏" & vbCrLf & _
"17 - 我的電腦" & vbCrLf & _
"18 - 網路位置" & vbCrLf & _
"36 - Windows系統目錄" & vbCrLf & _
"34 - 曆史"
newPath = InputBox(buf, APP_TITLE, curPath)
If newPath = " Then Exit Sub
theType = "REG_DWORD"
End Select
shell.RegWrite REG_PLACESBAR & "Place" & place, newPath, theType
End Sub
應該承認,modifyPlaces.vbs沒有太多的錯誤控制機制,而且它的使用者介面也很粗糙。如果你想要一個專業一點的程式,最好把它轉換成VB代碼。圖三顯示了把“c: est”、“我的電腦”指定為位置條上兩個位置後的“開啟”對話方塊。
圖三:經過定製的“開啟”對話方塊
下面是SetDefaultPlaces.vbs指令碼,該程式刪除Placesbar子鍵,恢複預設的位置條設定。如前所述,除非我們建立了Placesbar子鍵,否則它是不存在的。如果Win2K/XP找不到Placesbar子鍵,位置條將預設使用標準配置。
表二
四、Office的位置條
前面的註冊表修改隻影響那些使用Win2K/XP公用對話方塊程式碼程式庫的程式,Office使用的對話方塊來自一個經過定製的程式碼程式庫。因此,修改Win2K/XP“開啟”對話方塊的位置條不會對Word和Excel的位置條產生任何影響。
但是,Office 2000也提供了定製其位置條的辦法,相關的註冊鍵是HKEY_CURRENT_USERSoftwareMicrosoftOffice9.0CommonOpen FindPlaces;對於Office XP,註冊鍵路徑是HKEY_CURRENT_USERSoftwareMicrosoftOffice