こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MediaPlayerの実行方法

お世話になります。
Visual Studio 2005を用いてWinAPIの勉強をしています。

Win32 APIで WindowsMediaPlayerを起動するにはどうしたらいいのでしょうか?

例えば、メインウインドウを作成し、スタートボタンを作成して、
クリックすると指定しているファイルがWMPで再生する動作です。

Windowフォームでは、Process::Start("wmplayer.exe",ファイル名);
を指定して動作しましたが、Win32アプリでは出来ません。


どうぞよろしくお願い致します。

投稿日時 - 2007-07-23 18:20:02

QNo.3192915

困ってます

質問者が選んだベストアンサー

★アドバイス
・既に API の関数名が出ていますがもう少し補足します。
 API でプログラムを実行するには
 (1)WinExec()
 (2)ShellExecute()、ShellExecuteEx()
 (3)CreateProcess()
 の3種類あります。
 少なくも私はこの3つを知っています。
・(1)は最も手軽に利用できます。
 ただし Win16 の API であるためお勧めできません。
 いつ使えなくなるか分からないので。
・(2)は Win32 の API でお手軽に利用できるタイプです。
 WinExec() よりちょっと引数が多いですがこれならばプログラムだけではなく
 URLアドレス(http://~)を第3引数に指定するとブラウザを起動して Web サイトを開く。
 メールアドレス(mailto:~)を指定するとメーラーを起動してメールを送れるようになる。
 とても便利です。
・(3)も Win32 の API ですがちょっと使いこなすのに時間がかかりそうです。
 でもこの関数ならば WaitForSingleObject() などと組み合わせればプログラムが終了する
 まで制御が戻らない動作などが行えます。通常はプログラムを起動すると直ぐに呼び出し
 元に制御が返されます。→WinExec()、ShellExecute()など。

使い方(C言語):
char shell[] = "プログラム名";
char param[] = "引数文字列";
char work[] = "作業フォルダパス";

if ( (int)(INT64)ShellExecute(hWnd,TEXT("open"),shell,param,work,SW_SHOWNORMAL) < 32 ){
 /* エラー処理 */
}

その他:
・引数や作業フォルダパスが必要ない場合は NULL を指定します。
 また第2引数に TEXT("open") を指定するのと NULL を指定するのとで処理がちょっと違います。
 NULL の場合はショートカット(*.lnk)のファイルも正常に起動できます。
 TEXT("open")ではショートカット(*.lnk)ファイルではプログラムを起動できません。

参考文献(WinExec):
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdllpro/html/_win32_winexec.asp

参考文献(ShellExecute):
http://www.sm.rim.or.jp/~shishido/shelle.html
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpshell/html/_win32_shellexecute.asp

参考文献(CreateProcess):
http://www.sm.rim.or.jp/~shishido/cprocess.html
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdllpro/html/_win32_createprocess.asp

以上。

投稿日時 - 2007-07-24 07:30:02

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

.NET Framework じゃなくてWin32 APIね?

ShellExecute関数ってのがあるみたいですが、そういうことでしょうか?

http://www.winapi-database.com/Program/Shell/ShellExecute.html

投稿日時 - 2007-07-23 19:49:35

あなたにオススメの質問