• ベストアンサー

MediaPlayerコントロールのイベントハンドラをJScriptで

JavaScriptの範疇でよいのか微妙な問題ですが MicrosoftのWindows Media Player OLE/ActiveXコントロール をJScript & IE で使用しています。 IDLにて定義されている dipsinterface _MediaPlayerEvents の PlayStateChange にハンドラを登録したいのですが,できません。 回答だけでなく,JScriptでは無理。VBScriptなら…等の情報でもありがたいです。 よろしくお願いします。 以下は,そのMedia Playerコントロールを使用したHTMLのコードです。

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

  • ベストアンサー
回答No.1

そんなことができるんだろうかと思いつつMSDNを探したら(英語ですが)サンプルページがありました。デモも動きます。私には解説はできませんが参考になれば。

参考URL:
http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/downloads/samples/internet/imedia/netshow/events2/
onosuke
質問者

お礼

情報ありがとうございます。 上が質問で切れてしまった,わたしの作成したHTMLコードです。 # 質問する側にとっては,なかなか制限が多いですね,ココ。

onosuke
質問者

補足

<HTML> <script language="JavaScript"> <!-- var wr=document.write; function get_index(obj,separater){ str=""; for(i in obj){ str+=i+separater; } return str; } function make_option(array){ var str=""; for(i in array){ str+='<OPTION value="'+i+'">'+i+'</OPTION>\n'; } return str; } var rateChange=new Array(); rateChangeDefaultIndex=2; rateChangefunc=function (base,xxx){ mplayer.Rate=base*Math.pow(1.1,xxx); it_dispRate.value=mplayer.Rate; } rateChange["標準"]=function (obj){ obj[rateChangeDefaultIndex].selected=true; rateChangefunc(1,0); } rateChange["<<"]=function (obj){ obj[rateChangeDefaultIndex].selected=true; rateChangefunc(mplayer.Rate,-1); } rateChange["--"]=function (obj){ } rateChange[">>"]=function (obj){ obj[rateChangeDefaultIndex].selected=true; rateChangefunc(mplayer.Rate,+1); } var dispmode=new Array(); dispmode["時間表示"]=function (){ mplayer.DisplayMode=0; }; dispmode["フレーム表示"]=function (){ mplayer.DisplayMode=1; }; --> </script> <body> <OBJECT ID="mplayer" CLASSID="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" TYPE="application/x-oleobject"><!-- IMediaPlayerObject --> </OBJECT><br> <input id=if_file type=file onChange="FileOpen(if_file.value)"><br> <select id=s_dispmode onChange="dispmode[s_dispmode.value]()"> <script language="JavaScript"><!-- wr( make_option(dispmode) ); s_dispmode[1].selected=true; dispmode[s_dispmode[1].value](); --></script> </select> <input type=button value="<<" onClick='rateChange["<<"](s_rateChange)'> <select id=s_rateChange onChange="rateChange[s_rateChange.value](s_rateChange)"> <script language="JavaScript"><!-- wr( make_option(rateChange) ); s_rateChange[rateChangeDefaultIndex].selected=true; --></script> </select> <input type=button value=">>" onClick='rateChange[">>"](s_rateChange)'> <input type=text id=it_dispRate value=1 size=3 readonly>倍速 <br> <pre> 2つのボタン,"<<" と ">>"の間にあるBoxはホイールマウスでクリクリすると,エエ感じです。 フレーム数表示は対応codecでないと時間表示になります。 再生速度は,停止すると1倍速にリセットされます。 再生速度の上限,下限はcodecにより異なります。 </pre> <script language="JavaScript"> <!-- with( mplayer ){ PlayCount=0; AutoRewind=true; ShowStatusBar=true; SendPlayStateChangeEvents=true; } function FileOpen(_name){ //mplayer.Rate=2; mplayer.FileName=_name; //mplayer.SelectionStart=60; //mplayer.EnablePositionControls=false; //mplayer.EnableTracker=false; it_dispRate.value=mplayer.Rate; s_rateChange.focus(); } mplayer.PlayStateChanged=function (old_state,new_state){ alert("change"); it_dispRate.value=mplayer.Rate; } --> </script> </body> </HTML>

その他の回答 (1)

回答No.2

すみません、先ほどのサンプルページですが、ネスケ用にいろいろ小細工してて実はIE用には次のコードしか必要無いようです(^^;) <SCRIPT FOR="MediaPlayerのOBJECT ID" EVENT="PlayStateChange(oldState,newState)" LANGUAGE="Jscript"> switch(newState) { case 0: //STOPの時の処理 break; case 1: //PAUSEの時の処理 break; case 2: //PLAYの時の処理 break; } } </SCRIPT>

onosuke
質問者

補足

あ,わざわざ,ありがとうございます。 わたし自身は,英語の解説も苦じゃない体質なので,先ほどのURLの情報でばっちりできました。 >>ネスケ用にいろいろ小細工してて というのは,逆に「ネスケでも動くのか!!」という感動(?)と共に手元のPCにもネスケをインストールかましている次第です~。勉強になるなぁ。 # ふぅ,No.2を書き込んでいただいたおかげで,まともなお礼書くことが出来ました。(^^;;

関連するQ&A

  • windowsというクラスをダミーでJScriptで記述できないものでしょうか?

    HTMLのjavascriptのファイルtest.jsを JScriptでコンパイルしたところ、 window.document..... でエラーになります。 HTMLだから正しく動いていたと思いますが、 windowsというクラスをダミーでJScriptで記述できないものでしょうか? もしくは、windowというオブジェクトが定義されていないと判定する 方法が知りたいです。 Javascript JScript VBScript WSH ... それぞれ別物でしょうか?

  • ActiveXコントロールとは?

    あるとこのHTMLのメールを開く時に Microsoft Internet Explorer 現在のセキュリティの設定では、このページのActiveXコントロールは実行できません。そのため、このページを正確に表示されない可能性があります。 と表示されます。 これを解消するにはどうすれば良いのでしょうか? 又、ActiveXコントロールとは何でしょうか?

  • BarCode Controlに値を設定出来ない

    Microsoft Access2000で、ActiveXコントロールのMicrosoft BarCode Controlをレポートフォームに貼り付け、Valueプロパティに値を設定しようとしたところ、 「連結または非連結フレームはOLEオブジェクトがありません」 というメッセージが出てエラーになってしまいます。 これはどういう意味なのでしょうか? あるテーブルのバーコード(JAN13)のフィールドからデータを持ってきて、変数にいれて、その変数を使用してBarCodeコントロールに値を設定したいのですが、どういうふうにコードを書けばよいのでしょうか? よろしくお願いします。

  • ActiveXコントロールCalendarの日付自動取得について

    お世話になります。 現在Microsoft Development Environmentを使用してプログラミングをしているのですが、ActiveXコントロールにあるCalendarについて質問したいことがあります。 このCalendarではプロパティをいじるだけで自動的に今日の日付を初期値にすることはできないのでしょうか? VBScriptあたりでプログラムを組まないとできないのでしょうか? よろしくお願いします。

  • JScriptでExcelの全シートにアクセスする方法

    JScriptからWSHを使って、Excelファイル内の全ワークシートにアクセスしようと試みています。たとえば、 var excel=WScript.CreateObject("Excel.Application"); excel.Visible=false; book=excel.Application.Workbooks.Open(ファイル名); for(var sheet in book.Sheets) { WScript.Echo(sheet.Name); } と書いてみましたが、forループに入りません。 VBScriptでは上記のようなコードでOKらしいのですが、JScriptではNGなのでしょうか? また、Office製品のActiveXオブジェクト(というのかどうかよくわからないのですが)を詳しく紹介しているサイトや書籍などをご存知でしたら教えてください。 MicrosoftのサイトにはTIPS程度しか載っていないので、独習できない状況です。

  • Microsoft Outlook ○○○○

    オフィス2007を使用しています。 アクセスとアウトルックを連携させたくて色々試しているのですが分からないことがあるので教えてください。 フォームを設置してデザインタブ→ActiveX コントロールでMicrosoft Outlook ○○○○と言うものがいくつかありますが、 それを選択してフォームに置こうとすると 「OLEサーバーが登録されていません。OLEサーバーを再セットアップしてください。」となってしまいます。 「Microsoft Outlook View Control」はフォームに設置することはできるのですが フォームビューにすると「このコントロールにはオブジェクトがありません」になってしまいます。 具体的に何がしたいと言うのはないのですが アクセスとアウトルックでどのような連携が出来るのかを知りたいので色々試しています。 しかし、私の環境ではアクセスにActiveX コントロールでアウトルックのコントロールを置くことはできないのでしょうか?

  • このページの動画を再生できません

    http://www.tuukin.com/contents2/top.php URLにクリックで動画を見ることができるみたいですが、新しいウィンドウが開いてそこにWindows Media Playerの画面が表示されて一端再生ボタンが押された状態になるもののすぐに止まってしまいます。 このページに書いている必要ソフトウェア ・Windows Media Player 9 以上 ・Microsoft Internet Explorer 6.0以上のブラウザ ・JavaScript、Cookie、ActiveXコントロールの設定をON に設定してください。 Windows Media Playerは最新版でMicrosoft Internet Explorer 6.0以上です。 JavaScript、Cookie、ActiveXコントロールの設定をONというのがわからないのですが、特に今までエクスプローラの設定をいじったことはないです。デフォのままだと思うのですが、なにか変えないといけないところがあるということでしょうか? セキュリティソフトはオフでも試してみましたが同じ症状になってしまいます。 アドバイスをよろしくお願い致します。

  • ActiVexコントロールが使えなくなりました。

    エクセルでマクロを利用していたのですが、Activexコントロールのボタンを 貼り付けようとすると、「オブジェクトを貼り付けられません。」というメッセージ が出ます。すでに貼り付けていたボタンも、クリックしようとすると太いクロスが出 て、機能しなくなりました。 原因と対処法を教えてください。ちなみに、使用しているエクセルは、Microsoft Excel 2010 です。

  • ActiveXコントロールをインストールできません!

    ActiveXコントロールをインストールできません! 長文失礼いたします。パソコン素人で、何がなんだかわからず非常に困っています。 win xp sp3のパソコンで、windows updateにしたがってie8をインストールした直後なのですが、Windows Updateへアクセスしようとしたら、 「Web サイトの表示に必要な ActiveX コントロールをインストールします このコントロールを使用しないと、お使いのコンピュータで Web サイトが正しく表示されません。インストールするには、次の手順を実行してください。 1. Internet Explorer の情報バーを右クリックします。情報バーは、アドレス バーのすぐ下にあります。 2. ショートカット メニューの [ActiveX コントロールのインストール] をクリックします。 3. [セキュリティ警告] ダイアログ ボックスの [インストール] をクリックします。」 と表示されたのですが、情報バーには 「アドオンを無効にした状態でInternet Explorerを実行中です。アドオンを管理、無効化、または削除するには、ここをクリックしてください。」 と表示されています。 素人なりに、いくつかのサイトから得た情報を元に以下の作業を行ってみました。 インターネットオプションのセキュリティ設定にて、 ActiveXコントロールとプラインの実行 >有効にする(元から) スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行 >有効にする(無効にするから変更) スクリプトを実行しても安全だとマークされているActiveXコントロールのスクリプトの実行 >有効にする(元から) 署名されたActiveXコントロールのダウンロード >有効にする(ダイアログを表示するから変更) 未署名のActiveXコントロールのダウンロード >有効にする(無効にするから変更) 信頼済みサイトに http://windowsupdate.microsoft.com http://www.update.microsoft.com を追加 一時ファイル等の削除 プライバシーのポップアップブロックのチェックボックスがオフになっていることの確認 しかし何度windows updateにアクセスしてもインストール画面へ行けません。 一体何をどうしたらActiveXコントロールをインストールできるのでしょうか?このままだとAdobe Flash Player等も使えそうにありません。

  • ActiveXコントロールを使用できる帳票アプリは?

    帳票出力アプリで悩んでいます。 たくさんの外字を画面表示するために、G2000というパッケージを使用しました。帳票を出力するにあたり、調べていましたが、当方が使用している「クリスタルレポート」には、ActiveXコントロールを配置することができず、外字を出力することができません。 (G2000は、ActiveXコントロールとして外字を出力する機能をサポートしています) クリスタルレポートにこだわりませんが、帳票アプリでActiveXコントロールを使用できる製品はありませんか? ※単独アプリとします。Microsoft Accessで実現できることはわかっているのですが、帳票アプリとして導入しないといけないので、よろしくお願いします。

専門家に質問してみよう