我在创造一个媒体播放器。
到目前为止,我可以通过双击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键)来改变它,以便同时打开多个文件。
发布于 2016-12-22 12:55:09
为了实现您想要的结果,您必须研究开发外壳扩展。只要使用注册表将文件类型与应用程序关联起来,您就只能在每个命令中传递一个文件,这最终会在每个文件中打开应用程序一次(您已经确认了)。
我想您也可以实现您的应用程序,以便只允许一个实例在全球运行。这样,每当有一个命令进来再打开一个文件时,您就可以将它添加到播放列表或其他东西中。
请注意,外壳扩展必须用C++编写,为此,微软强烈建议避免使用托管代码。
您可以在这里找到文档的起点:https://msdn.microsoft.com/en-us/library/windows/desktop/bb776778(v=vs.85).aspx
发布于 2016-12-22 12:46:54
FileOpenPicker可以做到这一点( UWP或Windows8.1桌面代码,Windows8.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();您的清单必须在功能上声明“音乐库”
https://stackoverflow.com/questions/41283291
复制相似问题