我正在制作媒体播放器。
到目前为止,我可以通过双击文件打开我的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键)一次打开多个文件来更改此代码。
答案 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();
仅供参考您的清单必须在功能
中声明“音乐库”