HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0917
はりおGomPlayerの再生位置の変更をHSPにて制御したい8解決


はりお

リンク

2020/9/17(Thu) 09:20:48|NO.91385

お世話になります。
以前、こちらにて教えて頂いたこと、感謝申し上げます。
http://hsp.tv/play/pforum.php?mode=all&num=90990

こちらにて、spy++によって、パラメーター値を取得して、現在位置から10秒、60秒
移動することは出来るのですが、例えば、01:15:33.180のように、指定された位置に
移動することが出来ません。移動用のウィンドウを出すことは出来そう(?)ですが、
ウィンドウを出すことが目的では無く、指定された位置へ移動させたいと思っています。
その為に、最初に提示しましたページのようにSendMessageを使って実装することは出来ますか

よろしくお願い致します。



この記事に返信する


はりお

リンク

2020/9/17(Thu) 09:27:51|NO.91386

あと、すみません、もしこれが可能だとすれば、ファイルを開くから、
ファイルを指定して開くことも出来るでしょうか?

追加となってしまって申し訳ありませんがこちらの件もよろしくお願い致します。



kanamaru

リンク

2020/9/17(Thu) 12:50:43|NO.91387

試しに調べた感じファイルを開くのは結構簡単そうです。
http://bttb.s1.valueserver.jp/wordpress/blog/2017/10/05/python%E3%81%A7%E5%A4%96%E9%83%A8%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8Bwm_command/
上記URLはpythonですが、上記に書かれてる方法で調べた方法で特定したIDを取得してしまえば
10秒進めたりするのと同じようにできる可能性はあると思います。
メニューバーを操作できればたぶんいい感じにダイアログが開いて後はダイアログを自分で操作すればできるはず。
(一応聞きたいんですけどもしかしてファイルパス指定して開きたいんですか?
だったらダイアログを同じように操作するのは困難でしょうしウィンドウメッセージ送って終了させてから
コマンドライン引数にパス指定して開きなおせばいいと思います。
もっといい方法があるかもしれないですが)
詳しくないけど、曲の任意の位置に変更するのは調べても出てきませんでした。
多分スライダーを変更すればいいとは思いますが。
試しにspy++で見張ってみてはどうでしょう?
その時に、スライダーを左右に移動させるのではなく、
任意の位置をクリックして移動する方法を使えばたぶん任意の位置に変更するための情報が手に入ると思います。
GomPlayerを使ったことはないのでわからないですがたぶんスライダーの上でマウスを動かせば
画面のどっかに移動先の時間出てるでしょうからその時間を自分で決めた時間にして変更する。
で、spy++に表示されてる結果の中からさっき指定した時間を秒に変換した結果がどこかに見つかると思う。
もしかしたらミリ秒かもしれないけど。
あくまでも可能性の話ですが。できなかったらすいません。



はりお

リンク

2020/9/17(Thu) 19:35:15|NO.91391

kanamaru さま

返信ありがとうございます。

#define WM_COMMAND 0x111 hwnd_target = 0x0000000; // GomPlayerのハンドル button gosub "Back", *gomback; stop; *gomback sendmsg hwnd_target, WM_COMMAND, 33498, 0; return;


この方法にて移動先の時間を指定するダイアログを表示することは出来ました。
しかしながら、このダイヤログを表示せず出来れば希望する時間へシークしたいです。
そのような方法がありましたら是非ともご教授願います。

よろしくお願い致します。



kanamaru

リンク

2020/9/17(Thu) 20:29:00|NO.91392

あれ?GomPlayerって再生してる時の画面の下の方に
マウスで左右に動かして再生位置変えるやつないんですか?
僕の記憶が確かならたぶん大学に入ってたやつだと思うんですが、
確かあったはず。
winapiだとトラックバーっていうらしいです。
ダイアログ出して変更するソフトだったのですか?
もしトラックバーないならその表示したダイアログのウィンドウハンドルを取得して
ダイアログにある操作対象の物(時間で指定なら入力ボックスとボタンかな?)
のウィンドウハンドルを取得してで、sendmsg使えばいいと思います。
で、もしトラックバーあるなら今度はスライダーのウィンドウハンドルを取得して、
同じくsendmsgで操作できるはず。
TBM_GETTHUMBLENGTHでトラックバー
の長さを取得して、
TBM_SETPOSで現在位置を変更するらしいですね。
(http://www-higashi.ist.osaka-u.ac.jp/~k-maeda/vcpp/sec8-3slider.html)
長さを取得するのはトラックバーの長さが曲の長さとは限らないからです。
もしトラックバーの長さが固定値だったら
移動させたい位置×わかった固定値÷曲の長さで指定する値がわかります。
問題は曲の長さをどうやって手に入れるかだけど…。
トラックバーの長さが曲の長さ(多分単位は秒)だったら
そのまま移動させたい位置を秒に変換して指定すればいい。
一応補足しておくとトラックバーを変更すれば
トラックバーが変更されたときのウィンドウメッセージが発生して
曲の位置を変えてくれるはず。



はりお

リンク

2020/10/5(Mon) 21:14:41|NO.91547

kanamaru さま

返信ありがとうございます、大変遅くなってしまいすみませんでした。

spy++をGomplayerの時間バーのあたりにターゲットをおいてもうまく命令を取得出来ず
全体をターゲットとし、メッセージを取得しても、それらしいものを見付けることは出来ません
でした。
もしかしたら、この手のコントロールは出来ないのでしょうか・・・?

もし、可能でしたらサンプルの提示して頂けると大変有り難いです、よろしく
お願い致します。



kanamaru

リンク

2020/10/5(Mon) 22:37:04|NO.91549

サンプルと言われてもspy++が検出できないんだったら
打つ手なしなので…。
時間バー、もしかしてオーナードローじゃなくて独自コントロールなのかな?
だとしたらメッセージの検出方式では難しそう。(多分できない)
なので他の人でだれかいい方法思いついたら教えてあげてください。



あらや

リンク

2020/10/6(Tue) 04:15:56|NO.91552

普通に考えると出来ないのではないでしょうか。

時間を指定するにはまず再生中のメディアの全体の長さが必要ですし
現在の再生位置(時間)も知る必要がありますが、
それらの情報をプレーヤー側が外部に提供するというのは
ある意味で「無駄な処理」になるかと思います。

停止や10秒進むなど、ショートカットキーが絡む操作は
メッセージを利用しているようですが、
時間管理は内部的な処理になってるようですね。

やるとしたら時間指定ダイアログに仮想キー入力などで時間を変更するか
マウス入力を偽装してシークバー(?)を操作するくらいしか無いかと思います。



はりお

リンク

2020/10/7(Wed) 20:56:04|NO.91558

みなさま

ありがとうございます。コマンドラインでいろいろとやってみたのですがやっぱり無理だという
事が分かりました、実装は諦めようと思います。
ありがとうございました!



ONION software Copyright 1997-2023(c) All rights reserved.