• 締切済み

C#でMediaPlayerを立ち上げた後

お世話になります。 C#(.Net 4.0)で、MediaPlayerをコントロールでフォーム等に 張り付けるのではなく、System.Diagnostics内の Process.Start("wmplayer.exe","再生ファイル")で 外部プログラムとしてmp3や動画を開いたときに、 再生が終了(最後まで再生し終わったら)したら、 自動でMediaPlayerを終了させたいのですが、 その方法はありますでしょうか。 現在のコードはこうなっています(usingは省略)。 private void button1_Click(object sender, EventArgs e) { Process p = Process.Start("wmplayer.exe", @"C:\Users\hoge\Documents\abcde.mp4"); p.WaitForExit(); } 特に何の変哲もない、外部プログラムの起動ですが、 自動で閉じてもらわないと、下のWaitForExitに処理が回りません。 対策をお願いいたします。

みんなの回答

  • chie65535
  • ベストアンサー率43% (8525/19381)
回答No.2

http://support.microsoft.com/kb/883200/ja http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=013958 の両方を参照して「ファイル名を指定して実行」でメディアプレーヤーを起動して /play /close が正常に機能しているか確認してみて下さい。 「ファイル名を指定して実行」で、メディアプレーヤーが再生完了後に終了して閉じるのであれば、機能的には問題が無いという事になりますから、あとは「呼び出し方法の問題」だけになります。

tatapatank
質問者

補足

度々恐れ入ります。 いろいろ試行錯誤しておりますが、結果は変りません。 ちなみに、参考のURLは、MediaPlayerのバージョンは7、 2004年のものになっています。 また、検索している中、下記のような記事も見つけました。 http://answers.microsoft.com/ja-jp/windows/forum/windows_7-pictures/mediaplayer-close/4acfda80-dd2d-45bd-bc52-6dbcae66becb 記事にある通り、いつものマイクロソフトの『やっちゃった(テヘッ)』 不具合かもしれません。 だとすると、既存の方法では、自動終了はできないということになっているのかも 知れません。 それとももし、ご指摘の方法で自動終了できたのであれは、その詳細を お送りいただければ幸いです。 よろしくお願いいたします。

  • chie65535
  • ベストアンサー率43% (8525/19381)
回答No.1

ご参考。 http://support.microsoft.com/kb/241422/ja Process p = Process.Start("mplayer2.exe", @"/play /close C:\Users\hoge\Documents\abcde.mp4"); 因みに、mplayer2.exeは、wmplayer.exeから起動される「メディアプレーヤーの本体」です。

tatapatank
質問者

補足

早速の回答、ありがとうございます。 ですが、上手くいきません。 /playで再生は行くのですが、終了後に閉じてくれません。 他の環境か何かがいけないのでしょうか。 私の環境は、WMPはVer.12、Windows8,1です。 ちなこに、コマンド窓から入力しても『mplayer2』は 動きませんでした。pathが通っていないとかではなく、 mplayer2自体が見つかりませんでした。 wmplayerで、以下のコマンドを投げてみましたが、結果は同じく、 再生されましたが閉じませんでした。 C#ではmplayer2は起動しました。 申し訳ありませんが、引き続きお願いいたします。

