实验环境:
1.windows 自带计算器
2.VB 6.0问题1:PostMessage模拟鼠标按键没反应。
问题2:PostMessage模拟键盘输入,在一次KEYDOWN + KEYUP ,计算器上会出现2个字母或数字。我是用windows自带的计算器测试的:
'hwd为计算器窗口句柄
Dim buttonhwd As Long
buttonhwd = FindWindowEx(hwd, 0, vbNullString, "1") '查找计算器1按钮的句柄
Dim x     As Long
Dim y     As Long
Dim parentRect As RECT
Dim childRect As RECTGetWindowRect hwd, parentRect
GetWindowRect buttonhwd, childRectx = (childRect.Left + childRect.Right - 2 * parentRect.Left) / 2
y = (childRect.Top + childRect.Bottom - 2 * parentRect.Top) / 2
SendClick buttonhwd, x, y   '执行到这里可以确定x,y的坐标是正确的了'发送1的按键信息,测试成功,但是按一次键(也就是KEYDOWN+KEYUP),计算器上会出现2个1
PostMessage(cwd, WM_KEYDOWN, 49, 0)
PostMessage(cwd, WM_KEYUP, 49, 0)

'发送按键信息发送成功,但计算器没有响应
'发送鼠标单击事件

Public Sub SendClick(hwd As Long, x As Long, y As Long)
Dim I As Long
Dim lParam As Long
lParam = y * 65535 + x + y
I = PostMessage(hwd, WM_LBUTTONDOWN, 0, lParam)
I = PostMessage(hwd, WM_LBUTTONUP, 0, lParam)
End Sub