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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1125
にこにこクライアント座標について教えてください。5解決


にこにこ

リンク

2011/11/25(Fri) 18:34:44|NO.43278

とあるアプリケーションをhsp上から操作してるのですが、
そのアプリケーションのクライアント座標(絶対座標)を指定してクリックしたいのですが、

ウィンドウハンドル値はfindwindowexで取得できていて、getclientrectでその子ウィンドウのサイズ
まで取得できています。

例 親ウィンドウの中の子ウィンドウでクラス名はStatic

このStaticの窓のx = 0:y =10の位置をクリックするみたいな感じにしたいのです。

どうしたらいいでしょうか?

出来ればmousiventじゃなくてsendmsg $F5で送信したいです。
お手数ですが宜しくお願いします。



この記事に返信する


Cookies

リンク

2011/11/26(Sat) 10:51:24|NO.43295

$F5ってことはBM_CLICKですか?
ということはクリックしたいのはボタンでしょうか。

窓のクリックならWM_LBUTTONDOWN と LBUTTONUPな気がします。

BM_CLICKならそのボタンのウィンドウハンドルまで取得しなきゃですし、
LBUTTONDOWN & UP ならlparamのほうで座標を指定できます。
lparamはクライアント座標なのでそこは心配いりません。



MillkeyWeler

リンク

2011/11/27(Sun) 05:13:14|NO.43317

ウインドウ座標系についての書き込みのみ


#uselib "user32.dll" #func GetWindowInfo "GetWindowInfo" int,var screen 0,800,600,0 dim window_info,127 // ←構造体の正確サイズ不明の為、座標情報が入る余裕のサイズを指定。 window_info(0) = 127 // 配列変数(0)に、構造体の最大格納サイズを代入(↑と同じサイズでOK) GetWindowInfo hwnd,window_info //←hwnd を調べたい ウィンドウハンドルへ変えてね。 mes "該当ウィンドウ領域左上座標 : X."+window_info(1)+" / Y."+window_info(2) mes "該当ウィンドウ領域右下座標 : X."+window_info(3)+" / Y."+window_info(4) mes "該当ウィンドウ領域全体サイズ : X."+(window_info(3)-window_info(1))+" / Y."+(window_info(4)-window_info(2)) mes "該当ウィンドウクライアント領域左上座標 : X."+window_info(5)+" / Y."+window_info(6) mes "該当ウィンドウクライアント領域右下座標 : X."+window_info(7)+" / Y."+window_info(8) mes "該当ウィンドウクライアント領域全体サイズ : X."+(window_info(7)-window_info(5))+" / Y."+(window_info(8)-window_info(6))

上記で正確な座標が取得できると思います。
sendmessage については、すでに理解してると思いますので、省きます。



にこにこ

リンク

2011/12/24(Sat) 12:23:13|NO.43909

返事遅くなってすみません、
書き込みしてくださった方ありがとうございます。

書き込みしていただいたのを参考に色々してみたのですが、
座標指定のやり方がいまいち分かりません。

Staticの子ウィンドウの窓の
x=0 y=10

の位置だったとしたら

lparam=(0,10)


sendmsg aa, $201,0 lparam
sendmsg aa, $202,0 lparam

みたいに送信すればいいのでしょうか?

お手数かけますがよろしくです。



Cookies

リンク

2011/12/24(Sat) 12:46:18|NO.43910

ちょくとさんのhttp://chokuto.ifdef.jp/urawaza/message/WM_LBUTTONDOWN.htmlのところは見たでしょうか。

xPos = lParam & 0xFFFF; // カーソルx座標
yPos = (lParam >> 16) & 0xFFFF; // カーソルy座標
です。
で、逆に代入するときは
lParam = (yPos << 16) | xPos
ってかんじでしょうね。
この解説はしたほうがいいのか・・・

ちなみにいっとくと、lParamっていう名前(大/小文字問わず)は
システム変数名として使われてるので、簡単には代入できないはずです。



にこにこ

リンク

2011/12/26(Mon) 21:08:31|NO.43943

解決しました。

ありがとうございました。



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