0

Windows Media Playerコンポーネントを使用して、アプリケーションと同じディレクトリにある(別のコンピューターに移動できるように)Resourcesフォルダーからオーディオを再生するプログラムを作成しています。

オーディオクリップを選択するための現在のコードは次のとおりです。

soundPlayer.URL = @"C:\Users\Ryan\Desktop\MyProgram\SFX\nameThatTune.mp3";

これは問題なく動作しますが、次のように変更すると次のようになります。

soundPlayer.URL = @"SFX\showIntro.mp3";

動作を停止します。また、ファイルパスを〜/と../で始めようとしましたが、どちらも機能しません。これはWMPコンポーネントに固有の問題ですか、それともより大きな問題がありませんか?

4

1 に答える 1

1

相対パスはの値によって異なりますEnvironment.CurrentDirectory。Visual Studio内でアプリケーションを実行すると、現在のディレクトリはプロジェクトのルートフォルダー(アプリケーションのexecutalbeパスではない)を指します。また、一部の操作では、現在のディレクトリを変更できます(を使用してファイルを開くOpenFileDialog)。現在のディレクトリが特定の場所であると常に信頼できるとは限らないため、常に絶対パスを使用するようにしてください。

ファイルがアプリケーションフォルダー(.exeファイルの近く)にある場合は、次を使用できます。

soundPlayer.URL = Path.Combine(
    Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
    "showIntro.mp3");

または、WinFormsを使用している場合:

soundPlayer.URL = Path.Combine(
    Path.GetDirectoryName(Application.ExecutablePath),
    "showIntro.mp3");

サブフォルダを指すように変更するのも簡単です。

ファイルはプロジェクトの出力フォルダーにある必要があることに注意してください(bin\Debugたとえば)。

于 2013-02-24T09:43:48.767 に答える