请教文件关联与打开[大侠快快来](120分)

  • 主题发起人 主题发起人 laohe
  • 开始时间 开始时间
L

laohe

Unregistered / Unconfirmed
GUEST, unregistred user!
我用下面这段代码,实现文件关联,使.me的文件能打开我自己的软件
但打开后,怎么样才能让文件在使用的控件中执行,例如: .me是一个图像文件,我想在我软件的中,mypaly控件中察看


procedure TForm1.Button1Click(Sender: TObject);
var
lphKey: HKEY;
sKeyName: string;
sKeyValue: string;
begin
sKeyName := 'ReadMeFile';
sKeyValue := '说明文档';
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0);
sKeyName := '.me';
sKeyValue := 'ReadMeFile';
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0);
sKeyName := 'ReadMeFile';
sKeyValue := 'c:/myexe'; //我的软件程序
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, 'shell/open/command', REG_SZ,
pchar(sKeyValue), MAX_PATH);
end;

 
我觉得如果希望在程序外部通过关联程序自动打开文件(如:*.me)
在你的关联程序注册时,这句需要更改
 sKeyValue := 'c:/myexe'; //我的软件程序
更改为
 sKeyValue := 'c:/myexe %1'; //我的软件程序
然后你的程序还要求在程序启动后的适当地方判断命令行参数,如
(首先申明:我不会Delphi,我用C++ Builder)
procedure TForm1.Button1Click(Sender: TObject);
var
sFileName: string;
begin
sFileName := ParamStr(1);
if sFileName = '' then
...//正常运行程序,如双击你的程序
 else
if sFileName 是后缀为'.me'的文件 then
把sFileName通过特定的控件或过程或函数进行载入处理
else
出错了
end;
 
这个怎么没有办法改变图标呢,.ME的图标设为自己软件的指定图标

procedure TForm1.Button1Click(Sender: TObject);
var
lphKey: HKEY;
sKeyName: string;
sKeyValue: string;
begin
sKeyName := 'ReadMeFile';
sKeyValue := '说明文档';
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0);
sKeyName := '.me';
sKeyValue := 'ReadMeFile';
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0);
sKeyName := 'ReadMeFile';
sKeyValue := 'c:/myexe'; //我的软件程序
RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, 'shell/open/command', REG_SZ,
pchar(sKeyValue), MAX_PATH);
end;
 
多人接受答案了。
 
后退
顶部