通过双击mp3文件运行在c#中创建的应用程序,但出现错误

通过双击mp3文件运行在c#中创建的应用程序,但出现错误,c#,wpf,mp3,exe,C#,Wpf,Mp3,Exe,我想在myplayer.exe中运行一个mp3文件(我已经用c#编码和开发了)。 但是我得到了这个错误-abc.mp3不是一个有效的Win32应用程序 我使用此代码获取文件路径- app.xaml.cs中的上述代码 在mainWindow.xaml.cs中,这是我使用的代码 public CubeWindow() { InitializeComponent(); this.Loaded += new RoutedEventHa

我想在myplayer.exe中运行一个mp3文件(我已经用c#编码和开发了)。 但是我得到了这个错误-abc.mp3不是一个有效的Win32应用程序

我使用此代码获取文件路径-

app.xaml.cs中的上述代码

在mainWindow.xaml.cs中,这是我使用的代码

  public CubeWindow()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(MainContainer_Loaded);
         }

 void MainContainer_Loaded(object sender, RoutedEventArgs e)
  {
  if(System.Windows.Application.Current.Properties["ArbitraryArgName"] != null)
    {
      string fname=System.Windows.Application.Current.
                    Properties["ArbitraryArgName"].ToString();
       me.Source = new Uri(fname, UriKind.RelativeOrAbsolute);
       me.Play(); //me is the mediaelement
     }
    }
请让我知道如何纠正这一点。。还有这个错误的原因!
提前感谢!:)

从您遇到的错误判断,似乎您正在尝试执行MP3。那不行

当您试图通过双击打开一个文件(比如txt文件)时,Windows会检查注册表中该文件的默认应用程序,在大多数设置中,默认应用程序是记事本。然后发送以下命令:

"<System32 Directory>\Notepad.exe" <filename>
因此,第一个命令行参数是文件名

长话短说:如果您的程序是通过尝试在Windows资源管理器中打开MP3启动的,那么您需要获取并保存命令行参数,以供项目中的某个地方参考


为此,您可以使用
Environment.GetCommandLineArgs()
或将它们从
Program.cs
中的
static void main
传递到第一个表单的构造函数。

根据您给出的错误描述,它看起来像是与命令行参数相关的问题。 您必须读取应用程序的命令行参数。 在WPF中,您可以处理应用程序启动事件以读取命令行参数。 您可以按照以下步骤了解wpf中命令行参数的使用。 将帮助您了解在C#中播放MP3文件的详细信息


希望这会有所帮助。

您从哪里得到错误信息?您是如何关联MP3的?为什么不在系统的“我的文件夹”中使用
环境.GetCommandLineArgs()
?@SLaks。。。我有mp3文件。我点击了他们。。我已经用属性更改了打开的文件类型,并将我的exe设置为默认播放器。但是我仍然不知道哪里出错了!如果我通过播放器打开媒体文件浏览媒体文件。。他们干得很好。。但是当我在一个普通的文件夹中双击它们时,我得到了这个错误!你从哪里得到的错误?
HKCU\.mp3
中有什么?很抱歉,请您详细说明Environment.GetcommandArgs与我使用的ActivationArgs有何不同??据我所知。。它们用于获取双击的文件!
"<System32 Directory>\Notepad.exe" <filename>
"C:\Windows\System32\Notepad.exe" "C:\Users\user\Desktop\test1.txt"