定制全新的Win2000另类“位置条”

与以前的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的位置条了。

(0)

相关推荐

  • 定制全新的Win2000另类“位置条”

    与以前的Windows相比,Win2K/XP的用户界面作了不少改进,极大地方便了用户使用Windows.例如,"活动桌面"以HTML为基础,对于Windows NT 4.0用户来说,这是一次巨大的变化.不管你是否喜欢它,新的用户界面为有经验的用户带来了定制桌面的机会,使人们能够更高效地完成日常工作."打开"对话框属于最常用的对话框之一,在Win 2K/XP的用户界面中,它增加了一个"位置条",本文要讨论的就是如何定制这个位置条. 本文的说明主要针

  • CKEditor4配置与开发详细中文说明文档

    一.CKEditor4安装 安装CKEditor 是很容易的.选择合适的过程(新安装或升级),按下面描述的步骤安装. 1.新安装 第一次安装CKEditor,按如下方式进行: 1) 从CKEditor 网站:http://ckeditor.com/download下载最新版本的CKEditor .  2) 将下载的文档解压到你的website根目录下的ckeditor 目录中.你可以将文档放在你的website的任意路径中.ckeditor 目录是缺省目录. 2.升级 要升级现有的CKEdito

  • Android关于SeekBar无法点击到最大值问题解决方法记录(推荐)

    先说一下问题发现经过吧,最近项目定制系统设置应用,其中亮度条一开始是0-255值变化,使用了SeekBar控件去调节,后来需求变更将值划分为10个等级,也就是进度条的max为9,可以说一下子进度条从0-255变成了0-9范围缩小了很多,范围缩小,控件没有变,也就是每个进度点到下一个进度点的距离就变长了,众所周知,SeekBar是支持拖动以及点击两种方式控制,在我无聊瞎点时发现,我怎么点,这个进度条都无法通过点击跳到最大值,瞬间也就从划水模式变成认真模式=_=||.顺便也就写下来记录一下,防止以后

  • vue router 源码概览案例分析

    源码这个东西对于实际的工作其实没有立竿见影的效果,不会像那些针对性极强的文章一样看了之后就立马可以运用到实际项目中,产生什么样的效果,源码的作用是一个潜移默化的过程,它的理念.设计模式.代码结构等看了之后可能不会立即知识变现(或者说变现很少),而是在日后的工作过程中悄无声息地发挥出来,你甚至都感觉不到这个过程 另外,优秀的源码案例,例如 vue . react 这种,内容量比较庞大,根本不是三篇五篇十篇八篇文章就能说完的,而且写起来也很难写得清楚,也挺浪费时间的,而如果只是分析其中一个点,例如

  • sqlserver分页查询处理方法小结

    sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用MySQL的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页. 下面是本人在网上查阅到的几种查询脚本的写法: 几种sqlserver2008高效分页sql查询语句 top方案: sql code: select top 10 * from table1 where id not in(select top 开始的位置 id from table1

  • jQuery scrollFix滚动定位插件

    当用户向上或向下滚动页面到一定位置时,目标元素开始固定定位(position:fixed),当回滚到原位置时目标元素恢复到原状态,可以定制触发滚动相对屏幕位置和触发滚动方向,兼容IE6 [插件参数] $(".target_element").scrollFix( [ "top" | "bottom" | length(可以为负,表示相对bottom), [ "top" | "bottom" ] ]); 第一

  • 在Windows系统上使用压缩归档文件安装MySQL的步骤

    最近需要做个小小的验证实验,需要安装MySQL,网上一搜发现教程繁多,bug也多,所以直接把官网的流程翻译过来,注意是压缩文件,不是安装版的,解压直接能用的,下面直接把流程贴过来: 使用压缩文档安装在Windows上安装MySQL 1.将文件提取到安装目录 1)管理员权限     2)选择安装位置,默认C:\mysql,通过配置文件制定安装位置     3)使用软件解压缩,如果默认生成一个主目录,请把主目录中的子文件放到你指定的安装位置上 2.创建配置文件 A.为何使用配置文件 1)安装和数据目

  • php微信公众号开发之翻页查询

    本文为大家分享了php微信公众号开发之翻页查询的具体代码,供大家参考,具体内容如下 注意:公众号列表最多只能列出8列,超出会报错 分页原理 limit 开始位置 , 条数 (当前页数 - 1) x 每页条数 , 每页条数 limit ($Page - 1) * $PageSize , $PageSize 0 为开始位置 mysql_num_rows 条数 require() 与 require_once() 开始加载,错误停止 include() 与 include_once() 使用加载,错误

  • linux后台运行的几种方式(小结)

    1.nohup 将程序以忽略挂起信号的方式运行起来 补充说明 nohup命令 可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端. 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中. 如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中. 如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用. 如果标准错误是一个终端,那么把指定的命令写给标准错误

  • IOS 开发之自定义按钮实现文字图片位置随意定制

    IOS 开发之自定义按钮实现文字图片位置随意定制 可能有些看到这篇文章的朋友会觉得很不屑:"按钮谁不会自定义?还需要看你的?" 也确实,按钮是我们项目中最常见的控件之一,天天在使用.对于不同类型的按钮,我们是否有更加简便的方法来实现需求是我们需要做的.这里我提出自己的两种方法,您可以对你自己平时自定义按钮的方法做一下对比,看看哪种方法更加简单. 多说一句,千万不要觉得知识简单,觉得自己会了,没必要学习.'往往简单的东西存在大智慧'(这个比给满分),知识都是慢慢积累出来的. 按钮是应用中

随机推荐