SetCursorPos 移动鼠标函数在win10下不能使用,求助!

BaoBrother 2020-01-31 01:11:49
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long '移动鼠标到指定的坐标

SetCursorPos 100, 200

我在win7系统上面用上面这个函数移动鼠标可以正常使用,但是Win10下运行没效果,求助!!!!!
...全文
1615 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44061010 2021-01-14
  • 打赏
  • 举报
回复
是楼主的模拟器或者沙盒没全屏,setcursorpos没找到位置吧
舉杯邀明月 2020-02-02
  • 打赏
  • 举报
回复
我在7楼说了那么多,你却完全不当回事,
 就你这种态度,能够解决问题,那……好吧,算你走运。
BaoBrother 2020-02-02
  • 打赏
  • 举报
回复
大概知道问题了,可能是我在模拟器上安装的win10不行,我用另外用电脑安装个win10就可了。
BaoBrother 2020-02-01
  • 打赏
  • 举报
回复
然后没办法解决了,我改用vb.net了,如果你知道vb6怎么解决的话,麻烦告诉我,谢谢了.
舉杯邀明月 2020-02-01
  • 打赏
  • 举报
回复
呵呵,我说它能动,你非要“一会儿能动,一会儿又说不能动”,
我能拿你咋办?
BaoBrother 2020-02-01
  • 打赏
  • 举报
回复
vb.net也不好用,真难,还是得用vb6,谁有办法解决啊??
舉杯邀明月 2020-01-31
  • 打赏
  • 举报
回复
引用 8 楼 BaoBrother 的回复:
Err.LastDllError 错误为0


然后呢?就没下文了?
BaoBrother 2020-01-31
  • 打赏
  • 举报
回复
Err.LastDllError 错误为0
舉杯邀明月 2020-01-31
  • 打赏
  • 举报
回复
引用 3 楼 BaoBrother 的回复:
是指针不动根本不动,也没有错误提示。

调用系统的API,哪会有什么“错误提示”!!!


给你说了:如果不成功,需要用 Err.LastDllError 看“错误代码”,
 然后按错误代码去分析“操作失败”的原因!

然而,按你5楼、6楼的说法,又有点莫明其妙了,
要是“无效”,那就应该永远无效,而不会“过会儿,它就会移动”…………

要真象你5楼说的那样,只能说明你的“认知”和验证方法有问题。


第1步是验证“是否能移动”:
1. 传入很小的x和y值,在执行前把鼠标移到屏幕中部或右下的区域;
  然后执行调用,看鼠标是否移到左上角去了。
  动了则有效,不动则无效。
2. 按“屏幕大小”(分辨率的像素数),传入较大的x和y值(不要大于分辨率值),
  先把鼠标移到左上角,再执行调用,看鼠标是否往“右下”方向移动了。
  同样,移动了就说明有效,没动就说明无效。

如果“无效”,再考虑是否因“权限”问题不能操作:
 先“以管理员身份运行”启动VB6,再进行上面的“验证”。
 (或者写代码编译成exe,再以管理员身份运行执行你的exe来验证。

如果“仍然无效”(但这基本上是“不可能的”),那就没辙了。

这个API的参数值,单位是“像素”。
按理说给定的是多少x和y,就应该移动到相应的坐标位置上去。
但如果“坐标不准”,就需要考虑的是“坐标比例”的问题了。
不过,要是“执行无效”的话,那就说了也是白说。
因此先等楼主验证出确切结果再说吧。

我现在只有Win7系统,我的Win10系统被我搞得不能启动了,
  现在还没空重装,没法亲自试验。
BaoBrother 2020-01-31
  • 打赏
  • 举报
回复
有可能是权限问题
BaoBrother 2020-01-31
  • 打赏
  • 举报
回复
Private Sub Timer1_Timer(Index As Integer)
a = a + 2
b = b + 2

SetCursorPos a, b

End Sub

谢谢楼上,按照你的提示做了,时钟运行好多次以后鼠标才开始动,怎么回事?
greatbody 2020-01-31
  • 打赏
  • 举报
回复
有一种方法验证。 代码里面,每3秒,移动一次鼠标的位置。然后你观察你的鼠标位置是否会变化。 如果变化了,就说明你的改动是有效的。 否则,就是真的失效了。 另外,这函数是需要权限的吧?查查如果让VB6程序获取权限。
BaoBrother 2020-01-31
  • 打赏
  • 举报
回复
是指针不动根本不动,也没有错误提示。
BaoBrother 2020-01-31
  • 打赏
  • 举报
回复
就是移不了,执行这函鼠标没反应
舉杯邀明月 2020-01-31
  • 打赏
  • 举报
回复
不知道你说的“没效果”是什么效果。

究竟是“移动结果不正确”,还是“指针根本不移动”?
如果是指针不动,那在调用API之后立即用Err.LastDllError看看是不是API没有成功执行、以及错误代码是多少。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