Delphi 7使用自定义图标关联文件类型
2011-05-24 19:01
549 查看
在开发过程中,我们经常需要属于自己的文件类型,自定义的后缀名不仅可以防止用户双击直接改动其中的内容,还可以根据后缀名形象的表示此文件代表的含义。在Delphi 7中要实现关联文件图标、关联文件打开,并且关联的图标可以自己指定,而仅非只能使用应用程序的标题图标。
1.新建一个应用程序工程,准备两个ICO图标,其中一个作为应用程序的图标,另一个作为文件关联显示的图标;
![](http://hi.csdn.net/attachment/201105/24/0_1306234518kE9E.gif)
2.在工程目录下新建一个“MyIco.rc”文件(可参考《Delphi 7资源文件的使用》),写入以下内容:
在菜单栏→“Project”→“Add to project...”,将此.rc文件加入工程中;
3.为应用程序设置图标和标题,菜单栏→“Project”→“Options”→”Application“,加载"LetterA.ico";
![](http://hi.csdn.net/attachment/201105/24/0_13062345436E5H.gif)
4.在窗体上放置两个按钮,单元文件全部代码如下:
5. 编译运行程序。点击“关联”按钮,然后Win+R,输入“regedit”,打开注册表编辑器,定位到“HKEY_CLASSES_ROOT/.who”,可看到右边有个默认项,其数据指向“WhoFile”,然后再定位到“HKEY_CLASSES_ROOT/WhoFile”,可以看到已经为此类型文件绑定了图标和文件打开方式。如下图所示:
![](http://hi.csdn.net/attachment/201105/24/0_1306234566wedU.gif)
6.在任意地方新建一个文本文档,改其全部名称为“test.who”,可以看到图标已经变化,双击此文件,效果如下图所示:
![](http://hi.csdn.net/attachment/201105/24/0_1306234580ADaY.gif)
![](http://hi.csdn.net/attachment/201105/24/0_13062348125d35.gif)
7.另外,也可以通过应用程序的快捷方式查看程序所带的所有图标,右键“Project1.exe”,选择“创建快捷方式”,右键此快捷方式,选择“属性”,点击“更改图标”,可以看到如下图所示:
1.新建一个应用程序工程,准备两个ICO图标,其中一个作为应用程序的图标,另一个作为文件关联显示的图标;
![](http://hi.csdn.net/attachment/201105/24/0_1306234518kE9E.gif)
2.在工程目录下新建一个“MyIco.rc”文件(可参考《Delphi 7资源文件的使用》),写入以下内容:
myIco ICON "LetterB.ico" |
3.为应用程序设置图标和标题,菜单栏→“Project”→“Options”→”Application“,加载"LetterA.ico";
![](http://hi.csdn.net/attachment/201105/24/0_13062345436E5H.gif)
4.在窗体上放置两个按钮,单元文件全部代码如下:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) btn1: TButton; btn2: TButton; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses Registry, ShlObj; {------------------------------------------------------------------------------- Description: 窗体创建函数 -------------------------------------------------------------------------------} procedure TForm1.FormCreate(Sender: TObject); begin if ParamCount > 0 then //当启动参数大于0时,则是双击关联文件启动 ShowMessage(ParamStr(1)); //显示双击的文件全称 end; {------------------------------------------------------------------------------- Description: 关联文件类型 -------------------------------------------------------------------------------} procedure TForm1.btn1Click(Sender: TObject); var reg: TRegistry; begin reg := TRegistry.Create; try reg.RootKey := HKEY_CLASSES_ROOT; {假定要关联的文件类型为.who,指定入口项为WhoFile} reg.OpenKey('.who',True); reg.WriteString('','WhoFile'); reg.CloseKey; {文件打开关联} reg.OpenKey('WhoFile/shell/open/command',True); reg.WriteString('','"' + ParamStr(0) + '" "%1"'); //带本身路径作为启动参数 reg.CloseKey; {文件图标关联} reg.OpenKey('WhoFile/DefaultIcon',True); reg.WriteString('','"' + ParamStr(0) + '",1'); //为0则为LetterA.ico图标,为1为LetterB.ico reg.CloseKey; finally reg.Free; end; SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil); //刷新显示 end; {------------------------------------------------------------------------------- Description: 撤销关联文件类型 -------------------------------------------------------------------------------} procedure TForm1.btn2Click(Sender: TObject); var reg: TRegistry; begin reg := TRegistry.Create; try reg.RootKey := HKEY_CLASSES_ROOT; reg.DeleteKey('.Who'); reg.DeleteKey('WhoFile'); finally reg.Free; end; SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil); end; end. |
![](http://hi.csdn.net/attachment/201105/24/0_1306234566wedU.gif)
6.在任意地方新建一个文本文档,改其全部名称为“test.who”,可以看到图标已经变化,双击此文件,效果如下图所示:
![](http://hi.csdn.net/attachment/201105/24/0_1306234580ADaY.gif)
![](http://hi.csdn.net/attachment/201105/24/0_13062348125d35.gif)
7.另外,也可以通过应用程序的快捷方式查看程序所带的所有图标,右键“Project1.exe”,选择“创建快捷方式”,右键此快捷方式,选择“属性”,点击“更改图标”,可以看到如下图所示:
![](http://hi.csdn.net/attachment/201105/24/0_1306234599iIjP.gif)
相关文章推荐
- Delphi 7使用自定义图标关联文件类型
- Delphi 7使用自定义图标关联文件类型
- Android 自定义类型文件与程序关联
- 使用API获取Windows系统的文件关联图标
- Mac OS使用技巧之十四:自定义文件图标
- C#获取文件(磁盘驱动器)的关联图标(使用API SHGetFileInfo)
- 重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议
- 如何创建自定义的文件类型关联
- eclipse插件开发:把自定义的文件类型使用xml编辑器打开
- 使用C#自动注册自定义文件类型
- Delphi : Opendialog 文件过滤类型,文件多选, 使用多文件
- 使用 TRegistry 类[4]: 文件打开与文件图标的关联
- Delphi XE5开发Android程序使用自定义字体文件.
- 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议
- 使用API获取Windows系统的文件关联图标
- 使用VC取得文件关联图标的方法
- 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议
- 如何创建自定义的文件类型关联
- Android - 使用字体文件,自定义View代替图标
- 如何创建自定义的文件类型关联