2012-04-18 10 views
0

myplayer.exeでmp3ファイルを実行したいです(私はC#でコード化して開発しました)。 しかし、私はこのエラーが発生しています - abc.mp3は有効なWin32アプリケーションではありません。 app.xaml.cs C#で作成されたアプリケーションをmp3ファイルをダブルクリックして実行するとエラーが発生する

とmainWindow.xaml.csで

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

上記のコードは、これは... -

は、私はファイルパスを取得するためにこのコードを使用しました私が使用したコード!

この問題を解決するために、このエラーの原因をお知らせください。 ありがとうございました! :)

+0

どこでエラーが発生しますか?どのようにMP3を関連づけましたか? – SLaks

+0

'Environment.GetCommandLineArgs()'を使わないのはなぜですか? – SLaks

+0

@SLaks、システムの私のフォルダに...私はmp3ファイルを持っています。私はdobleをクリックしました。 P.S-私はすでにプロパティでファイルの種類を開いて、デフォルトのプレーヤーとして私のexeを設定しました。 –

答えて

1

エラーが発生していると判断して、MP3を実行しようとしているようです。それは動作しません。

ダブルクリックするとファイルを開くときに、Windowsはレジストリでそのファイルの既定のアプリケーションをチェックします。ほとんどの設定でメモ帳が使用されます。それは、このコマンドを送信します。

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

または

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

だから、最初のコマンドライン引数はファイル名です。

短い説明:WindowsエクスプローラでMP3を開こうとするとプログラムが開始された場合、プロジェクトのどこかで参照するためにコマンドライン引数を取得して保存する必要があります。

Environment.GetCommandLineArgs()を使用するか、のProgram.csから最初のフォームのコンストラクタに渡すことができます。

+0

申し訳ありませんが、Environment.GetcommandArgsと私が使ったActivationArgsとはどのように違っているのか詳しく教えてください。私の知る限りでは..これらはダブルクリックされたファイルを取得するために使用されます! –

0

あなたが与えたエラーの説明から、コマンドラインパラメータに関連する問題のように見えます。 アプリケーションのコマンドラインパラメータを読み取る必要があります。 WPFでは、Application_Startupイベントを処理して、コマンドライン引数を読み取ることができます。 thisに従うと、wpfのコマンドライン引数の使用方法を理解できます。 Thisは、C#でMP3ファイルを再生する詳細を知るのに役立ちます。

希望すると、これが役に立ちます。

関連する問題