| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1328 人关注过本帖
标题:[求助]请问如何让我的图片浏览器通过图片打开?
只看楼主 加入收藏
zyzdl
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-1-18
收藏
 问题点数:0 回复次数:4 
[求助]请问如何让我的图片浏览器通过图片打开?
我编写了一个图片浏览器,我希望他能通过图片打开且浏览器显示的是我打开的图片.并且我运行了我的图片浏览器 能让图片格式默认始终用我的程序打开?怎么实现啊 高手帮帮我,是不是要调用注册表?请详细一点偶是初学谢谢了/....拜托 拜托一定要回...
搜索更多相关主题的帖子: 浏览器 注册表 格式 
2006-01-18 21:08
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
[转载]如何在程序中实现关联指定的文件类型

这篇是BCB的文章,……我也没看。

  在日常使用电脑的过程中,我们只要双击文件夹中各种形象化的文件图标就可以直接启动相关联的软件来打开该文件(如Word文档),而不需要用户关心该用什么软件来打开此类文件。这样做不但方便了用户,同时也增加了软件的主动性及灵活性。

  软件的这种功能是如何实现的呢?接下来我就为大家介绍如何在Windows环境下为自己开发的软件增加这样的功能。“玩”过Windows注册表的朋友应该都会发现在注册表的HKEY_CLASSES_ROOT主键中有很多以“.”开头的子项(如.txt),而这些子项就是最关键的开始。下面我就以文本文件(*.txt)为例来进行说明。

  打开菜单“开始->运行...”,输入“regedit”来启动注册表编辑器。然后打开HKEY_CLASSES_ROOT主键找到“.txt”子项,点击后就可以在右边查看该项的有内容。在这里我们主要关心的是“(默认)”这一项,因为它的内容就是我们要找的下一个主键项。一般情况下该键值为“txtfile”,接下来继续在HKEY_CLASSES_ROOT主键中找到“txtfile”子项,双击打开该项后会出现多个子项,下面说明主要的子项的用途:

txtfile
- DefaultIcon(显示的文件图标)
- shell
- Open
- Command(用于打开该类型文件的程序路径)
- Print
- Command(用于打印该类型文件的程序路径)

  有了这些信息后,只要我们在软件中修改或建立这些相关的注册表项及键值就可以实现检测、修改(新增)各种文件类型的关联了。

下面是我编写的两个函数:
bool CheckFileRelation(AnsiString, AnsiString)
void RegisterFileRelation(AnsiString, AnsiString, AnsiString, AnsiString, AnsiString)

分别用于实现检测和修改(新增)文件关联的功能,源代码如下:

//---------------------------------------------------------------------------
// 检测文件关联情况
// ExeName: 要检测的扩展名(例如: ".txt")
// AppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")
// 返回true: 表示已关联,false: 表示未关联
bool __fastcall CheckFileRelation(AnsiString ExtName, AnsiString AppKey)
{
TRegistry *pReg = new TRegistry();

pReg->RootKey = HKEY_CLASSES_ROOT; // 打开主键

// 在检测到本程序不是默认的文件关联时,请用户确认该重新关联操作
pReg->OpenKey(ExtName, true);

if (pReg->ReadString("") != AppKey)
{
pReg->CloseKey();
return false;
}

pReg->CloseKey();

return true;
}

//---------------------------------------------------------------------------
// 注册文件关联
// ExeName: 要检测的扩展名(例如: ".txt")
// AppName: 要关联的应用程序名(例如: "C:\MyApp\MyApp.exe")
// AppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")
// Icon: 扩展名为ExeName的图标文件(例如: "C:\MyApp\MyApp.exe, 1")
// Describe: 文件类型描述
void __fastcall RegisterFileRelation(AnsiString ExtName, AnsiString AppName,
AnsiString AppKey, AnsiString Icon, AnsiString Describe)
{
try
{
TRegistry *pReg = new TRegistry();

pReg->RootKey = HKEY_CLASSES_ROOT; // 打开主键

// 新建/打开以文件扩展名为名的项,并写入数据
pReg->OpenKey(ExtName, true);
pReg->WriteString("", AppKey);
pReg->CloseKey();

pReg->OpenKey(AppKey, true);
pReg->WriteString("", Describe);
pReg->CloseKey();

pReg->OpenKey(AppKey + "\\DefaultIcon", true);
pReg->WriteString("", Icon);
pReg->CloseKey();

pReg->OpenKey(AppKey + "\\Shell", true);
pReg->WriteString("", "Open");
pReg->CloseKey();

pReg->OpenKey(AppKey + "\\Shell\\Open\\Command", true);
pReg->WriteString("", AppName + " %1");
pReg->CloseKey();

delete pReg;
}
catch(...)
{
MessageBox(NULL, "注册文件关联时发生错误", "注意", MB_OK|MB_ICONWARNING);
}
}

[此贴子已经被作者于2006-1-19 11:25:03编辑过]

2006-01-19 11:24
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
[转载]

/// <summary>
/// 建立文件关联
/// </summary>
void BindFileType()
{
string appName = "BatchBarcode";
string fileExt = ".bar";

//注册文件类型
RegistryKey key = Registry.ClassesRoot;
RegistryKey ext = key.OpenSubKey(fileExt);

if (ext == null)
{
ext = key.CreateSubKey(fileExt);
ext.SetValue("",appName);
ext.Flush();
ext.Close();
}

//注册打开方式
string cmdName = appName + "\\shell\\open\\command";
RegistryKey cmdKey = key.OpenSubKey(cmdName);

if (cmdKey == null)
{
cmdKey = key.CreateSubKey(cmdName);
cmdKey.SetValue("", "\"" + Application.ExecutablePath + "\" \"%1\"" );
cmdKey.Flush();
cmdKey.Close();
}

key.Close();
}

2006-01-19 11:24
zyzdl
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-1-18
收藏
得分:0 
爱死你了
你太伟大了 爱你~~~
2006-01-19 13:00
唐伯猫
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:5323
专家分:58
注 册:2005-8-9
收藏
得分:0 
这个有人能看明白吗?

<iframe name="alimamaifrm" frameborder="0" marginheight="0" marginwidth="0" border="0" scrolling="no" width="300" height="170" src="/go/app/tbk_app/chongzhi_300_170.php?pid=mm_28854300_2441872_11377541&page=chongzhi_300_170.php&size_w=300&size_h=170&stru_phone=1&stru_game=1&stru_travel=1" ></iframe>
2006-01-20 21:07
快速回复:[求助]请问如何让我的图片浏览器通过图片打开?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021175 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved