SendMessageで特定ウィンドウの座標をクリックするには?


hiromi  2004-11-23 16:10:02  No: 117747  IP: [192.*.*.*]

どうも初めまして^^
VB6.0で作成したフォームに、コマンドボタンを一つ配置します。
その後、
SendMessage Me.hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(100, 100)
SendMessage Me.hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(100, 100)

*Me.hWndはフォームのハンドル
*WM_LBUTTONDOWN = &H201
*WM_LBUTTONUP = &H202
*MK_LBUTTON = &H1
*MAKELPARAM = CLng(b) * (2 ^ 16) Or CLng(a)

のようにしているのですが。。ボタンを押してくれません。。
SendMessageのマウスクリックで実現したいのですが、
どこのやり方が間違っているのでしょうか?;;

編集 削除
z  2004-11-23 16:56:22  No: 117748  IP: [192.*.*.*]

はずしてるかもしれませんが、ウィンドウではなくボタンのハンドルに送らないと駄目なのでは?

編集 削除
ABC  2004-11-23 17:04:36  No: 117749  IP: [192.*.*.*]

ボタンのオーナーフォームに

  lParam = [ボタンのウィンドウハンドル]
  wParam = BN_CLICKED * &H10000 + [ボタンのコントロールID]
  SendMessage Me.hWnd, WM_COMMAND, wParam, ByVal lParam

といった感じでクリックしたイベントを伝えてやればどうでしょう。

編集 削除
Say  2004-11-23 17:56:53  No: 117750  IP: [192.*.*.*]

素直にmouse_event使うとか。

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    mouse_event MOUSEEVENTF_LEFTUP, 0&, 0&, 0&, 0&
End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&
End Sub

編集 削除
hiromi  2004-11-23 18:33:40  No: 117751  IP: [192.*.*.*]

みなさんありがとう^^

>zさん
ボタンに送らないとできないのでしょうか?

>ABCさん
lParamボタンのハンドル  でしょうか?(それならわかります^^
wParamのボタンのコントロールIDということですが、
コントロールIDって何でしょう^^;

>Sayさん
これらをSendMessageと併用するということでしょうか?
mouse_eventをよく知らないので調べてみます^^;

こんな質問をしましたが、
最終的にはゲーム上でクリックをさせたいと考えています^^;
全然違う手法になっちゃうんでしょうか。。

編集 削除
残念  2004-11-23 19:32:19  No: 117752  IP: [192.*.*.*]

>最終的にはゲーム上でクリックをさせたいと考えています^^;
>全然違う手法になっちゃうんでしょうか。。

その通りです。
最初から具体的な例題で質問しましょうね。
そのゲームソフトのボタンのウィンドウハンドルが取れると案外簡単
ですが。

編集 削除