我正在构建一个使用C#的Windows窗体应用程序,当用户点击具有自定义扩展名的文件时需要启动它(例如filename.mycustomextension) 我打算在filename.mycustomextension文件中放一个url。当用户点击这个文件时,我们winform应用程序应该启动并读取该文件的内容。 有可能这样做吗?
答案 0 :(得分:6)
首先,最明显的是,你需要通过shell中的“open with”,通过安装程序或直接在注册表中将文件扩展名与应用程序相关联。
MSDN - Best Practices for File Associations
然后从那里开始真的很简单。
static class Program
{
[STAThread]
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
string text = File.ReadAllText(args[1]);
// ...
}
}
Offhand我找不到任何简单显示所有这些内容的示例,但Scott Hanselman有一个通过单个实例WinForms应用程序加载文件的好例子,差不多......
http://www.hanselman.com/blog/CommentView.aspx?guid=d2f676ea-025b-4fd6-ae79-80b04a34f24c
答案 1 :(得分:1)
是的,这是可能的。
我们的想法是,在单击您的应用程序时,您可以修改注册表项,以将扩展文件与您的应用程序相关联。
以下是草图:
FileAssociation
课程。以下是一个例子:
var FA = new FileAssociation();
FA.Extension = "blah";
FA.ContentType = "application/blah";
FA.FullName = "blah Project File";
FA.ProperName = "blahFile";
FA.AddCommand("open", string.Format("\"{0}\" \"%1\"", System.Reflection.Assembly.GetExecutingAssembly().Location));
//"C:\\mydir\\myprog.exe %1");
FA.IconPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
FA.IconIndex = 0;
FA.Create();
答案 2 :(得分:0)
如果您打算从浏览器启动应用程序,则存在安全问题,但除此之外 - 是的。
您只需要在用户的计算机上安装该应用程序,并将.mycustomextension与应用程序相关联。 http://support.microsoft.com/kb/185453