"%1"(20分)

  • 主题发起人 主题发起人 张无极
  • 开始时间 开始时间

张无极

Unregistered / Unconfirmed
GUEST, unregistred user!
请教一下,
regf.WriteString( '', application.ExeName+' "%1" ');这句语句中的"%1"是什么意思啊?
谢谢了!
 
参数,自己是%0,第一个是%1,第二个是%2,与dos的.bat是一样的。
 
应用程序接受带参数启动
比如 notepad.exe "c:/boot.ini"
就是打开记事本并装入c:/boot.ini文件
这样写入注册表应该是关联文件,可以在资源管理器中双击某类文件自动打开
 
影子大哥,那上面的那句程序是什么意思啊,还是有点不明白耶!
 
ysai大侠真是高手,确实是关联文件,只是小弟愚笨,一时不能弄懂这个语句
 
谁能告诉我一下这句语句是什么意思?
 
to ysai;
我是懂得这句话的意思,只是还是' "%1" 参数那一块不懂,这个参数代表
了什么啊?
 
唉....
张无极啊,张无极,有你这么说话的吗?
你这样夸 ysai 大侠,却偏偏忘了 影 子 大侠,搞得没人理你了吧。
其实两位大侠说得都对,谁会知道你居然这么菜,连正确和错误都分
不出。
这个 %1 的流行叫法是“可替换参数”。也就是说,一会儿可以代表 X ,
一会儿又去代表 Y 。你的问题中,这个 %1 一般表示一个文档名字。
好了。除我之外,上面各位大侠每人给 5 分。
 
to ysai大侠:
ysai大侠和一位高人在一篇文章中讲的一样,这个我都明白的,问题的实质是俺想详细了解一下
这种形式参数的用法,比如说它为什么代表了记事本呢而不是其他的word或其他的excel等程序呢?
还请大侠不吝赐教!!!!谢谢!!!!
 
各位大侠,小弟实在愚笨,能不能指点一下,网上哪有介绍这种"可替换参数"用法的资料,
感激不尽!!!
 
Windows 发行之初就有所谓文件关联,就是说,你不需要具体地打开某个程序,只要双击
一个和这个程序关联的文档,就可以让这个程序启动来打开这个文档。象 *.txt 一般都
关联到 notepad.exe 这个程序,你双击任意一个 *.txt 的文件,就会启动 notepad.exe。
这样的关联是可以人为设定的,随着 Windows 的升级,设定数据保存到了注册表中,请看:
[HKEY_CLASSES_ROOT/.txt] <-------- .txt 为后缀的文件
@="txtfile" <-------- 是 txtfile

[HKEY_CLASSES_ROOT/txtfile] <-------- 是 txtfile 文件
@="文本文档"
[HKEY_CLASSES_ROOT/txtfile/shell/open/command]
@=c:/windows/system32/NOTEPAD.EXE %1 <--- 使用这个命令打开 (关联)

这是从注册表里的不同部分选出来的相关内容。可能你还是看不明白,
但你会注意到 @=c:/windows/system32/NOTEPAD.EXE %1 这一句的。
 
假如你在注册表中找到了 @=c:/windows/system32/NOTEPAD.EXE %1 这一句,并把它改为
@=c:/Progra~1/Micros~1/Office/word.exe %1 会怎样呢。
对了,所有 .txt 文件都会用 word.exe 来打开了。
而那个 %1 ,并不表示 word.exe 也不表示 notepad.exe 而是代表需要打开的
某个 txt 文件。
 
这样,假如我需要用程序写这个注册表的这个数据,怎么办呢。
于是,我们可以:
regf.RootKey := HKEY_CLASSES_ROOT;
regf.OpenKey('txtfile/shell/open/command',false);
regf.WriteString('', 'c:/Progra~1/Micros~1/Office/word.exe'+' "%1"'); // win98 写法
// or 注意看 ' "%1"' 中间有空格
regf.WriteString('', 'c:/Progra~1/Micros~1/Office/word.exe'+' %1'); // nt 写法
这样就把 notepad.exe 改为了 word.exe 。
这下看得懂了吧。以上代码和说明,你看得懂的部分,都是我呕心沥血写的,你看不懂的或
者有错误的,肯定不是我写的,我也不知道是谁写的。
 
若我把@=c:/Progra~1/Micros~1/Office/word.exe %1 改为
@=c:/Progra~1/Micros~1/Office/word.exe %2会有怎么样的结果啊?
 
没什么结果。%1 是系统设定的。如果你只双击了一个文件,系统就把 %1 替换为文件
名字。如果你选中了一批文件(多选),系统就 %1,%2,%3...这样地把文件代进去。但每
次只替换一个。这是系统做的工作,我们执行规定操作就是了。
 
也就是说,你的一批文件,系统执行后将它翻译为:
%1=a.txt
%2=b.txt
%3=c.txt
.
.
.
让 word.exe 打开时,系统会这样替换:
%1 = a.txt = %1 ---> word.exe a.txt
%2 = b.txt = %1 ---> word.exe b.txt
.
.
.
这样,系统里有 %1,%2,%3 ... 这样来记录一系列的文件,以便于系统进行增量操作,
但递送给应用程序时,系统自动将文件回转为应用程序需要的 %1 的样子。
 
重申:
以上代码和说明,你看得懂的部分,都是我呕心沥血写的,你看不懂的或
者有错误的,肯定不是我写的,我也不知道是谁写的。
 
有点明白了,谢谢罗西岛主!!!谢谢ysai!!!
 
后退
顶部