修改

开的8年前

关闭3年前

上次修改时间2年前

#3182 关闭 缺陷 (固定的)

当与多个显示屏一起使用时,MouseGetPos可能返回错误的值。

报告人: 菲尔克利德 所有者: 乔恩
里程碑: 3.3.15.4 组件: AutoIt(自动识别)
版本: 3.3.14.2 严重程度:
关键词: 鼠标获取位置 鼠标移动 复写的副本:

描述

当屏幕从MouseGetPos返回负值时,就会出现此问题。这些屏幕位于“主屏幕”的左侧
也就是说,鼠标必须位于返回x和/或y负值的位置

在下面的代码中,当鼠标位于主屏幕的左侧时,鼠标将向右移动到主屏幕,每次移动一个像素。
类似地,如果有一个Y值为负的屏幕,
鼠标一次一个像素接近零。

请参阅:
https://www.autoitscript.com/forum/topic/179346-mouse-moves-when-it-shouldnt/?page=1

While(正确)睡眠(1500)本地$x=鼠标获取位置(0)本地$y=鼠标获取位置(1)Consolewrite(@CR&“x>”&$x&“<y>”&$y&“<”)鼠标移动($x,$y,0)WEnd公司

这是Windows 7上的结果

“C:\Program Files(x86)\AutoIt3\SciTE\..\AutoIt3.exe”

+>15:47:00启动AutoIt3Wrapper v.15.920.938.0 SciTE v.3.6.0.0键盘:00010409 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64环境(语言:0409)
+>SciTEDir=>C:\Program Files(x86)\AutoIt3\SciTE UserDir=>C:\Users\Pkryder\AppData\Local\AutoIt v3\ScieTE\AutoIt3Wrapper SciTE_USERHOME=>C:\ Users\Pkryder\App Data\Local \AutoIt v3\SciTE

从以下位置运行AU3Check(3.3.14.2):C:\Program Files(x86)\AutoIt3 input:R:\Operations\MacroTools\AutoIT\keepWindowUnlocked\TrackerCode.au3

+>15:47:00 AU3检查结束。rc:0

运行:(3.3.14.2):C:\Program Files(x86)\AutoIt3\AutoIt3.exe“R:\Operations\MacroTools\AutoIT\keepWindowUnlocked\TrackerCode.au3”

-->按Ctrl+Alt+Break重新启动或按Ctrl+Bream停止

x>-3334<y>-131<
x>-3333<y>-130<
x>-3332<y>-129<
x>-3331<y>-128<
x>-3330<y>-127<
x>-3329<y>-126<
x>-3328<y>-125<
x>-3327<y>-124<

进程未能响应;强制突然终止。。。
退出代码:1时间:13.53

附件(0)

更改历史记录(7)

注释:1 改变8年前BrewManNH

正如我在您的线不是MouseGetPos出了问题,而是MouseMove导致了这个问题。

当屏幕位置为负值时,MouseMove将鼠标向右移动1个像素。可能是MouseMove没有考虑到左手显示器上的x维度从-1开始(结束?),而不是从0开始。因此,1920像素宽的显示器的鼠标位置是从-1到-1920,如果它是主屏幕,那么这些尺寸将是0到1919。

注释:2 改变8年前作者:philkryder

谢谢,我不想说我知道出了什么问题。
我很高兴接受你知道的事实。

症状也出现在y坐标和x坐标上。

注释:3 改变4年前作者:philkryder

有什么消息吗?我真的不在乎是哪个函数导致了错误,但似乎其中一个应该被修复?

评论:4 改变3年前由Jpm提供

  • 所有者设置为Jpm公司
  • 状态已从更改新的分配

最后,我找到了多屏幕的访问权限。
我确认错误出现在MouseMove()中
发送给Jon的修复

上次编辑时间3年前由Jpm提供(以前的)(差异)

注释:5 改变3年前作者:Jon

  • 里程碑设置为3.3.15.4
  • 所有者已从更改Jpm公司乔恩
  • 分辨率设置为固定的
  • 状态已从更改分配关闭

通过修订修复[12562]版本:3.3.15.4

注释:6 随访: 改变2年前匿名

我认为这仍然存在问题。我有一个小脚本,当我使用以下循环做其他事情时,它可以防止我的电脑进入睡眠状态或触发屏幕保护程序:

而1

睡眠(30000)
$CurPos=鼠标获取位置()
鼠标移动($CurPos[0]+1,$CurPos[1])
鼠标移动($CurPos[0]-1,$CurPos[1])

WEnd公司

我有三台显示器。当我在中间偏左的显示器上时,每次循环运行时,鼠标光标都会跳到屏幕的左边缘。有趣的是,如果我把它编译成EXE,它会跳到屏幕的边缘,然后再跳回到原来的位置。这是当前的测试版3.3.15.4。

注释:7 答复: 6 改变2年前作者:Jos

回复匿名的:

我认为这仍然存在一个问题。我有一个小脚本,当我使用以下命令做其他事情时,它可以防止我的计算机进入睡眠状态或触发屏幕保护程序

请访问我们的论坛提问,因为这里是Bug报告和功能请求的地方!

乔斯

发表评论的指南:

  • 您不能重新打开票据,但如果您有其他信息需要添加,您仍然可以留下评论。
  • 应就论坛.

有关更多信息,请参阅票务指南的完整版本在这里.

添加注释

修改票据

行动
已关闭所有者仍将是乔恩。
作者


电子邮件地址和用户名可以保存在偏好.

 
注:请参见TracTickets公司有关使用的帮助门票。