どうも初めまして^^
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のマウスクリックで実現したいのですが、
どこのやり方が間違っているのでしょうか?;;
はずしてるかもしれませんが、ウィンドウではなくボタンのハンドルに送らないと駄目なのでは?
ボタンのオーナーフォームに
lParam = [ボタンのウィンドウハンドル]
wParam = BN_CLICKED * &H10000 + [ボタンのコントロールID]
SendMessage Me.hWnd, WM_COMMAND, wParam, ByVal lParam
といった感じでクリックしたイベントを伝えてやればどうでしょう。
素直に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
みなさんありがとう^^
>zさん
ボタンに送らないとできないのでしょうか?
>ABCさん
lParamボタンのハンドル でしょうか?(それならわかります^^
wParamのボタンのコントロールIDということですが、
コントロールIDって何でしょう^^;
>Sayさん
これらをSendMessageと併用するということでしょうか?
mouse_eventをよく知らないので調べてみます^^;
こんな質問をしましたが、
最終的にはゲーム上でクリックをさせたいと考えています^^;
全然違う手法になっちゃうんでしょうか。。
>最終的にはゲーム上でクリックをさせたいと考えています^^;
>全然違う手法になっちゃうんでしょうか。。
その通りです。
最初から具体的な例題で質問しましょうね。
そのゲームソフトのボタンのウィンドウハンドルが取れると案外簡単
ですが。
ツイート | ![]() |