関連するQ&A

  • アプリケーションAから外部アプリケーションBを

    アプリケーションAから外部アプリケーションBを 呼び出す処理。 Bのフォームを常に最前面にして、Aのフォームを操作できないようにしたいです。 ただしAにあるタイマーを止めないようにもしたいです。 そこで [C#] //ファイルを開いて終了まで待機する System.Diagnostics.Process p = System.Diagnostics.Process.Start("C:\\test.exe"); p.WaitForExit(); ※「test.exe」を外部アプリケーションBとする。 を使ったのですが、Aのタイマーが止まってしまいます。 何か良い方法はないでしょうか? 言語はC#です。

  • android mediaPlayerについて。

    androidアプリ開発初心者です。 ただいまmediaPlayerを使い、単純に再生、停止をしようと思っているのですが、 再生はできるのですが、停止ができません。 プログラムは以下になります。 何か原因がお分かりの方がいらっしゃいましたら、ご教授頂けたらうれしいです。 よろしくお願いします。 btnが再生ボタン、 btn1が停止ボタンになります。 ローカルにおいてある、sample.mp3を再生しています。 MediaPlayer mp = new MediaPlayer(); mp.setAudioStreamType(AudioManager.STREAM_MUSIC); if(v==btn){ try{ mp.setDataSource("/sdcard/sample.mp3"); mp.prepare(); mp.start(); }catch (IOException e){ mp.release(); } } else if(v==btn1){ mp.stop(); mp.release(); }

  • Process.Startの戻り値を後で取得

    お世話になっております。 作業マシン:WINDOWS Server2008 (仮想) 開発ツール:VWD2010(VB) 使用DB:SQLServer2008R2 にて、Webアプリを開発しております。 ASP.NET開発の経験はおおよそ1ヶ月半程です。 現在、Process.Startで外部exeを実行しております。 この外部実行ファイルは3分くらい掛かる処理で、 WaitForExit() で結果を待たずに 次の画面(待機用画面)に遷移しています。 処理が終了したら、待機画面から結果画面へと遷移させたいのですが、 プロセスの完了と、その結果(戻り値)を、 Process.Startをコールした画面以外で受け取る事が出来るのでしょうか。 WaitForExitを使用するならば、 素直に終了を待ち、終了後にExitCodeを取得、 Ret = Process.Start() で戻り値も取得できましたが… WaitForExit( ) をしない場合、どのようにして取得できるのでしょうか。 http://dobon.net/vb/dotnet/process/openfile.html こちら等、Process.Start 非同期 などのキーワードで出てくるのは Processを実行した同画面内での待機のケースが多く、 今自分が遭遇しているケースに応用するには どうにも自分の理解が追いつけず質問いたします。 実行する画面でプロセスIDを取得し、セッションに持たせ、 終了を判断したい画面でプロセスIDを元にチェックをする… と言うことも考えてみましたが、プロセスIDを頼りに、 終了したプロセスの戻り値を突き止める方法も見つからず (発想自体が間違っているかもしれません) 皆様のお力を貸して頂けないでしょうか。何卒よろしくお願いします。

  • MediaPlayer10でエラーが出る

    MediaPlayer10でエラーが出ます。 wmvやaviを再生すると 「問題が発生したため、wmplayer.exeを終了します・・・」 が出てきます。 divXのほかXDiv,oggなどのcodecを後から入れたからだと思います。 divXは問題ありません。 wmvでもエラーになるのが気になりますが、MediaPlayerを再インストールしても 駄目でした。追加codecをいったん削除するにはどうしたらいいのでしょうか? アプリの追加削除にはありません。 確か管理ツールかなんかで現在インストールされているCodecの一覧が 表示できたと思うのですが。 クリックした瞬間エラーになるのと、数秒再生されてからエラーになる物があります。 他のマシンでは再生できるしCapPlayerとかでは再生もできます。 よってファイル自体は問題ないと思われます。

  • MediaPlayerの実行方法

    お世話になります。 Visual Studio 2005を用いてWinAPIの勉強をしています。 Win32 APIで WindowsMediaPlayerを起動するにはどうしたらいいのでしょうか? 例えば、メインウインドウを作成し、スタートボタンを作成して、 クリックすると指定しているファイルがWMPで再生する動作です。 Windowフォームでは、Process::Start("wmplayer.exe",ファイル名); を指定して動作しましたが、Win32アプリでは出来ません。 どうぞよろしくお願い致します。

  • VB.NETからPerlを呼び出す

    メール自動送信機能をPerlで作成しました。 (仮にhello.plとします)hello.plを「C:\」においています。 コマンドプロンプトから次のようにperlコマンドを実行してた場合、 メールが自動送信されたことは確認できています。 perl hello.pl 同じようにVB.NETから実行したいのですが、上手くいきません。 ソース記述は以下の通りです。 Dim p As System.Diagnostics.Process = _ System.Diagnostics.Process.Start("C:\hello.pl") p.WaitForExit() どなたか分かる方がいらしたら、教えてください。

  • mediaplayerでストリーミング画像をダウンロードできません

    mediaplayerでweb上の動画をストリーミングしたいのですが、コンテンツをクリックしてmediaplayer10を開くと「問題が発生しましたwmplayer.exeを終了します」のメッセージが表示されてしまいます。PCメーカーのサポートに聞いて対応したのですが、セキュリティ対策ソフトを外しても症状は同じなのでdiaplayerに問題が在ると言われました。どのように対応すれば良いかどなたかぜひご指導下さい。よろしくお願いします。

  • MediaPlayerのプロセスが消えない

    こんにちは。 いつからかははっきりしないのですが MediaPlayerで動画を1つ再生した後、続けて 他の動画ファイルをクリックしても再生されません。 タスクマネージャーでMediaPlayerのプロセスを 手動で終了させると次の動画ファイルが再生できます。 手動で消さなくても数分間放置しておくとプロセスが消えます。 他の動画再生ソフトだと動画ファイルを続けて 再生できます。(JetAudioなど) 何か解決策、原因、またはチェックするべき 設定など思いつくかた、教えていただけないでしょうか? よろしくお願いします。 OS:WindowsXP SP2 CPU:Pen4-3.0 Prescott メモリ:1G グラボ:WinFast A350XT MediaPlayer: Version 10.0

  • C#で別プロセスを起動

    C#で開発をしています。 デバックモードで別プロセスを起動したいのですが可能でしょうか? System.Diagnostics.Process.Startを使うと別のexeを起動することは できるようですが、デバックモードで呼び出すにはどうしたらいいのでしょうか? 教えてください。 よろしくお願いします。

  • wmplayer.exeが見つからない

    スタート -> プログラム にあったwmpがreal playerに変わってしまったので「タスクバーと[スタートメニュー]」で戻そうとしたら、wmplayer.exeがwmpのプログラムフォルダにありません。ファイル検索してもwmplayer.chmしかヒットしません。どこに隠れているんでしょう? wmpはちゃんと動いていて、起動中はプロセスのイメージ名としてwmplayer.exeが出てきます。(イメージ名と実際のファイル名とは別?) よろしくお願い致します。