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 Renderer GomX("RenderMode") = 0 // アスペクト比の維持 1だと無視する 再生中にやるとうまくいかない? ;GomX("StretchToFit") = 1 // ファイル名の指定(http、rtspとかでもOKみたい) dialog "*", 16 if stat == 0 : end GomX("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 0 st = "クローズ" : swbreak case 1 st = "不明(1)" : swbreak case 2 st = "停止中" : swbreak case 3 st = "一時停止中" : swbreak case 4 st = "再生中" : swbreak default st = "不明(それ以外)" : swbreak swend title tt + " "+ GomX("CurrentPositionString") + "/" + GomX("DurationString") + " " + st wait 12 loop stop *event // イベントの処理 dispid = comevdisp(GomXEvent) switch dispid case 1 // ストリームが最後まで到達した場合 EndOfStream(long Result) dialog "最後まで再生したよ!" swbreak case 2 // エラーが発生した GomxError(long ErrorCode) comevarg e, GomXEvent, 0, 0 dialog "エラーコード: "+e+" のエラーが発生しました" swbreak case 3 // プレイヤーの状態が変更された GomxState(long State) comevarg state, GomXEvent, 0, 0 logmes str(state) swbreak default swbreak swend return