请教一个问题
vb吧
全部回复
仅看楼主
level 1
777zhong777 楼主
我想实现一个简单的操作,打开一个记事本文件,鼠标移动到某个点右键,这是我的代码
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd 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)
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Sub Form_Activate()
Dim x As Long
x = ShellExecute(0, "open", "e:\\7.txt", 0, 0, 3)
mouse_event MOUSEEVENTF_ABSOLUTE & MOUSEEVENTF_MOVE, 30000, 30000, 0, 0
mouse_event MOUSEEVENTF_ABSOLUTE & MOUSEEVENTF_RIGHTDOWN & MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
End Sub
但是鼠标会在vb内部右键,而不是记事本内右键,怎么解决
2023年01月18日 07点01分 1
level 1
我试了一下,应该是你任务输入的太快后台反应不过来,比如程序还没打开你就已经移动鼠标点击右键了。用Sleep进行延迟就能满足你的要求。
'声明Sleep函数,dwMilliseconds:=延迟时间,单位毫秒
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
打开文本后面需要延迟,延迟时间看你的软件打开速度。鼠标移动后也需要一个延迟,我测了一下,延时20毫秒及以上能移动后右键。
2023年01月18日 08点01分 3
@777zhong777 此外,你的那个打开好像不会置顶,我有办法置顶但比较麻烦,你得自己网上找一下。
2023年01月18日 09点01分
多谢多谢[真棒][真棒][真棒]
2023年01月18日 09点01分
@嘟嘟逸凡 嗷嗷,是哪里置顶,我刚开始自学
2023年01月18日 09点01分
@777zhong777 我的测试结果是,可以打开txt,但txt不会弹出来而是在底部。所以在桌面测试的时候是成功的,如果右键位置有其他程序,那就不行了。
2023年01月18日 09点01分
level 8
vb吧祝您好运亨通
2023年01月23日 00点01分 5
1