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

时间:2012-04-18 20:02:32

标签: c# wpf mp3 exe

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

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

    if
    ((AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData != null)     
      &&     
    (AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.Length>0))
       {
            string fname = "No filename given";
            try
                 {
                 fname = AppDomain.CurrentDomain.SetupInformation.
                         ActivationArguments.ActivationData[0];

                Uri uri = new Uri(fname);

               fname = uri.LocalPath;

                this.Properties["ArbitraryArgName"] = fname;
      }

         catch (Exception ex)
                 { }

        base.OnStartup(e);
}

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
     }
    }

请让我知道更正此..以及此错误的原因! 提前致谢! :)

2 个答案:

答案 0 :(得分:1)

从您所得到的错误来看,似乎您正在尝试执行MP3。那不行。

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

"<System32 Directory>\Notepad.exe" <filename>

"C:\Windows\System32\Notepad.exe" "C:\Users\user\Desktop\test1.txt"

所以第一个命令行参数是文件名。

长话短说:如果您的程序是通过尝试在Windows资源管理器中打开MP3来启动的,则需要获取并保存命令行参数以供项目中某处使用。

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

答案 1 :(得分:0)

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

希望这会有所帮助。