如何为一文件定义启动它的程序?(100分)

  • 主题发起人 主题发起人 9861
  • 开始时间 开始时间
9

9861

Unregistered / Unconfirmed
GUEST, unregistred user!
如双击*.jpg的文件就用自动用ACD调用.
 
这个东东只要修改注册表就ok了。具体是什么键忘了,你找一下资料。
应该在HEY_CLASSES_ROOT下。
 
老兄,我也知道改注册表.我就是要知道改哪个值.
 
你这又是何必呢?你可以自几做图片流览器吗!
 
way1.开始-》设置-》文件夹选项-》第三个Tab页-》添加打开方式
way2.右键同时按shift选择打开方式...选择acdsee,打上底下的checkbox
 
设定应用程序关联

文件的应用程序关联储存在Windows的注册表中。要获取此信息我们先要找回文件扩展名所在处的“Class”。这些信息可在此获得:

HKEY_CLASSES_ROOT/.ext/(default)

这里的".ext"就是你想找的文件的扩展名(如".txt", ".bmp"等)。接着我们可获取打开该类文件的命令行,可在此下获得有关数据:

HKEY_CLASSES_ROOT/class/Shell/Open/Command/(default)

"class"是按扩展名分类的文件分类,该字符串常以以下格式书写

"D:/PATH/APPNAME.EXT" "%1" -OPTIONS

%1即表示用指定应用程序打开文档,所以我们应该找到此字符串的位置并改成我们想替换成的文件名。

例子:
-------

这个函数将返回打开某个文档关联的命令行:

function GetAssociation(const DocFileName: string): string;
var
FileClass: string;
Reg: TRegistry;
begin
Result := '';
Reg := TRegistry.Create(KEY_EXECUTE);
Reg.RootKey := HKEY_CLASSES_ROOT;
FileClass := '';
if Reg.OpenKeyReadOnly(ExtractFileExt(DocFileName)) then
begin
FileClass := Reg.ReadString('');
Reg.CloseKey;
end;
if FileClass <> '' then begin
if Reg.OpenKeyReadOnly(FileClass + '/Shell/Open/Command') then
begin
Result := Reg.ReadString('');
Reg.CloseKey;
end;
end;
Reg.Free;
end;


 
问一句:如果要关联自己软件,双击文件已经启动本软件,但怎样实现打开的命令?
比如说一mp3关联了播放器软件,怎样在打开后自动播放呢?
有答对者我给他单独加分!至少100
[:)]
 
to:kingdeezj
好像不行.我这是win2000的注册表.
 
to D影子D,9861:
对不起哈,刚才忙没有经过测试就贴上来了,下面的代码能根据文件的关联自动启动相应
程序:
if OpenDialog1.Execute then
ShellExecute(0,'open', PChar(OpenDialog1.FileName), nil,nil, SW_Show)
 
to:kingdeezj
这我知道.
我的意思是把文件关联到我新做的程序上.
打开方式的列表中我现在可以用注册表添进去了,我想知道然后文件如何与它关联.
就是说白了,文件的外形由不可执行变成可执行了.
 
ok ,try first.
 
to :D影子D
Delphi有一个paramstr参数.

paramstr(0)可以知道调用程序名
而paramstr(1)则是得到双击的文件路径.
如 在窗体的Create中写入:
edit1.text := paramstr(1);
然后就可以执行了.
给我分吧.
 
接受答案了.
 
后退
顶部