当用户双击其关联文件时,如何打开应用程序?
Posted
技术标签:
【中文标题】当用户双击其关联文件时,如何打开应用程序?【英文标题】:How can I make an application open when a user double clicks on its associated file? 【发布时间】:2009-03-03 07:23:45 【问题描述】:我正在创建一个使用某种文件格式作为其数据源的应用程序。我希望在用户双击此文件时打开此应用程序,例如当用户双击 Word 文档时 MS Word 将如何打开。我该如何做到这一点?另外,我将如何使用用户选择的文件填充数据字段。我会使用 program.cs 类中的 args[] 吗?我正在使用 c# 来编写这个应用程序。
注意我希望当应用程序安装在主机上而用户不做任何事情时建立这种关联。
【问题讨论】:
【参考方案1】:FIRST,您需要设置文件关联,以便您的文件类型与您的应用程序相关联,打开文件类型将运行您的应用程序。
您可以通过编程方式进行文件关联,这里有一些细节,如前所述: http://www.codeproject.com/KB/dotnet/System_File_Association.aspx
如果您有应用程序,您也可以通过您的安装项目来完成此操作。对于“新手”来说,这是一条更容易的道路。使用 Visual Studio 获取安装项目以添加文件关联并设置文件图标的详细信息如下: http://www.dreamincode.net/forums/topic/58005-file-associations-in-visual-studio/
否则,如果您使用 InnoSetup、Wix 等,那么我想您可以看到这些安装程序为您创建关联的说明。
第二,您需要让您的应用程序接受命令行参数。打开的文件作为命令行参数传递。您需要处理参数以获取文件路径/名称并打开给定的文件。这里有一个很好的描述,代码如下: C# Command Line arguments problem in Release build
在您的情况下,您将调用您定制的参数解析方法,而不是显示处理程序表单中的MessageBox.Show(s)
。
对于只接受文件名作为参数打开的简单应用程序,这可能很简单
foreach (string filePathName in Args)
DoNamedFileOpen(filePathName);
您的代码还可以有一个方法,可以从文件中提取您感兴趣的数据字段的值等。
这是一个很好的简单方法,可以解决在安装应用程序时设置文件关联、带有图标并让应用程序处理打开这些文件的问题。
当然,还有很多其他选项,例如运行时文件关联(询问用户是否需要关联)、检测“损坏”关联等。
这个问题在这里很久了,但我希望这对新的搜索有用
【讨论】:
【参考方案2】:见this。或this,如果您需要 API 信息。
【讨论】:
【参考方案3】:ClickOnce 从 .NET 3.5 SP1 开始也支持文件关联。在项目的属性中,切换到Publish
选项卡并单击Options
按钮。该对话框中有一个File Associations
部分,可让您指定文件扩展名、描述和自定义图标。
【讨论】:
【参考方案4】:首先,您必须将文件类型扩展名与可执行文件相关联。在 Windows 上,您可以通过注册表执行此操作(搜索“文件类型关联窗口”)。在这个问题中你会发现一些有趣的提示:Filetype association with application (C#)Script to associate an extension to a program
您的程序必须对命令行参数或参数做出反应。在Java中,确实是main方法的字符串数组。我猜,在 C# 中也是如此。
【讨论】:
【参考方案5】:如果您不需要以编程方式执行此操作,请右键单击图标,单击打开方式...,然后选择“始终使用此程序...”。
【讨论】:
他显然想以编程方式执行此操作。标签是 C#,它表示他希望与他的安装程序建立这种关联。【参考方案6】:这通常由您的安装程序处理。例如,我使用了INNO setup,并且在双击/打开关联的文件扩展名时安排它调整用户的注册表以启动您的应用程序非常简单。它甚至会为您处理 MIME 类型以及在卸载时清除这些内容,这是一件非常好的事情
【讨论】:
【参考方案7】:我设法解决了这个问题。我使用 WIX 创建了一个安装文件,并要求它在安装时将文件与应用程序相关联。
【讨论】:
您能分享一下您是如何做到这一点的参考资料吗?我只想使用 WIX。以上是关于当用户双击其关联文件时,如何打开应用程序?的主要内容,如果未能解决你的问题,请参考以下文章