HSPのソフトを用いてGomPlayerを制御したいと考えて居ます。
具体的な制御内容ですが、タイトルにあるとおり、再生位置を10秒ほど進めたりしたいと
考えて居ます。
以前どなたかに教えて頂いて頂いたかと思うのですが、
確か、MSのSpy++?だったと思うのですがそれを用いてSendMessageのlparamを取得して
命令で送っていたと思います。
具体的なソースとして
#module // マルチディスプレイの ハンドルとRECT を取得 #uselib "kernel32.dll" #func VirtualProtect@_xdim "VirtualProtect" var,int,int,var #define global xdim(%1,%2) dim %1,%2: VirtualProtect@_xdim %1,%2*4,$40,AZSD@_xdim #uselib "user32.dll" #func EnumDisplayMonitors "EnumDisplayMonitors" sptr, sptr, sptr, int #deffunc GetDisplayMonitors var info dim info, 100 if ( func == 0 ) { xdim func, 14 func.0 = $10244c8b, $548b018b, $c06b0424, $04410314, $8b108956, $8b102454, $04708932 func.7 = $8904728b, $728b0870, $0c708908, $890c528b, $01ff1050, $5e40c033, $cc0010c2 } struct1 = 0, varptr(info) EnumDisplayMonitors 0, 0, varptr(func), varptr(struct1) if stat : return struct1 return -1 #global #define WM_COMMAND 0x111 // GomPlayer検索、移動用、ログファイル終了用 #uselib "user32.dll" #func global FindWindow "FindWindowExA" sptr,sptr,sptr,sptr #func global GetClassName "GetClassNameA" sptr,sptr,sptr #func SetForegroundWindow "SetForegroundWindow" sptr #func global MoveWindow "MoveWindow" sptr,sptr,sptr,sptr,sptr,sptr #func global SendMessage "SendMessageA" sptr,sptr,sptr,sptr // マルチモニターのサイズ、ID を取得 dim info, 100 dim disp,16,5 GetDisplayMonitors info : displays = stat // dim disp,16,5 // 先頭にて定義 repeat displays,1 c = (cnt-1)*5 disp(cnt,0) = cnt disp(cnt,1) = info(c+1) disp(cnt,2) = info(c+2) disp(cnt,3) = info(c+3) disp(cnt,4) = info(c+4) loop // disp(ID,1)変数を使ってソート repeat displays,1 _cnt = cnt repeat displays,1 if ( disp(_cnt,1) < disp(cnt,1) ) { tmp = disp(_cnt,0) : disp(_cnt,0) = disp(cnt,0) : disp(cnt,0) = tmp tmp = disp(_cnt,1) : disp(_cnt,1) = disp(cnt,1) : disp(cnt,1) = tmp tmp = disp(_cnt,2) : disp(_cnt,2) = disp(cnt,2) : disp(cnt,2) = tmp tmp = disp(_cnt,3) : disp(_cnt,3) = disp(cnt,3) : disp(cnt,3) = tmp tmp = disp(_cnt,4) : disp(_cnt,4) = disp(cnt,4) : disp(cnt,4) = tmp } loop loop hparent = 0 hwnd_target = 0 moniid = 2 // if ( eromode ) : moniid = 1 repeat //ウィンドウを検索 FindWindow hparent, hwnd_target, 0, 0 hwnd_target = stat if ( hwnd_target == 0 ) { // GomPlayerが起動していない場合 break } //クラス名を取得 sdim class, 1024 GetClassName hwnd_target, varptr(class), 1024 if ( instr(class,0,"GomPlayer") != -1 ) { // GomPlayerが起動している場合、指定モニターへ移動させる SendMessage hwnd_target,WM_COMMAND,32798,0 // サイズ100%に設定して移動させる MoveWindow hwnd_target,disp(moniid,1),disp(moniid,2),640,480,1 // 指定ウィンドウへ移動 SendMessage hwnd_target,WM_COMMAND,32716,0 // 全画面に設定して移動させる // GomPlayerの移動先とファイル検索システムのウィンドウが重なる場合、ファイル検索システムのウィンドウを移動させる if ( disp(moniid,1) <= ginfo_wx1 ) && ( disp(moniid,3) >= ginfo_wx1 ) && ( disp(moniid,2) <= ginfo_wy1 ) && ( disp(moniid,4) >= ginfo_wy1 ) { if ( moniid == 1 ) : moniid = 2 : else : moniid = 1 width ginfo_winx,ginfo_winy,disp(moniid,1)+(disp(moniid,3)-disp(moniid,1)-ginfo_winx)/2,disp(moniid,2)+(disp(moniid,4)-disp(moniid,2)-ginfo_winy)/2 SetForegroundWindow hwnd_target } } loop stop
このソースはマルチモニター環境において、モニターID2へGomPlayer本体を移動させるものです。
ここでお聞きしたいのが、
こちらの、lparamの数字ですが、先程書いたspy++?か何かを用いて32716という数字を探し出してきたと思うのですが、
SendMessage hwnd_target,WM_COMMAND,32716,0 // 全画面に設定して移動させる
10秒進める、遅れる、60秒進める、遅れる、300秒進める、遅れるときの数字を調べたいと思っています。この調べる方法分かる方いらっしゃいましたら教えて下さい。
よろしくお願い致します。