如何设定某类文件默认用自定义的程序打开?

youzelin 2012-07-29 01:20:00
问题背景:

我自己做了一个 WinForm 小工具 X,用于解析自定义格式的文本文件 *.abc
运行该程序,点击 Open 按钮,打开一个 abc 文件,解析其核心数据并显示在界面上。

问题描述:

我需要设置 *.abc 文件默认以 X 程序打开,这个功能目前我通过右键选择默认程序来绑定,不知道有没有更好的程序上的设定。
关键问题是:双击以 X 打开之后,并未自动读取并解析 abc 文件的内容,我想双击打开之后,自动解析指定的文件的内容,请问这个该如何做?就像平常双击打开一个 Word 文档一样。

谢谢!
...全文
271 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
SocketUpEx 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

找到了。。。。。。。。。。。。。。。我去弄一下!多谢
[/Quote]




youzelin 2012-07-29
  • 打赏
  • 举报
回复
找到了。。。。。。。。。。。。。。。我去弄一下!多谢
threenewbee 2012-07-29
  • 打赏
  • 举报
回复
http://www.codeproject.com/Articles/43675/C-FileAssociation-Class
youzelin 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 7 楼 的回复:

引用 5 楼 的回复:

"D:\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe" "%1"

你找找注册表嘛
设置后的内容就像我上面这样的
看到%1没?
看到%1没?
这个就是你要打开的文件的路径了
OK
C# code
/// <summary>
/// ……
[/Quote]

我只在 LocalSettings\Software\Microsoft\Windows\Shell\MultiCahche 里面找到了一个 KeyValue项:

Value name:
C:\Program Files (x86)\XTools\XTool.exe
Value data:
XTool

请问那我是不是要把 Value name 改成
"C:\Program Files (x86)\XTools\XTool.exe" "%1"

然后,再在程序里做处理?
threenewbee 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:

我不得不说MFC是一个很好的框架,它最符合微软的约定(所谓微软Windows徽标)。

一个文档程序应该实现如下标准功能:
(1)扩展名关联可执行文件
(2)关联打开、打印命令
(3)关联右键菜单-新建功能
(4)响应OLE拖放
(5)Windows 7 Quick Jump功能
(6)可选:实现OLE服务器

而这些,都是默认程序向导就能办到的。……
[/Quote]

C#都可以实现,就是都得手工去做。
SocketUpEx 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 5 楼 的回复:

"D:\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe" "%1"

你找找注册表嘛
设置后的内容就像我上面这样的
看到%1没?
看到%1没?
这个就是你要打开的文件的路径了
OK
C# code
/// <summary>
/// 应用程序的主入口点。
……
……
[/Quote]

我说你怎么就不明白呢
拿到要打开文件的路径
想怎么样不?
直接删除再创建然后再拷贝D盘再上传网站都可以了



youzelin 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

我不得不说MFC是一个很好的框架,它最符合微软的约定(所谓微软Windows徽标)。

一个文档程序应该实现如下标准功能:
(1)扩展名关联可执行文件
(2)关联打开、打印命令
(3)关联右键菜单-新建功能
(4)响应OLE拖放
(5)Windows 7 Quick Jump功能
(6)可选:实现OLE服务器

而这些,都是默认程序向导就能办到的。
[/Quote]

C# 有吗?
threenewbee 2012-07-29
  • 打赏
  • 举报
回复
我不得不说MFC是一个很好的框架,它最符合微软的约定(所谓微软Windows徽标)。

一个文档程序应该实现如下标准功能:
(1)扩展名关联可执行文件
(2)关联打开、打印命令
(3)关联右键菜单-新建功能
(4)响应OLE拖放
(5)Windows 7 Quick Jump功能
(6)可选:实现OLE服务器

而这些,都是默认程序向导就能办到的。
youzelin 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

"D:\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe" "%1"

你找找注册表嘛
设置后的内容就像我上面这样的
看到%1没?
看到%1没?
这个就是你要打开的文件的路径了
OK
C# code
/// <summary>
/// 应用程序的主入口点。
……
[/Quote]

。。。。。。我看看
youzelin 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

"D:\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe" "%1"

你找找注册表嘛
设置后的内容就像我上面这样的
看到%1没?
看到%1没?
这个就是你要打开的文件的路径了
OK
C# code
/// <summary>
/// 应用程序的主入口点。
……
[/Quote]

不是,不是这个。不好意思,题目可能有些误导。不是默认打开程序的问题。

我原先程序打开后,点击 Open 按钮来打开一个 *.abc 文件,对其进行解析,并显示内容。假定我已经设定了默认程序。我现在想直接双击 *.abc 文件后,程序自动解析这个文件,就好像自动点击了 Open 按钮并解析文件一样。
这样清楚了吧?我现在的情况是:就算双击打开了 *.abc 文件,也好像双击打开了空程序一样,没有任何动作。
SocketUpEx 2012-07-29
  • 打赏
  • 举报
回复
"D:\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe" "%1"

你找找注册表嘛
设置后的内容就像我上面这样的
看到%1没?
看到%1没?
这个就是你要打开的文件的路径了
OK
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(String[] args)
{
if (args.Length > 0)
{
MessageBox.Show(args[0]);
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}



youzelin 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

msdn search shell
[/Quote]

这回答也太模糊了吧?我是想知道:如何双击打开文件后自动解析文件内容?
youzelin 2012-07-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

第一时间想到设置注册表表
[/Quote]
绑定默认程序的话,注册表应该能。
但是关键问题是,如何双击打开文件后自动解析文件内容。我觉得应该是代码里做,但是具体怎么做,我不知道。
真相重于对错 2012-07-29
  • 打赏
  • 举报
回复
msdn search shell
SocketUpEx 2012-07-29
  • 打赏
  • 举报
回复
第一时间想到设置注册表表


PowerBI系列之基础和可视化技能专题基础概念PowerBI是什么PowerBI优秀作品展示PowerBI组件简介 PowerBI Desktop的下载安装PowerBI Desktop界面介绍和5分钟入门 PowerBI账号区别PowerBI对象和结构PowerBI和Tableau等其他主流BI产品的介绍 PowerBI官方文档基本操作文件和报表设置选项介绍页面属性设置-大小、背景、壁纸、对齐、筛选器窗格格式页面视图-适应页面、宽度、实际大小视觉对象格式属性面板快速调整页面布局和样式 (文本笔记)视觉对象分组、显示或隐藏 使用数据对象表和数据点表   向报表添加文本框和形状可视化技能使用编辑交互功能来控制图表联动多层联动中控制使用Control Click切片器的使用同步切片器折叠切片器给切片器设定默认值给切片器设定动态默认值(DAX函数-默认当前月或天)使切片器默认代表无任何选择切片器仅显示有对应数据的选项使切片器反向筛选和计算切片器之间取数据并集关系中多端的切片器筛选一端的切片器参数的创建和参数切片器的使用筛选器书签和选择窗格下拉式多级菜单页面导航菜单报表主页设计和重置切片器普通和自定义以及视觉对象标头工具提示按列排序和自定义排序分组装箱普通钻取和层次钻取及跨页钻取保留所有筛选器和设置钻取按钮跨报表钻取Matrix 矩阵详解矩阵中为每个列快速设置相同列宽矩阵中动态显示列的两种方法使用Web超链接和图片超链接文本框设置超链接或邮件地址手机端页面布局创建参数和使用报表模块(输入或值列表)利用报表模板和参数控制线下报表数据权限利用参数实现数据手工加密和权限控制利用页面导航控制页面级权限报表主题控制和主题模板生成器PBIX和PBIT文件结构解析:提取图片和主题,提取已下架的自定义图表,报表元数据等 PBIDS预定义数据连接文件DAX函数使可视化强大 DAX函数实现特殊符号的使用 DAX函数实现切片器默认当前月或天 DAX函数使切片器默认代表无任何选择 DAX函数使切片器仅显示有数据的选项 DAX函数使切片器反向筛选和计算 DAX函数使切片器之间取并集 DAX函数使关系中多端的切片器筛选一端的切片器DAX函数实现年月共同决定数据排序DAX函数实现动态图表标题DAX函数实现动态图表配色和图标DAX函数实现动态纵坐标DAX函数实现动态横坐标  

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