DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: sy1012
今日帖子: 0
在线用户: 1
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ganbing (干冰) ★☆☆☆☆ -
盒子活跃会员
2003/12/13 11:55:14
标题:
如何注册一个自己的clsid号,让windows中带指定后缀的文件显示自己指定的图标? 浏览:2160
加入我的收藏
楼主: 如何注册一个自己的clsid号,让windows中带指定后缀的文件(如.abc)显示自己指定的图标?
----------------------------------------------
尽情舒展,是一种向往,想去的地方、想拥有的感受,尽管追求!
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/12/13 12:07:52
1楼: 偶当时做的是否没有考虑这个:

 但 却可以实现 图标显示 与 文件关联!
编程实现文件关联 
---- 文件关联的目的是要实现某种扩展名的文件由相应的应用程序来打开,对于编写的应用软件来说,由于一般都有设计者特定的扩展名的数据文件,软件编制者应在程序中实现自动关联而不能由用户手工去实现。下面给出实现文件关联的实用程序。 

---- 实现文件关联的核心是对注册表的操作, 所有的文件关联都在HKEY—CLASSES— ROOT 下面, 要实现文件关联必须在HKEY—CLASSES—ROOT 中增加两个键值,一是和文件扩展名对应的类型说明,二是对这种类型文件的操作所需要执行的应用程序。下面举例说明,本例实现将扩展名为.xyz的文件定义为“我自己的文件”类型,双击此种类型的文件时执行的打开功能使用记事簿程序。 实现这一功能需要用到Delphi中的函数 RegCreateKey、RegSetValue。实现如下: 

---- 在窗体中放置一个按钮,双击按钮写如下代码: 

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,然后双击它看是否是启动记事簿来打开的。
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/12/13 12:10:11
2楼: 看看acdsee是 这么做的 不过 偶也不知道clsid的用处:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ACDSee.bmp]
@="ACDSee BMP 图像"

[HKEY_CLASSES_ROOT\ACDSee.bmp\CLSID]
@="{D3E34B21-9D75-101A-8C3D-00AA001A1652}"

[HKEY_CLASSES_ROOT\ACDSee.bmp\DefaultIcon]
@="C:\\Program Files\\ACD Systems\\PlugIns\\IDE_ACDStd.apl,1"

[HKEY_CLASSES_ROOT\ACDSee.bmp\Insertable]
@=""

[HKEY_CLASSES_ROOT\ACDSee.bmp\protocol]
@=""

[HKEY_CLASSES_ROOT\ACDSee.bmp\protocol\StdFileEditing]
@=""

[HKEY_CLASSES_ROOT\ACDSee.bmp\protocol\StdFileEditing\server]
@="mspaint.exe"

[HKEY_CLASSES_ROOT\ACDSee.bmp\protocol\StdFileEditing\verb]
@=""

[HKEY_CLASSES_ROOT\ACDSee.bmp\protocol\StdFileEditing\verb\0]
@="编辑(&E)"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell]
@="Open"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\ACDPrint]
@="用 ACDSee 打印"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\ACDPrint\command]
@="\"D:\\Program Files\\ACD Systems\\ACDSee\\5.0\\ACDSee5.exe\" /p \"%1\""

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\Edit]
@=""

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\Edit\command]
@="mspaint.exe %1"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\Open]
@="用 ACDSee 打开"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\Open\command]
@="\"D:\\Program Files\\ACD Systems\\ACDSee\\5.0\\ACDSee5.exe\" \"%1\""

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\Open\ddeexec]
@="[open(\"%1\")]"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\Open\ddeexec\application]
@="ACDSee"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\Open\ddeexec\ifexec]
@=""

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\Open\ddeexec\topic]
@="System"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\print]
@=""

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\print\command]
@="mspaint.exe /p %1"

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\printto]
@=""

[HKEY_CLASSES_ROOT\ACDSee.bmp\shell\printto\command]
@="mspaint.exe /pt %1 %2 %3 %4"


----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 ganbing (干冰) ★☆☆☆☆ -
盒子活跃会员
2003/12/13 14:35:15
3楼: 有空找找关于clsid的资料和高手,一起学习
----------------------------------------------
尽情舒展,是一种向往,想去的地方、想拥有的感受,尽管追求!
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/12/13 17:41:53
4楼: clsid的用途有不同地方 对于IE工具栏扩展的CLSID可以固定不变的!
所以没有 固定的说法!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 ganbing (干冰) ★☆☆☆☆ -
盒子活跃会员
2003/12/13 20:42:24
5楼: 系统中文件图标不是由clsid决定的吗,那应该能够注册新的编号啊,如何实现?
----------------------------------------------
尽情舒展,是一种向往,想去的地方、想拥有的感受,尽管追求!
作者:
男 ganbing (干冰) ★☆☆☆☆ -
盒子活跃会员
2003/12/13 21:35:19
6楼: 我觉得begin后的四句可以删除
----------------------------------------------
尽情舒展,是一种向往,想去的地方、想拥有的感受,尽管追求!
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/12/13 21:46:27
7楼: 偶是试过文件 不需要CLSID 偶也不知道到底有何意义!不信你可以试试!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 ganbing (干冰) ★☆☆☆☆ -
盒子活跃会员
2003/12/13 22:13:32
8楼: 试过了,ok

考虑一下,要是我建一个文件夹,要求显示的图标是自己定义的,那是不是就该注册一个图标,让带某种后缀的文件关联上,

对了,文件夹不是采用后缀方式识别的吧,那系统如何区分文件夹和文件呢
----------------------------------------------
尽情舒展,是一种向往,想去的地方、想拥有的感受,尽管追求!
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/12/14 10:04:36
9楼: 文件 夹 就真的不好做了!
  
  因为 偶确实不知道 CLSID要 怎么使用! 这个问题偶看 懂的人也不多!

   因为象《瑞星杀毒》的文件夹 就是个性化的 不过不知道他的原理!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 wpdelphi (月月鸟) ★☆☆☆☆ -
普通会员
2003/12/14 13:35:58
10楼: 可以在一个目录之下新建一个Desktop.ini文件,将其设为只读,系统,隐藏.

然后编辑如下内容:

[Shell.Classinfo]
Info=这是我的文件夹
Icon_File=C:\WinNT\Notepad.exe
Icon_Index=0

保存即可成功.如果你有更好的办法,请劳烦告知我一声.我的Email:

weipvb@tom.com

在此先谢

----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/12/14 14:56:44
11楼: 不错大哥 向你学习 谢谢!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 ganbing (干冰) ★☆☆☆☆ -
盒子活跃会员
2003/12/19 21:26:37
12楼: 谢了,好好学习
----------------------------------------------
尽情舒展,是一种向往,想去的地方、想拥有的感受,尽管追求!
作者:
男 ganbing (干冰) ★☆☆☆☆ -
盒子活跃会员
2003/12/29 16:11:08
13楼: 写com组件可以做到,可以学习外壳扩展编程
----------------------------------------------
尽情舒展,是一种向往,想去的地方、想拥有的感受,尽管追求!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS