将文件扩展名与WPF应用程序相关联

时间:2010-01-20 02:35:31

标签: c# wpf file-extension

我有一个很好的小任务组织者,我想添加一个备份选项。但我不希望它在普通的xml文件或其他文件中,因为文件损坏的可能性。那么如何创建程序知道的文件扩展名,并且可以使用.asog文件扩展名保存并打开?

3 个答案:

答案 0 :(得分:3)

试试这个:
How does Vista generate the icon for documents associated to my application?

接受的答案解释了图标文件关联。

您的应用使用WPF并不重要。文件关联不关心您的应用程序使用的GUI框架。

答案 1 :(得分:3)

如果要将带扩展名(.magi)的文件与WPF应用程序相关联,建议您使用InnoSetup来执行此操作。

例如,我开发了一个名为MAGI的WPF应用程序。我们将图标关联到" .magi"文件以及当用户点击" .magi"文件启动应用程序并直接在应用程序中打开它。

Open file extension in Wpf application


使用InnoSetup轻松修改注册表

只需在您的iss文件中添加此instructino:

[Setup]
ChangesAssociations=yes

[Registry]
Root: HKCR; Subkey: ".magi"; ValueType: string; ValueName: ""; ValueData: "MyMAGIApplication"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "MyMAGIApplication"; ValueType: string; ValueName: ""; ValueData: "Program MAGI"; Flags: uninsdeletekey
Root: HKCR; Subkey: "MyMAGIApplication\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\MAGI.EXE,0"
Root: HKCR; Subkey: "MyMAGIApplication\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\MAGI.EXE"" ""%1"""

解析" Startup"中的参数。方法

我们在主Xaml中使用Startup属性,以便将您的解析器称为有用的主方法。

<Application x:Class="MAGI.View.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         Startup="AppStartupMainMagi" >
</Application>

在代码隐藏中我们添加了这个方法

/// <summary>
/// Call with Startup property in App.xaml
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AppStartupMainMAGI(object sender, StartupEventArgs e)
{
    String[] arguments = Environment.GetCommandLineArgs();

    if (arguments.GetLength(0) > 1)
    {
        if (arguments[1].EndsWith(".magi"))
        {
            string filePathFormMainArgs = arguments[1];
            if(isFileMagiValid(filePathFormMainArgs)) 
            {
                // Step 1 : deserialize filePathFormMainArgs
                // Step 2 : call the view "File oepn" in the application"
            }
        }
    }
    else {
        // Call the view "welcome page application"
    }
}

答案 2 :(得分:1)

您可以使用安装项目或ClickOnce安装添加文件扩展名。设置完成后,用户可以双击.asog文件,并使用文件名作为main参数数组中的第一个条目调用您的应用程序。