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