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


hiromi  2004-11-24 01:10:02  No: 117747

どうも初めまして^^
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-24 01:56:22  No: 117748

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


ABC  2004-11-24 02:04:36  No: 117749

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

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

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


Say  2004-11-24 02:56:53  No: 117750

素直に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-24 03:33:40  No: 117751

みなさんありがとう^^

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

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

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

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


残念  2004-11-24 04:32:19  No: 117752

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加