Delphi 7使用自定义图标关联文件类型

5.2 Delphi编程(40) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

在开发过程中,我们经常需要属于自己的文件类型,自定义的后缀名不仅可以防止用户双击直接改动其中的内容,还可以根据后缀名形象的表示此文件代表的含义。在Delphi 7中要实现关联文件图标、关联文件打开,并且关联的图标可以自己指定,而仅非只能使用应用程序的标题图标。
1.新建一个应用程序工程,准备两个ICO图标,其中一个作为应用程序的图标,另一个作为文件关联显示的图标;

2.在工程目录下新建一个“MyIco.rc”文件(可参考《Delphi 7资源文件的使用》),写入以下内容:

myIco ICON "LetterB.ico"

在菜单栏→“Project”→“Add to project...”,将此.rc文件加入工程中;
3.为应用程序设置图标和标题,菜单栏→“Project”→“Options”→”Application“,加载"LetterA.ico";

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 
   时,则是双击关联文件启动 
    ShowMessage(ParamStr());      //显示双击的文件全称 
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() + '" "%1"');  //带本身路径作为启动参数 
    reg.CloseKey; 
 
    {文件图标关联} 
    reg.OpenKey('WhoFile/DefaultIcon',True); 
    reg.WriteString('','"'
+ ParamStr() + 则为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.

5. 编译运行程序。点击“关联”按钮,然后Win+R,输入“regedit”,打开注册表编辑器,定位到“HKEY_CLASSES_ROOT/.who”,可看到右边有个默认项,其数据指向“WhoFile”,然后再定位到“HKEY_CLASSES_ROOT/WhoFile”,可以看到已经为此类型文件绑定了图标和文件打开方式。如下图所示:

6.在任意地方新建一个文本文档,改其全部名称为“test.who”,可以看到图标已经变化,双击此文件,效果如下图所示:

7.另外,也可以通过应用程序的快捷方式查看程序所带的所有图标,右键“Project1.exe”,选择“创建快捷方式”,右键此快捷方式,选择“属性”,点击“更改图标”,可以看到如下图所示:

2011-05-24 19:01 3361人阅读 评论(1) 收藏 举报
 分类:
5.2 Delphi编程(40) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

在开发过程中,我们经常需要属于自己的文件类型,自定义的后缀名不仅可以防止用户双击直接改动其中的内容,还可以根据后缀名形象的表示此文件代表的含义。在Delphi 7中要实现关联文件图标、关联文件打开,并且关联的图标可以自己指定,而仅非只能使用应用程序的标题图标。
1.新建一个应用程序工程,准备两个ICO图标,其中一个作为应用程序的图标,另一个作为文件关联显示的图标;

2.在工程目录下新建一个“MyIco.rc”文件(可参考《Delphi 7资源文件的使用》),写入以下内容:

myIco ICON "LetterB.ico"  

在菜单栏→“Project”→“Add to project...”,将此.rc文件加入工程中;
3.为应用程序设置图标和标题,菜单栏→“Project”→“Options”→”Application“,加载"LetterA.ico";

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
   ));      ) + ) + '",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. 

5. 编译运行程序。点击“关联”按钮,然后Win+R,输入“regedit”,打开注册表编辑器,定位到“HKEY_CLASSES_ROOT/.who”,可看到右边有个默认项,其数据指向“WhoFile”,然后再定位到“HKEY_CLASSES_ROOT/WhoFile”,可以看到已经为此类型文件绑定了图标和文件打开方式。如下图所示:

6.在任意地方新建一个文本文档,改其全部名称为“test.who”,可以看到图标已经变化,双击此文件,效果如下图所示:

7.另外,也可以通过应用程序的快捷方式查看程序所带的所有图标,右键“Project1.exe”,选择“创建快捷方式”,右键此快捷方式,选择“属性”,点击“更改图标”,可以看到如下图所示:

