與以前的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.0CommonOpen FindPlacesUserDefinedPlaces。
不過,如果你只是想要定制位置條,可以不通過該注冊鍵。Microsoft提供了一個方便的修改位置條的工具,你可以把它安裝到Office 2000軟件的“工具”菜單。這個工具可以從support.microsoft.com/support/kb/articles/q260/1/90.asp下載,下載包帶有該插件的完整VB源代碼和如何使用該工具的說明。
下載places.exe文件之后,雙擊解開壓縮包。然后,點擊Win2K/XP的“開始/運行”菜單,輸入“regsvr32 <路徑>places.dll”,并確認注冊places.dll。此時如果你打開了Office 2000的程序,請先關閉它再打開。這時,Office軟件的“工具”菜單上會出現一個“Set Places”菜單項,你可以用它來設置位置條上的各個位置。與Win2K的標準對話框不同,Office 2000軟件的位置條支持小圖標。使用小圖標時,位置條上的文件夾數量不再有最多5個的限制。無論在哪一個Office 2000軟件中修改位置條,改動結果將對所有Office 2000軟件有效。
位置條是一種很不錯的工具,但只有當它列出的位置恰好是你常用的文件夾時,它的優勢才能充分發揮出來。有了本文的知識,現在你也應該能夠隨心所欲地定制Win2K/XP和Office的位置條了。