分享
 
 
 

物善其用深入改造Win2000“位置条”

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

与以前的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_USER\Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\Placesbar注册表子键(一般地,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 = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\Placesbar\"

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:\test\”、“我的电脑”指定为位置条上两个位置后的“打开”对话框。

图三:经过定制的“打开”对话框

下面是SetDefaultPlaces.vbs脚本,该程序删除Placesbar子键,恢复默认的位置条设置。如前所述,除非我们创建了Placesbar子键,否则它是不存在的。如果Win2K/XP找不到Placesbar子键,位置条将默认使用标准配置。

' 常量

const APP_TITLE = "恢复“打开”对话框的位置条"

const REG_PLACESBAR = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\ComDlg32\Placesbar\"

' 是否继续?

rc = MsgBox("点击“确定”恢复标准的位置条配置", 1, APP_TITLE)

If rc < 1 Then

WScript.Quit

End If

' 删除Policies\ComDlg32下的所有注册键,启用标准的位置条配置

Set shell = CreateObject("WScript.Shell")

On Error Resume Next

shell.RegDelete(REG_PLACESBAR)

' 完成...

MsgBox "已经恢复默认的位置

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有