0

我想在 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
     }
    }

请让我知道纠正这个..以及这个错误的原因!先谢谢了!:)

4

2 回答 2

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 mainProgram.cs第一个表单的构造函数。

于 2012-04-18T20:30:18.877 回答
0

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

希望这会有所帮助。

于 2012-04-19T13:08:27.523 回答