标题:如何实现vb 模拟鼠标点击其他应用程序内的命令按键
取消只看楼主
yjz2022
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2022-4-27
结帖率:50%
已结贴  问题点数:20 回复次数:7 
如何实现vb 模拟鼠标点击其他应用程序内的命令按键
我们的设备需要和一台老的设备联机工作,老设备没有技术支持,我需要在老设备的电脑上装一个软件(用VB做),需要该软件能实现按老设备软件上的一些按键的功能,用以下的代码(把以下代码复制到VB的一个窗体内,并建两个命令按键和两个文本控件)给text1和text2中填数据可以模拟鼠标移动到屏幕任何位置(包括老设备软件按键的位置),但只能移动到该位置不能实现按下按键的功能,不过如果改text1和text2的数值到下述command2的位置(vb程序窗口内的按键)就可以,也就是只能模拟按下自己的按键,不能其他应用内的按键,求大师指点,非常感谢。


Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4

Private sub command1
SetCursorPos Val(Text1.Text), Val(Text2.Text)
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
end sub
Private sub command2
msgbox"模拟鼠标按键"
end sub



[此贴子已经被作者于2022-5-16 10:12编辑过]

搜索更多相关主题的帖子: vb ByVal 按键 Private Long 
2022-05-16 10:10
yjz2022
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2022-4-27
得分:0 
回复 2楼 风吹过b
不知道怎么弄,您能说的再详细点不,有没有参考代码给我参考下,谢谢!
2022-05-16 10:19
yjz2022
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2022-4-27
得分:0 
回复 楼主 yjz2022
网上都说按我上面的代码就能实现,为什么我测试就只能再VB的应用内实现,离开VB到其他应用就不行。
2022-05-16 10:38
yjz2022
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2022-4-27
得分:0 
回复 4楼 风吹过b
我的软件里还要用串口,图像比对等其他功能,所以要把模拟按键的功能植入到我的工程里才可以
2022-05-16 10:41
yjz2022
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2022-4-27
得分:0 
回复 4楼 风吹过b
我大概明白你的意思了,你是说用按键精灵录制,就可以间接得到VB源码,然后再植入到我的工程里,是这样吗?谢谢!
2022-05-16 10:44
yjz2022
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2022-4-27
得分:0 
回复 7楼 yjz2022
Private Sub Command4_Click()
MoveTo 971, 429
MoveTo 115, 128
Delay 15350
LeftDoubleClick 1
MoveTo 955, 557
Delay 10474
LeftClick 1
End Sub

这个是录制了一个鼠标点击的操作,在VB里无法运行,MoveTo函数没有定义,有这个API吗?
2022-05-16 11:08
yjz2022
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2022-4-27
得分:0 
回复 9楼 风吹过b
您是高手,帮忙看下有没有其他办法,谢谢!
2022-05-16 11:32
yjz2022
Rank: 1
等 级:新手上路
威 望:1
帖 子:17
专家分:0
注 册:2022-4-27
得分:0 
以下代码应该可以,可是如何获得要控制窗体及窗体按键的标题?


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, ByVal lParam As Any) As Long
'鼠标按下
Const WM_LBUTTONDOWN = &H201
'鼠标弹出
Const WM_LBUTTONUP = &H202
'鼠标双击
Const WM_COMMAND = &H203
 
Private Sub Command1_Click()
Dim lngHWnd1 As Long, lngHWnd2 As Long
 
lngHWnd1 = FindWindow(vbNullString, "你要控制窗体的标题")
  If lngHWnd1 <> 0 Then
  lngHWnd2 = FindWindowEx(lngHWnd1, 0, vbNullString, "里面窗体或控件的标题")
   
  If lngHWnd2 <> 0 Then
  SendMessage lngHWnd2, WM_LBUTTONDOWN, 0&, 0&
  SendMessage lngHWnd2, WM_LBUTTONUP, 0&, 0&
   
  End If
  Else
  lngHWnd2 = 0
  End If
End Sub
2022-05-16 16:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509087-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017013 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved