社区
C++ Builder
帖子详情
怎么设置一个文件的默认打开方式。(在程序中实现)
frankxht
2003-03-26 11:34:40
是向注册表里写什么东东?
...全文
2428
6
打赏
收藏
怎么设置一个文件的默认打开方式。(在程序中实现)
是向注册表里写什么东东?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuv2002
2003-03-31
打赏
举报
回复
我以.txt文件为例
用regedit.exe打开注册表
到HKEY_CLASSES_ROOT主键
它下面有一长串的".*"的键值
找到.txt
它有默认值为"txtfile"
再在HKEY_CLASSES_ROOT下面搜索名为"txtfile"的主键
找到了
它有子键"DefaultIcon" 默认值为"%SystemRoot%\system32\shell32.dll,-152"
意思是文件的默认图标从shell32.dll 得来 -152为图标序号
另一子键"shell" 这个是关键了
"Shell"键下面有
"open"子键: 里面有“command” 子键其默认值就是对.txt文件的默认打开方式
值为%SystemRoot%\system32\NOTEPAD.EXE %1
另外"open"下面还有"print" 子键,就是打印的操作方式了
这样应该很清楚啦吧
xuv2002
2003-03-26
打赏
举报
回复
手动改就用google 去改吧
其实我给你的函数已经很清楚了
你随便建一个工程
然后执行一下函数不就可以了
例如txt的默认操作
RegisterExt(".txt","Text files","C:\\Winnt\\notpad.exe");
frankxht
2003-03-26
打赏
举报
回复
要手动改注册表呢?怎么改?
xuv2002
2003-03-26
打赏
举报
回复
给你一个例子吧
ext 是你要注册的文件后缀名,desc 是 描述 exe 是你默认打开的执行程序的文件名
如
RegisterExt(".txt;.tixt","My Text",Application->ExeName.c_str());
ext 可以用';'隔开多个注册
bool RegisterExt(const char* ext, const char* desc, const char* exe)
{
unsigned long Size = 0 ;
char buf [255] , Ext [17];
memset(Ext,17,0); memset(buf,0,255);
if (!ext || !ext[0] || !desc || !desc[0] || !exe || !exe[0]) return false;
strncpy(buf, exe, 3); buf[3] = '\0';
if (GetDriveType(buf)!=DRIVE_FIXED) return false;
TRegistry * Reg=new TRegistry();
Reg->RootKey=HKEY_CLASSES_ROOT;
while(ext) {
const char* s = strchr(ext, ';');
Size = s ? int(s-ext) : strlen(ext);
if (Size >= sizeof(Ext)) Size = sizeof(Ext) - 1;
strncpy(Ext, ext, Size);
Ext[Size] = '\0';
ext = s ? s+1 : NULL;
Size = sizeof(buf); buf[0] = '\0';
Reg->OpenKey(Ext,true);
Reg->WriteString("",desc);
Reg->CloseKey();
}
AnsiString Desc = desc;
if(!Reg->OpenKey(Desc+"\\DefaultIcon",true)){
Reg->CloseKey(); delete Reg; return false;
}
sprintf(buf,"%s,0",exe);
Reg->WriteString("",buf);
Reg->CloseKey();
if(!Reg->OpenKey(Desc+"\\Shell\\Open\\Command",true)){
Reg->CloseKey(); delete Reg; return false;
}
sprintf(buf,"%s %%1",exe);
Reg->WriteString("",buf);
Reg->CloseKey();
delete Reg; return true;
}
frankxht
2003-03-26
打赏
举报
回复
我的意思是,想在注册表里查看一下它的位置。
xuv2002
2003-03-26
打赏
举报
回复
要手动?
用资源管理器吧,很简单
点开资源管理器的文件夹选项
里面有文件类型,点开它
若要新建,点新建
输入你要注册的后缀名如".bik"
然后点高级按钮,出来一个对话框
最上边的是文件类型的描述,我写成"Bik Vedio"
里面有个操作列表框
点新建,然后在操作编辑框中输入"Open"。 注:这个是Windows对文件操作打开的默认值
然后输入你要用来打开该文件类型的程序的名称
如"c:\\bik\\binkplay.exe %1"
%1 是参数,当你打开*.bik文件时,自动将文件名当作参数传给执行文件了
这样你该明白了
呵呵
Js 弹出自定义模式窗口(回传值到父页面)
例子
中
所用到的Js、css、图片等下载地址:http://download.csdn.net/detail/zanychou/4690248 1. 弹出页代码(PopupPage.aspx) function CloseWindow() { window.top.hidePopWin(); }
C#
文件
ashx(三)
实现
数据库访问
先上效果图了: 一、按钮的字可以忽略,只是接着上一篇文章xml解析传递改了请求的一点内容, aspx页面如下: <body> <div> <button id="btn3" style="padding: 10px; margin-left: 150px; margin-top: 20px;"> ...
创建.aspx页面
转载于: http://book.51cto.com/art/200803/66483.htm ASP.NET 2.0 提供了两种操纵网页可见元素(包括标记、服务器控件和静态文本)和
程序
逻辑(包括事件处理
程序
和其他代码)的模型。一种是单
文件
页模型,可见元素和代码保 存在同一
文件
中
;另一种称为代码隐藏页模型,可见元素包含在.aspx
文件
中
,代码位于另
一个
称为“代码隐藏”的
文件
中
。在这两种...
test
http://test1.anyp.com/ujohn/12773-127734.aspx
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章