GOM PlayerをHSPで操作してみるサンプルです。当然ながらGomPlayerが必要です。インストールしてあるのに動かない場合はGomX.dllをregsvr32する必要あるかも?
GOM PlayerをHSPで操作してみるサンプルです。当然ながらGomPlayerが必要です。インストールしてあるのに動かない場合はGomX.dllをregsvr32する必要あるかも?
tt = "GOM PlayerをHSPで操作してみるサンプル"// GomXの設置axobj GomX, "{632CC9D6-5602-4854-AFD2-6EFC59177DE5}", 640, 480// イベントの登録comevent GomXEvent, GomX, "{46899D92-473E-413E-9F47-8D0765860AE9}", *event// プログラム情報のダイアログ表示;GomX->"AboutBox"// バージョン取得;dialog GomX("Version")// 表示スタイル; -mode:normal デフォルト、コントロールあり; -mode:nude コントロールなし;GomX("UiMode") = "-mode:nude"// 0 にすると右クリックメニューを無効にする;GomX("EnableContextMenu") = 0// 操作を有効にするかどうか? 0 だと操作できなくなる;GomX("Enabled") = 0// (詳細不明)メッセージを有効にするかどうか? デフォルト 0;GomX("EnableMessage") = 1// 開いたら自動再生するかどうか? 1 で自動再生GomX("AutoStart") = 1// レンダラーモード;0 = システム既定;1 = Overlay Mixer(指定しないとデフォはこちら?);2 = Video Renderer;3 = VMR7 Windowed mode;4 = VMR9 Windowed mode;5 = VMR7 Renderless mode;6 = VMR9 Renderless mode;7 = Enhanced Video RendererGomX("RenderMode") = 0// アスペクト比の維持 1だと無視する 再生中にやるとうまくいかない?;GomX("StretchToFit") = 1// ファイル名の指定(http、rtspとかでもOKみたい)dialog "*", 16if stat == 0 : endGomX("Url") = refstr// 用途不明;GomX("SubUrl") = "ファイルのパス"// ファイルの再生GomX->"play"// ファイルフォーマット取得;dialog GomX("GetMediaFormat") // GomX->"GetMediaFormat" を実行し comresで変数に返却// 停止;GomX->"stop"// 一時停止;GomX->"pause"// 再生速度 1.0 を基準とする;GomX("Rate") = 2.0 ; 2倍速で再生// ミュート設定 1 でミュートする;GomX("Mute") = 1// 左右スピーカーバランス? デフォルトが50;GomX("Balance") = 0// 音量 デフォルトが50 0~100 まで指定;GomX("Volume") = 50// フルスクリーンモード 1 でフルスクリーンになる;GomX("FullScreen") = 1// (用途不明) サブタイトルを有効にするかどうか?;GomX("EnableSubtitle") = 0// (用途不明) サブタイトルのサイズを指定?;GomX("SubtitleSize") = 0// (用途不明) サブタイトルのモードを指定?;GomX("SubtitleMode") = 0// (用途不明) ロゴの指定?;GomX("LogoUrl") = "画像ファイルのパス?"// (用途不明) スピーカーモード? スピーカーのチャンネル数と思われる;GomX("SpeakerMode") = 1// ビデオの幅を取得;dialog GomX("GetVideoWidth") // もしくは GomX->"GetVideoWidth" を実行し comresで変数に返却// ビデオの高さを取得;dialog GomX("GetVideoHeight") // もしくは GomX->"GetVideoHeight" を実行し comresで変数に返却// 10秒先送りする;GomX->"fastForward"// 10秒巻き戻す;GomX->"fastRewind"// 30秒の位置にシークする;GomX("CurrentPosition") = 30.0// 動画の静止画キャプチャを保存 保存するファイルのパスを指定// BMPとJPEG形式に対応している模様;GomX->"CapImageFile" "C:\\dump.jpg"// (キャプチャ関連のようだが用途不明)// AsyncCapture(BSTR sSrcPath,BSTR sDstPath, long dSec);GomX->"AsyncCapture" "入力パス?", "出力パス?", 0 // 整数値// (用途不明)コマンド?;GomX->"Command" "何が指定できるか不明"repeat// 現在時間を文字列で取得;GomX("CurrentPositionString")// 合計時間を文字列で取得;GomX("DurationString")// 現在時間を小数(秒)で取得;GomX("CurrentPosition")// 合計時間を小数(秒)で取得;GomX("Duration")// 再生状態を取得 4 = 再生中, 3 = 一時停止, 2 = 停止, 1 = 不明, 0 = クローズ状態;GomX("GetPlayState") // もしくは GomX->"GetPlayState" を実行し comresで変数に返却switch GomX("GetPlayState")case 0st = "クローズ" : swbreakcase 1st = "不明(1)" : swbreakcase 2st = "停止中" : swbreakcase 3st = "一時停止中" : swbreakcase 4st = "再生中" : swbreakdefaultst = "不明(それ以外)" : swbreakswendtitle tt + " "+ GomX("CurrentPositionString") + "/" + GomX("DurationString") + " " + stwait 12loopstop*event// イベントの処理dispid = comevdisp(GomXEvent)switch dispidcase 1 // ストリームが最後まで到達した場合 EndOfStream(long Result)dialog "最後まで再生したよ!"swbreakcase 2 // エラーが発生した GomxError(long ErrorCode)comevarg e, GomXEvent, 0, 0dialog "エラーコード: "+e+" のエラーが発生しました"swbreakcase 3 // プレイヤーの状態が変更された GomxState(long State)comevarg state, GomXEvent, 0, 0logmes str(state)swbreakdefaultswbreakswendreturn