可能重复:
How to associate a file extension to the current executable in C#
所以,我正在申请学校(最终项目)。
在这个应用程序中,我有一个Project
- 类。
这可以保存为自定义文件,例如测试。的 GPR 即可。
(.gpr是扩展名)。
如何让windows /我的应用程序将.gpr文件与此应用程序关联,这样如果我双击.gpr文件,我的应用程序将触发并打开文件 (因此启动OpenProject方法 - 这会加载项目)。
我不询问如何让Windows将文件类型与应用程序关联,我问如何在我的Visual Studio 2012代码中捕获它。
更新 由于我的问题似乎不太清楚:
atm,我什么也没做,所以我可以遵循最好的解决方案。我想要的是双击.gpr,确保Windows知道用我的应用程序打开它,并在我的应用程序中捕获文件路径。
非常感谢任何帮助!
答案 0 :(得分:10)
使用应用程序打开文件时,该文件的路径将作为第一个命令行参数传递。
在C#中,这是args[0]
方法的Main
。
static void Main(string[] args)
{
if(args.Length == 1) //make sure an argument is passed
{
FileInfo file = new FileInfo(args[0]);
if(file.Exists) //make sure it's actually a file
{
//Do whatever
}
}
//...
}
如果您的项目是WPF应用程序,请在App.xaml
添加Startup
事件处理程序:
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
Startup="Application_Startup"> <!--this line added-->
<Application.Resources>
</Application.Resources>
</Application>
您的命令行参数现在位于e.Args
事件处理程序的Application_Startup
中:
private void Application_Startup(object sender, StartupEventArgs e)
{
if(e.Args.Length == 1) //make sure an argument is passed
{
FileInfo file = new FileInfo(e.Args[0]);
if(file.Exists) //make sure it's actually a file
{
//Do whatever
}
}
}