Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName 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)
Private Declare Function PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Private Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds 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 SetActiveWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'API引用说明
Private Sub Command1_Click()
x = 221
y = 280
'221,280 为登录按钮在该窗体中的坐标
Dim lParam As Long
lParam = x + y * &H10000 '组合xy坐标
hw = FindWindow("MSPaintApp", "未命名 - 画图")'获取画图工具句柄
hw = FindWindowEx(hw, 0, "Afx:1000000:8", vbNullString)'这个是画图工具画画的那个区域的句柄....
Call SetActiveWindow(hw)
Call SetForegroundWindow(hw)
'Call PostMessage(hw, WM_LBUTTONDOWN, 0&, (x * 65536) + y)
'Call PostMessage(hw, WM_LBUTTONUP, 0&, (x * 65536) + y)
Call SendMessage(hw, WM_LBUTTONDOWN, 0, lParam)
Call SendMessage(hw, WM_LBUTTONUP, 0, lParam)
'Call SendMessage(hw, WM_LBUTTONDOWN, 0, &H11800DD)
'Call SendMessage(hw, WM_LBUTTONUP, 0, &H11800DD)
End Sub
以前语句检查了N次,没错的。就连鼠标按下和释放我都用&H201和&H202都代替试过,他就是没有预期的效果,本身他应该就在画板上面画画的...当时我是选了喷枪的功能,这样的话,左键如果点击就会在画板产生一个大黑点,实际上却没。用汇编坐标使用011800DDh,亲测可用!亲们,不用讲mouse_event这之类的,早就会了....我只是想使用sendemessage达到这个效果,请不要扯其他函数。谢谢,跪求有能力者讲解原因。。。。
Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Private Declare Function PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Private Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds 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 SetActiveWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'API引用说明
Private Sub Command1_Click()
x = 221
y = 280
'221,280 为登录按钮在该窗体中的坐标
Dim lParam As Long
lParam = x + y * &H10000 '组合xy坐标
hw = FindWindow("MSPaintApp", "未命名 - 画图")'获取画图工具句柄
hw = FindWindowEx(hw, 0, "Afx:1000000:8", vbNullString)'这个是画图工具画画的那个区域的句柄....
Call SetActiveWindow(hw)
Call SetForegroundWindow(hw)
'Call PostMessage(hw, WM_LBUTTONDOWN, 0&, (x * 65536) + y)
'Call PostMessage(hw, WM_LBUTTONUP, 0&, (x * 65536) + y)
Call SendMessage(hw, WM_LBUTTONDOWN, 0, lParam)
Call SendMessage(hw, WM_LBUTTONUP, 0, lParam)
'Call SendMessage(hw, WM_LBUTTONDOWN, 0, &H11800DD)
'Call SendMessage(hw, WM_LBUTTONUP, 0, &H11800DD)
End Sub
以前语句检查了N次,没错的。就连鼠标按下和释放我都用&H201和&H202都代替试过,他就是没有预期的效果,本身他应该就在画板上面画画的...当时我是选了喷枪的功能,这样的话,左键如果点击就会在画板产生一个大黑点,实际上却没。用汇编坐标使用011800DDh,亲测可用!亲们,不用讲mouse_event这之类的,早就会了....我只是想使用sendemessage达到这个效果,请不要扯其他函数。谢谢,跪求有能力者讲解原因。。。。