VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 793|回复: 7

[求助] VB模拟 鼠标左键按下?下面错在何处?

[复制链接]

117

主题

2

听众

1692

积分

中级程序员

Rank: 3

擂点
0
人气
0
威望
0
注册时间
2012-12-27
精华
0
帖子
322
发表于 2016-12-2 10:29:38 |显示全部楼层
本帖最后由 bruly 于 2016-12-2 10:31 编辑

模块中的代码:
  1. Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer '声明
  2. Public 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)
  3. Public Const MOUSEEVENTF_LEFTDOWN = &H2
  4. Public Const MOUSEEVENTF_LEFTUP = &H4
复制代码
窗体中的代码(窗体隐藏):
  1. Private Sub Timer1_Timer()'interval=100
  2. If GetAsyncKeyState(17) And GetAsyncKeyState(32) Then ''按下左侧的ctrl + 空格键
  3.       Mouse_Event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 '设置鼠标左键按下
  4.         Mouse_Event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 '设置鼠标左键弹出
  5. end if
  6. End Sub
复制代码
运行VB后,我打开浏览器,全选一段内容、并把光标移到该内容上方。
再按 ctrl + 空格键,全选的状况没有变,还是属于全选状态。
这说明 按下鼠标左键不成功,否则全选的状况会消失的。
请问如何修正呢?

117

主题

2

听众

1692

积分

中级程序员

Rank: 3

擂点
0
人气
0
威望
0
注册时间
2012-12-27
精华
0
帖子
322
发表于 2016-12-3 22:14:03 |显示全部楼层
回复

使用道具 举报

37

主题

9

听众

1892

积分

中级程序员

Rank: 3

擂点
0
人气
56
威望
188
注册时间
2013-3-5
精华
0
帖子
272
发表于 2016-12-4 09:34:54 |显示全部楼层
http://www.vbgood.com/thread-118061-1-1.html
下载模块,
调用MouseMove(X, Y) '移动鼠标
回复

使用道具 举报

117

主题

2

听众

1692

积分

中级程序员

Rank: 3

擂点
0
人气
0
威望
0
注册时间
2012-12-27
精华
0
帖子
322
发表于 2016-12-6 14:50:46 |显示全部楼层
vbfans01 发表于 2016-12-4 09:34
http://www.vbgood.com/thread-118061-1-1.html
下载模块,
调用MouseMove(X, Y) '移动鼠标

感谢 指点,您的模块功能很强大。
我已经尝试,发现:
1、您的模块中需要补充一个apieclare Function GetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
     我已经添加上了;
2、不是我想要的按下鼠标左键的做法。我用的代码是:
    Call MouseMove((Screen.Width / 15) / 2, (Screen.Height / 15) / 2)
     如果按下鼠标左键、并停留在中间,我还是不知道如何处理哈。
回复

使用道具 举报

37

主题

9

听众

1892

积分

中级程序员

Rank: 3

擂点
0
人气
56
威望
188
注册时间
2013-3-5
精华
0
帖子
272
发表于 2016-12-6 23:17:08 |显示全部楼层
使用CALL MouseMove移动鼠标

然后使用call MouseDown 鼠标按下

如要是模拟按住鼠标左键不放拖动,就再次调用CALL MouseMove移动鼠标

最后使用 call MouseUp 鼠标放开
回复

使用道具 举报

37

主题

9

听众

1892

积分

中级程序员

Rank: 3

擂点
0
人气
56
威望
188
注册时间
2013-3-5
精华
0
帖子
272
发表于 2016-12-6 23:19:04 |显示全部楼层
本帖最后由 vbfans01 于 2016-12-6 23:21 编辑

如果按住鼠标的同时按键盘,请掉用call KeyDown
完成后记得使用CALL KeyUp放开键盘

说了半天,就是平时的鼠标操作过程即可。
回复

使用道具 举报

117

主题

2

听众

1692

积分

中级程序员

Rank: 3

擂点
0
人气
0
威望
0
注册时间
2012-12-27
精华
0
帖子
322
发表于 2016-12-7 15:35:00 |显示全部楼层
vbfans01 发表于 2016-12-6 23:17
使用CALL MouseMove移动鼠标

然后使用call MouseDown 鼠标按下

感谢 回复 ,不知道用CALL MouseMove,如何把光标移动到电脑屏幕正中心。
        我前面用的  Call MouseMove((Screen.Width / 15) / 2, (Screen.Height / 15) / 2),是移动到屏幕最顶端,真是怪。
     其它功能还在尝试中
回复

使用道具 举报

37

主题

9

听众

1892

积分

中级程序员

Rank: 3

擂点
0
人气
56
威望
188
注册时间
2013-3-5
精华
0
帖子
272
发表于 2016-12-8 22:54:38 |显示全部楼层
test.zip (3.95 KB, 下载次数: 21)
这是移动到正中间的测试代码。
是正常的
已有 1 人评分威望 人气 收起 理由
bruly + 5 + 1 很给力

总评分: 威望 + 5  人气 + 1   查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

文字版|手机版|VBGood

GMT+8, 2017-3-29 03:37

VB爱好者乐园(VBGood)
回顶部