Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自己的C#应用程序打开自定义文件_C#_Wpf - Fatal编程技术网

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

使用自己的C#应用程序打开自定义文件,c#,wpf,C#,Wpf,我正在创建一个媒体播放器 到目前为止,我可以通过双击文件打开我的C#应用程序的文件类型。但是我想通过选择并同时打开多个文件来打开多个文件 我的代码如下: App.xmal.cs protected override void OnStartup(StartupEventArgs e) { if (e.Args != null && e.Args.Length > 0) { this.Properties["ArbitraryArgNa

我正在创建一个媒体播放器

到目前为止,我可以通过双击文件打开我的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键)来同时打开多个文件。

FileOpenPicker可以做到这一点(适用于UWP或Windows 8.1桌面的代码,使用Windows 8.1 phone时有点棘手):


仅供参考,您的清单必须在功能中声明“音乐库”

您必须研究开发外壳扩展以实现您想要的功能。只需使用注册表将文件类型与应用程序关联,每个命令只能传递一个文件,最终每个文件(您已确认)打开一次应用程序

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

注意,shell扩展必须用C++编写,微软强烈建议避免使用托管代码。


您可以在这里找到文档的起点:

在Windows资源管理器中也可以这样做吗?如果我正在标记多个文本文件,并双击其中的任何一个,则仅打开此文本文件。即使我创建了文件列表或字符串数组。当我双击多个项目时,它会打开两个独立的应用程序。请用您正在使用的技术(例如wpf、uwp、winforms等)标记问题。请看:这并不能回答问题。OP希望从Windows资源管理器打开多个文件。在C#@JayashanLakshitha中是否有其他方法可以做到这一点我给了你两种选择,无法想象还有另一种。。。。
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();