Delphi 7使用自定义图标关联文件类型的更多相关文章

  1. 实现1.双击自动关联文件类型打开 2.PC所有驱动器 3.小型资源管理器

    感谢各位这里实现:双击自动关联文件类型打开 2.PC所有驱动器 3.小型资源管理器!! 首先主页面: 2.运用DriveInfo驱动器的信息:获得整个系统磁盘驱动!!,运用frorach循环遍历到Tr ...

  2. 「案例」重新设计 Adobe 的文件类型图标

    Adobe 的品牌设计团队负责为公司旗下桌面端.移动端和 web 端的产品进行品牌设计.品牌元素的形式很多,可以是两个字母的产品 logo,应用启动界面,产品里的图标等等. 一个很常见却常被忽视的品牌 ...

  3. 在Delphi中使用系统对应文件类型的图标

    在应用程序的编写中,组合框(ComboBox).列表框(ListBox).等常见的部件,通常不仅要用于显示文字,而且还要显示其与文字相关的图标.在一般的Windows应用程序中,这些图标的显示都要随列 ...

  4. delphi 动态获取文件类型的图标

    delphi 动态获取文件类型的图标.txt我不奢望什么,只希望你以后的女人一个不如一个.真怀念小时候啊,天热的时候我也可以像男人一样光膀子!在应用程序的编写中,组合框(ComboBox).列表框(L ...

  5. Delphi 注册文件类型 设置文件图标

        {------------------------------------------------------------------------------- @过程名: slpert -& ...

  6. 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议

    [源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...

  7. 七、IntelliJ IDEA 常见文件类型的图标介绍

    咱们已经了解了很多关于 IntelliJ IDEA 的内容啦,例如,在 Windows 系统下安装 IntelliJ IDEA.运行 IntelliJ IDEA .创建 Java 项目以及修改 Int ...

  8. delphi中的各种文件类型介绍【转】

    1.DPR: Delphi Project文件,包含了Pascal代码.应用系统的工程文件2.PAS: Pascal文件,Pascal单元的源代码,可以是与窗体有关的单元或是独立的单元.3.DFM:D ...

  9. Delphi 文件类型

    该内容整理自以下链接 http://www.cnblogs.com/chenyunpeng/archive/2012/08/02/2620513.html 1.DPR: Delphi Project文 ...

随机推荐

  1. VCL设计方法概论(自己总结了9条),以及10个值得研究的控件 good

    VCL设计方法概论 1. 把Delphi对象改造成一个Windows窗口,主要是要设置Handle和回调函数.在创建一个Windows窗口后,将其句柄赋值给Delphi对象的属性,这个并不难,相当于从 ...

  2. Java:文件类File的详解

    File类的常用方法: 1.创建     boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.和输出流不一样,输出流对象一建立创建文件,而 ...

  3. Android 软键盘弹出时把布局顶上去,控件乱套解决方法

    解决办法:方法一:在你的activity中的oncreate中setContentView之前写上这个代码getWindow().setSoftInputMode(WindowManager.Layo ...

  4. Android BroadcastReceiver实时监听电量

    Android系统中实时的监听手机电量以及开机启动功能都是通过BroadcastReceiver组件实现的.我们可以动态注册这个类的一个实例通过 Context.registerReceiver()方 ...

  5. java 无法找到main类解决办法

    java   无法找到main类解决办法 如果Java类有包名,你必须建相应的包文件夹并把文件编译或拷贝到到相应的文件夹下: 如下: 1.源文件文件:          E:\test\src\tes ...

  6. javascript 中文数字阿拉伯数字转换类 Nzh

    之前工作中碰到了数字转中文的情景,网上找的现成方法或多或少不合我的口味,最后还是自已写了一个. 现在整理了一下,补充了繁体,自定义字符,以及反函数(中文数字转阿拉伯数字) 现在发布出来,希望能合大家的 ...

  7. Linux 添加环境变量和删除环境变量

    环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如PATH.在交叉编译中,会经常运用到环境变量的设置. 在linux中,查看当前全部的环境变量的命令式env. 当然也 ...

  8. gitlab的搭建和linux客户端的连接

    一.安装 1.新建 /etc/yum.repos.d/gitlab-ce.repo,添加以下内容 1 2 3 4 5 6 7 [gitlab-ce] name=gitlab-ce baseurl=ht ...

  9. BZOJ 1494 生成树计数(生成树计数-矩阵)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1494 题意: 思路: int SIZE; struct matrix { i64 a[N] ...

  10. [lintcode the-smallest-difference]最小差(python)

    题目链接:http://www.lintcode.com/zh-cn/problem/the-smallest-difference/ 给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 ...