社区
Delphi
帖子详情
文件关联是如何实现的?
airhand
2003-08-30 05:28:21
我自己写了个应用程序,可以打开自己定义的文件格式,现在在实现一般的文件关联后,我想知道如何将我双击的文件名作为参数传递给我的程序并让它打开文件?就象双击DOC文件会启动WORD并打开文件一样.请高手指点!
...全文
40
15
打赏
收藏
文件关联是如何实现的?
我自己写了个应用程序,可以打开自己定义的文件格式,现在在实现一般的文件关联后,我想知道如何将我双击的文件名作为参数传递给我的程序并让它打开文件?就象双击DOC文件会启动WORD并打开文件一样.请高手指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
airhand
2003-10-20
打赏
举报
回复
这个帖子发出很久了,一直没有得到答案,各位帮帮忙!
我自己写的AAA.EXE关联扩展名为.abc的文件后,双击.abc文件后应该打开我的AAA.EXE,请问如果AAA.EXE文件中有一个EDIT控件,如何能在启动后就在EDIT控件里面显示双击的文件名路径?
这涉及到带参数的EXE文件如何处理的问题,我不知道如何实现。
多写各位!100分送上!
airhand
2003-10-20
打赏
举报
回复
TO:kuangning(郎之间)
我试试看,非常感谢,好用送分!
kuangning
2003-10-20
打赏
举报
回复
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.edit1.Text := ParamStr(1);
Application.Run;
end.
airhand
2003-10-20
打赏
举报
回复
如何能在启动后就在EDIT控件里面显示双击的文件名路径?
dickeybird888
2003-10-20
打赏
举报
回复
文件类型的关联在Windows 95以后都是通过注册表来实现的,所以只能从写注册表入手。
注册表设置完毕后并不能立刻生效,需要调用API函数SHChangeNotify通知系统本应用程序已经执行,需要系统更新Shell。
procedure RegisterFileType(cMyExt,cMyFileType,cMyDescription,ExeName:string;
IcoIndex:integer;
DoUpdate:boolean=false);
var
Reg: TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_CLASSES_ROOT;
Reg.OpenKey(cMyExt, True);
//写入自定义文件后缀
Reg.WriteString('', cMyFileType);
Reg.CloseKey;
//写入自定义的文件类型
//格式为:HKEY_CLASSES_ROOT\cMyExt\(Default) = 'cMyFileType'
//下面为该文件类型创建关联
Reg.OpenKey(cMyFileType, True);
Reg.WriteString('', cMyDescription);
//写入文件类型的描述信息
Reg.CloseKey;
// 下面为自定义文件类型选择图标
// 加入键格式为 HKEY_CLASSES_ROOT\cMyFileType\DefaultIcon
// \(Default) = 'Application Dir\Project1.exe,0'
Reg.OpenKey(cMyFileType + '\DefaultIcon', True);
Reg.WriteString('', ExeName + ',' + IntToStr(IcoIndex));
Reg.CloseKey;
// 下面注册在资源管理器中打开文件的程序
Reg.OpenKey(cMyFileType + '\Shell\Open', True);
Reg.WriteString('', '&Open');
Reg.CloseKey;
// 格式:HKEY_CLASSES_ROOT\Project1.FileType\Shell\Open\Command
// (Default) = '"Application Dir\Project1.exe" "%1"'
Reg.OpenKey(cMyFileType + '\Shell\Open\Command', True);
Reg.WriteString('', '"' + ExeName + '" "%1"');
Reg.CloseKey;
//最后,让资源管理器实现我们加入的文件类型,只需调用SHChangeNotify即可
if DoUpdate then SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
finally
Reg.Free;
end;
end;
dickeybird888
2003-10-20
打赏
举报
回复
(·¥·)
airhand
2003-09-07
打赏
举报
回复
ParamStr(1)在哪里获得并处理?
RamjetZhang
2003-09-01
打赏
举报
回复
楼上of楼上:这样好象还没有图标
kuangning
2003-09-01
打赏
举报
回复
楼上说得建立关联是对的,然后你的程序中处理就是了ParamStr(1)就是双击的文件名称
lxpbuaa
2003-09-01
打赏
举报
回复
procedure SetFileOpener(FileKind, FileDescription, FileExt, OpenerPath: String);
如 //SetFileOpener('xyz文件', 'xyz文件类型', '.xyz', 'd:\winnt\NOTEPAD.EXE');
var
lphKey: HKEY;
begin
RegCreateKey(HKEY_CLASSES_ROOT, PChar(FileKind), lphKey);
RegSetValue(lphKey, '', REG_SZ, PChar(FileDescription), Length(FileDescription));
RegCreateKey(HKEY_CLASSES_ROOT, PChar(FileKind), lphKey);
RegSetValue(lphKey, 'shell\open\command', REG_SZ, PChar(OpenerPath), Length(OpenerPath));
RegCreateKey(HKEY_CLASSES_ROOT, PChar(FileExt), lphKey);
RegSetValue(lphKey, '', REG_SZ, PChar(FileKind), Length(FileKind));
end;
————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
airhand
2003-09-01
打赏
举报
回复
没人会吗?
airhand
2003-08-31
打赏
举报
回复
我不是和记事本连接,我是和自己的程序关联并打开!
这个例子我早就看过了!请看清题意!
76liujing
2003-08-30
打赏
举报
回复
在窗体中放置一个按钮,双击按钮写如下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
lphKey: HKEY;
sKeyName: string;
sKeyValue: string;
begin
sKeyName := 'myfile';
sKeyValue := '我的文档';
RegCreateKey(HKEY—CLASSES—ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, '', REG—SZ, pchar(sKeyValue), 0);
sKeyName := '.xyz';
sKeyValue := 'myfile';
RegCreateKey(HKEY—CLASSES—ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, '', REG—SZ, pchar(sKeyValue), 0);
sKeyName := 'myfile';
sKeyValue := 'c:\Windows\NotePad.exe %1';
RegCreateKey(HKEY—CLASSES—ROOT, pchar(sKeyName), lphKey);
RegSetValue(lphKey, 'shell\open\command', REG—SZ, pchar(sKeyValue), MAX—PATH);
end;
建立一新文件,使其扩展名为.xyz,然后双击它看是否是启动记事簿来打开的。
hzw008
2003-08-30
打赏
举报
回复
在注册表加入要关联的信息。
nyf1220
2003-08-30
打赏
举报
回复
是不是在run底下的parameter底下进行设置参数?
手把手教你
实现
自己的数据库
文件
索引(附源码)
本课程主要实战讲解如何用B-tree去设计
实现
自己的索引管理服务,如何设计索引、初始化索引至
文件
、生成索引、读取索引、
关联
数据等,同时还可以由浅入深的复习一遍B-tree数据结构并加深印象(因为大部分时间大家都是...
用程序
实现
文件
的
关联
文件
关联
在程序设计中有着重要的作用,它的目的是要
实现
某种扩展名的
文件
由相应的应用程序来打开,有许多的软件,特别试那些媒体播放软件,大都
实现
了
文件
的
关联
,可以想象,一个与
文件
相关的软件连
文件
关联
就没有...
如何为你的 Windows 应用程序
关联
一种或多种
文件
类型
对于 Windows 桌面应用来说,让应用
关联
一种或多种
文件
类型是通过修改注册表来
实现
的。 本文介绍如何为你的应用
关联
自定义...Windows 上的
文件
关联
是通过
文件
的扩展名来
实现
的。有些
文件
类型是被广泛使用的公共类型...
Windows EXE
文件
关联
文件
关联
,是为了在Windows中
实现
方便的操作,将某一类数据
文件
与一个相关的程序建立联系,当用鼠标双击这类数据
文件
时,Windows操作系统就自动启动
关联
的程序,打开这个数据
文件
供操作者处理。例如,通用的ASCII...
VC++
实现
文件
关联
文件
关联
就是将一种类型的
文件
与一个可以打开它的程序建立起一种依存关系。举个例子来说,位图
文件
(BMP
文件
)在Windows中的默认
关联
程序是“画图”,如果将其默认
关联
改为用ACDSee程序来打开,那么ACDSee就成了它的...
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章