dポイントプレゼントキャンペーン実施中!

現在、WinAPIを勉強しており、練習としてVBAを用いて、電卓アプリのボタンをクリックしようとしています。

キーを送るのではなく、クリックで行いたいたいと
考えています。

ボタンのハンドルを取得するところまではできましたが、sendMessageでクリックできず、EditBoxに数字が
入りません。

どのようにすればよいのかご教授ください。
よろしくお願い致します。

環境:
WinXP home、 Excel2002、Win付属アプリの電卓v5.1

---作成したプログラム----
'標準モジュールの中身
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long) As Long

Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202

Sub Main()
Dim lngWindWnd As Long 'ウィンドウハンドル
Dim ret As Long
Dim hCalc As Long

'アプリケーションタイトルより、ウィンドウハンドルを得ます
lngWindWnd = FindWindow(vbNullString, "電卓")

'8ボタンのハンドル(確実に取れていることを確認
hCalc = FindWindowEx(lngWindWnd, 0, "Button", "8")

ret = SetForegroundWindow(lngWindWnd)
ret = SendMessage(hCalc, WM_LBUTTONDOWN, 0, 0)
End Sub

A 回答 (11件中11~11件)

マウスのボタンを押して離した時点でクリックと認識されるのでは?



DOWN , UP の順でメッセージを送ってみました?

この回答への補足

早速のご回答ありがとうございます。

ret = SendMessage(hCalc, WM_LBUTTONDOWN, 0, 0)
ret = SendMessage(hCalc, WM_LBUTTONUP, 0, 0)

の順に送ってみましたが,電卓ウィンドウが前面に出てくるだけで,EditBoxに変化が起きませんでした。

また、ご教授いただければ幸いです。

補足日時:2004/06/19 16:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A