用自己的C#应用​​程序打开自定义文件

时间:2016-12-22 12:32:54

标签: c# wpf

我正在制作媒体播放器。

到目前为止,我可以通过双击文件打开我的C#应用​​程序的文件类型。但我想通过选择它们并立即打开它们来打开多个文件。

我的代码如下:

App.xmal.cs

protected override void OnStartup(StartupEventArgs e)
{    
    if (e.Args != null && e.Args.Length > 0)
    {
        this.Properties["ArbitraryArgName"] = e.Args[0];
    }

    base.OnStartup(e);
}

MainWindow.xmal.cs

if (Application.Current.Properties["ArbitraryArgName"] != null)
{
    string fname = Application.Current.Properties["ArbitraryArgName"].ToString();           

    if (fname.EndsWith(".mp3") || fname.EndsWith(".wma") || fname.EndsWith(".wav") || fname.EndsWith(".mpg") || 
        fname.EndsWith(".mpeg") || fname.EndsWith(".mp4") || fname.EndsWith(".wmv") )
    {
        doubleclicktrack(fname);
    }
    else
    {
         this.Close();
    }
}

此代码适用于一个文件,但如何通过选择多个文件并一次打开它们(通过按Enter键)一次打开多个文件来更改此代码。

2 个答案:

答案 0 :(得分:1)

您必须考虑开发 shell扩展才能实现您的目标。只需使用注册表将文件类型与您的应用程序相关联,您就只能为每个命令传递一个文件,最终会为每个文件打开您的应用程序(已经确认)。

我想你也可以实现你的应用程序,只允许一个实例在全局运行。这样,每当有命令打开另一个文件时,您可以将其添加到播放列表或其他内容。

请注意,shell扩展必须用C ++编写,Microsoft强烈建议为此目的避免使用托管代码。

您可以在此处找到文档起点:https://msdn.microsoft.com/en-us/library/windows/desktop/bb776778(v=vs.85).aspx

答案 1 :(得分:0)

FileOpenPicker可以做到这一点(UWP或Windows 8.1桌面代码,Windows 8.1手机有点棘手):

private static readonly string[] FileTypes =  {
   "aac", "adt", "adts", "mp3", "m3a", "m4a", "mpr", "3gp", "3g2",
   "flac", "wav", "wma"  };

...........

FileOpenPicker picker = new FileOpenPicker();
picker.SuggestedStartLocation = PickerLocationId.MusicLibrary;
foreach (String fileType in FileTypes)
     picker.FileTypeFilter.Add("." + fileType);

var list = await picker.PickMultipleFilesAsync();

仅供参考您的清单必须在功能

中声明“音乐库”