本页主题: [教学]为你的Total Commander工具栏增加下拉功能-TCMenu的使用方法 打印 | 加为IE收藏 | 复制链接 | 收藏主题 | 上一主题 | 下一主题

galilette
级别: 嘉宾


精华: 30
发帖: 2139
威望: 1382 点
金钱: 0 静电币
支持度: 0 点
在线时间:3012(小时)
注册时间:2002-05-01
最后登录:2019-03-12

 [教学]为你的Total Commander工具栏增加下拉功能-TCMenu的使用方法

转载请注明出处
为你的TC工具栏增加下拉功能-TCMenu的使用方法
如果你还没用过Total Commander, 请去 http://www.ghisler.com 下载最新版并试用.

零. 一个简单的工具栏定义文件
为了了解TCMenu的工作机制, 我们首先考察一下TC的工具栏文件的格式. 下面是一个示例工具栏文件Sample.bar

Quote:

[Buttonbar]
Buttoncount=2
button1=%windir%\system32\notepad.exe
cmd1=%windir%\system32\notepad.exe
param1=%p%n
path1=%windir%
menu1=Notepad
button2=%windir%\system32\mspaint.exe
cmd2=%windir%\system32\mspaint.exe
param2=?%A
path2=%windir%
menu2=Paint Brush

第一行[Buttonbar]表示这是一个工具栏定义文件
第二行Buttoncount=2表示该工具栏共有2个按钮
后面的内容定义了工具栏上的每个按钮, [button,cmd,param,path,menu]<i>=<content>表示第<i>个按钮的[图标/命令/参数/路径/提示]为<content>
比如, 第二个按钮的参数为?%p%n, 表示按该按钮会弹出提示用户输入参数的输入框, 框内的默认内容为%p%n, 即当前选择的文件的带路径全名, 点击效果如图:

关于按钮的参数设置, 可以查看TC的文档

一. TCMenu的命令行格式
下面进入正题. 首先看一下TCMenu的用法:
Copy code
TCMenu.exe <BarFile Path> [<Parameter String> <Parameter String> ...] [-$]

其中,
<BarFile Path>表示需要TCMenu导入的工具栏文件的地址
<Parameter String>表示形如
Quote:
-<c> <Replace String>

的字符串, 其中<c>为任意单字符, <Replace String>为任意不含空格的字符串或包含在引号内的含空格字符串
[]内是非必须内容

二. TCMenu的工作方式
TCMenu运行时, 首先读取<BarFile Path>指定的*.bar文件, 搜索文件中出现在param<i>=后的字符串中有没有%<c>, 如果有, 就将%<c>"替换"为相应的<Replace String>.
比如TC的一个按钮被定义为
Quote:
button1=TCMenu.exe
cmd1=TCMenu.exe
param1=%commander_path%\MyBar\sample.bar -p %p -n %n -A %p%n
path1=%commander_path%\plug_in\exe\tcmenu\
menu1=Example Dropdown

按该按钮时, TC首先将%p转换为source panel的目录, 比如c:\windows\; %n转换为source panel的选定文件, 比如windowsxp.bmp, %commander_path%换为TC所在目录, 比如d:\app\totalcmd, 然后调用TCMenu. 所以事实上执行的是:
Copy code
TCMenu.exe d:\app\totalcmd\mybar\sample.bar -p c:\windows\ -n window~1.bmp -A c:\windows\window~1.bmp

这样的调用方式表示, 所有出现在sample.bar参数行(即param<i>=)中的%p会被替换为c:\windows\, %n会被替换为window~1.bmp, %A会被替换为c:\windows\window~1.bmp

这里有一个小技巧是, 通过TCMenu调用toolbar时, toolbar中的button的运行参数可以设定为诸如%A这样并非TC内禀的变量--如果直接在某个button的参数中输入%A, 并从TC运行, 则会出错, 但通过TCMenu调用时, %A被替换为自定义的%p%n

三. TCMenu 特殊参数
i. 特殊参数-$
参数-$表示使用小图标显示弹出菜单. TCMenu默认使用大图标.
比如: TCMenu.exe sample.bar -A %p%n -$

ii. 特殊参数?
<Parameter String>中插入"?"能提供用户自定义Button参数的途径, 比如, 对于-A %p%n?Hello这样一个<Parameter String>, 点击弹出菜单中任意一个参数中包括%A的按钮时, 会有一个输入框弹出, 默认内容为?前的内容, ?后的内容作为该对话框的提示内容
比如:
参数 ..\..\..\my\dropdown\editors.bar -p %p -n %o.%e?Hello -$
对应的弹出窗口为:

按作者的说法, 如果需要使用带空格的提示内容, 则需要用引号将之括起. 不过我发觉行不通, 有兴趣的可以把上面的Hello改为"Hello World" (带引号)试试.
另外, 提示内容也不能是中文

四. 环境变量与TCMenu特殊变量
i. 向TCMenu.exe 传递的参数1 以及 经由TCMenu调用的Toolbar的Button的param<i>=部分2 (让我喘口气先^^)中可以有环境变量, 但要用两个%%括起(而不是一般的单个%), 比如:
-x %%windir%% 表示将所有的%x转换为系统的%windir%变量(即windows的目录)
特别地, 如果环境变量本身在展开后带空格, 那么还需要用引号"将它括起 (而事实是在我机器上, 这个功能和前面的带空格提示一样不能用)
而经由TCMenu调用的Toolbar的Button的cmd<i>=部分中的环境变量只需用一个%括起(就与一般的toolbar定义无异)

ii. TCMenu的内禀时间变量:
%0 - hours
%1 - minutes
%2 - seconds
%3 - day of month
%4 - month
%5 - year
%6 - day of week
%7 - month name
比如, 今天运行:
cmd.exe /c md c:\Backup_%3-%7-%5
将在C的根目录下建立Backup_24-03-04这样的目录
当然, 这个命令所在的toolbar必须由TCMenu调用, 否则这些变量不起作用
Posted: 2004-03-24 19:14 | [楼 主]
帖子浏览记录 版块浏览记录
狗狗静电BBS - wwW.DoGGiEhoMe.CoM » 电脑全方位 Computer Guide

沪ICP备05008186号
Powered by PHPWind Styled by MagiColor