IShockwaveFlash
IE用のFlashPlayerプラグインをインストールすると、ActiveXコントロール版のFlashPlayerがインストールされます。
IEはActiveXによる拡張の仕組みを用いてFlashに対応します。
それはさておき、ActiveXコントロールということは、これを拝借して自作のソフトウェアへの貼り付けが可能?
憧れのFlashを手の内で再生できてしまうのか?
このようなことを考えてしまったなら最後、試さずにはいられない。
ひっっっさしぶりにVC++を起動してごりごりコードを書き始める。
ProgIDが“ShockwaveFlash.ShockwaveFlash”のコントロールを作る。
COMインターフェース名は“IShockwaveFlash”。
こいつのラッパをATL任せで作って、ああして、こうして。
あとは、ウィンドウのサイズ変更で中身も伸び縮みするように工夫。
結局、MFCの雛型から追加したコードは20行程度か?
これで動いたら驚くほど拍子抜けだよなぁ。
とにかく、ビルド&ラン。
・・・動いた。
動作の様子は右上の画像。
(注: ピカチュウは関係ありません)
いくらなんでも簡単すぎ!!
はてさてそうですか。
あとは、ライセンスの問題ですね。
つまり、こうして作られたソフトウェアを世に出してもいいのかどうか。
確認したところ特に問題はなさそうです。
もちろん、配布パッケージにFlashPlayerを含めてはいけません。
別途DLしていただく形式になるでしょう。
この後さらに、一切のコードを書かずにFlashを貼り付ける方法が発覚。
しかも、その方法だとソフトウェアの中にFlashのファイルを埋め込むこともでき、まさに至れり尽くせり。
さて、できることがわかった以上は、使ってみたくなるのが人のサガ。
調子に乗ってグッズ制作なんかやりたいなぁ。
とはいっても、本件でできることといえばスクリーンセーバくらいですけど。
恐ろしく簡単に作れてしまうのでお手軽ですね。
実は探せばswfからscrへ変換する類いのツールは結構あるのですが、どれもいまひとつ、的を射たものが見つからない。
なので、この際ですからこの手には頼らずに作ってしまいましょう。
以上、某人宛の業務連絡でした。
2003年 10月 11日
[この記事のURL]
[コメント(4件)]
初めまして、TEAと申します。swfの再生について質問させて頂きたくカキコさせてもらいました。私はフリーソフトでゲームを作成し公開しているのですが、ゲームの内部でswfファイルを再生したいとおもっています。そこで、VC++でのswfの再生方法を教えていただきたいのですが、御願いできますでしょうか。出来れば再生部分とコントロールを作る部分を詳しく御願いしたいのです。教えていただければ助かります。では、失礼します。
TEA |
2004/10/06 00:58
はじめまして。
ゲームの内部でswfファイルを再生したいとおもっています。そこで、VC++でのswfの再生方法を教えていただきたいのですが、
前置きですが、当方、MFCを使用した方法しかわかりません。DirectX支配下での使用を想定でしたらご期待に添えかねます。ご了承ください。いかんせん、ATLはさっぱりなんで、、、(汗
VC++で[表示]>[ClassWizard]>[クラスの追加]>[タイプライブラリから]を選択。ファイル選択が開くので、C:\WINNT\system32\Macromed\Flash\Flash.ocx(Win2kの場合)を選択。その後のダイアログも[OK]で良いです。Flashを制御するクラスが作成されます。
長期なスコープ(ウィンドウのクラス等)でFlashオブジェクトを宣言。
CWnd swfctrl;
IShockwaveFlash swf;
適当なタイミング(ウィンドウのOnCreate等)でコントロールを作成。
IDispatch *pdisp;
swfctrl.CreateControl("ShockwaveFlash.ShockwaveFlash",
NULL,WS_VISIBLE,CRect(x,y,w,h),pParentWnd,nID);
swfctrl.GetControlUnknown()->
QueryInterface(IID_IDispatch,(void**)&pdisp);
swf.AttachDispatch(pdisp);
swf.SetMovie("file:///d:/foo/bar.swf"); // フルパスで
MFCなら以上のような感じですが、先にも述べた通り、ゲームとなると難しそうです・・・
Y.Kumagai |
2004/10/06 11:02
早速のお返事ありがとうございます。試してみたところMFCばっちり動くようです(終了時にエラーがまだでますが)。後はがんばって通常のアプリでも動くように改造してみます(でもCreateControlがMFCにしかないようでむりかも)。では、失礼します。
TEA |
2004/10/06 20:52
試してみたところMFCばっちり動くようです。後はがんばって通常のアプリでも動くように改造してみます。
何かわかればご教授い頂けると嬉しいです。
Y.Kumagai |
2004/10/08 16:56