[已解决]如何将鼠标点击坐标 x、y 值转换为二维数组?谢谢!!!
本帖最后由 131738 于 2011-3-10 19:40 编辑决定使用一维数组,容易些!!!
如 2 次点击:
获取到第一次坐标值:62,27
获取到第二次坐标值: 106,92
如何转换为如下形式的二维数组:
= 62
= 27
= 106
= 92
谢谢!!!!
突然想到用一维数组也许可以,在研究下!!!!!!!!!!! 本帖最后由 xyold1 于 2011-3-10 19:13 编辑
试着用下这个函数(改自A版)在1维或2维数组的末尾添加指定的值,2维数组的列数还可以增加的
Func __ArrayAdd(ByRef $avArray, $vValue0, $vValue1 = '', $vValue2 = '',$vValue3 = '',$0_auto = 1)
;说明:在1维或2维数组的第2维为2的数组末尾添加指定的值。(修改自原_ArrayAdd函数)
;Afan提示:$0_auto参数为1时自动判断0号元素的值是否为数组的数量-1,是则自动+1。
;~ MsgBox(0,0,UBound($avArray, 0))
If Not IsArray($avArray) Then Return SetError(1, 0, -1)
Local $iUBound = UBound($avArray)
If UBound($avArray, 0) = 1 Then
If $0_auto And $avArray = $iUBound - 1 Then $avArray += 1
ReDim $avArray[$iUBound + 1]
$avArray[$iUBound] = $vValue0
ElseIf UBound($avArray, 0) = 2 And UBound($avArray, 2) = 2 Then
If UBound($avArray, 2) <> 2 Then Return SetError(2, 0, -1)
If $0_auto And $avArray = $iUBound - 1 Then $avArray += 1
ReDim $avArray[$iUBound + 1]
$avArray[$iUBound] = $vValue0
$avArray[$iUBound] = $vValue1
ElseIf UBound($avArray, 0) = 2 And UBound($avArray, 2) =3 Then ;判断是否为2维数组,如果是3列
If UBound($avArray, 2) <> 3 Then Return SetError(2, 0, -1) ;
If $0_auto And $avArray = $iUBound - 1 Then $avArray += 1
ReDim $avArray[$iUBound + 1]
$avArray[$iUBound] = $vValue0
$avArray[$iUBound] = $vValue1
$avArray[$iUBound] = $vValue2
;~ MsgBox(0,0,$avArray[$iUBound])
ElseIf UBound($avArray, 0) = 2 And UBound($avArray, 2) =4 Then ;如果是4列
If UBound($avArray, 2) <> 4 Then Return SetError(2, 0, -1)
If $0_auto And $avArray = $iUBound - 1 Then $avArray += 1
ReDim $avArray[$iUBound + 1]
$avArray[$iUBound] = $vValue0
$avArray[$iUBound] = $vValue1
$avArray[$iUBound] = $vValue2
$avArray[$iUBound] = $vValue3
ElseIf UBound($avArray, 0) > 2 Then
Return SetError(3, 0, -1)
EndIf
Return $iUBound
EndFunc ;==>__ArrayAdd 本帖最后由 yhxhappy 于 2011-3-10 19:36 编辑
#Include <Misc.au3>
#Include <Array.au3>
Dim $Pos
HotKeySet("a", "dd")
HotKeySet("{ESC}", "quit")
While 1
If _IsPressed(01) = 1 Then
$MPos = MouseGetPos()
ReDim $Pos
$Pos = $MPos
$Pos = $MPos
$Pos = UBound($Pos)-1
EndIf
ToolTip("随意点鼠标,按A键显示数组,ESC键退出")
Sleep(150) ;这个延时很重要,如果用户连续点同一个位置,不加延时会一下子添加好几行相同坐标进数组
WEnd
Func dd()
_ArrayDisplay($Pos)
EndFunc
Func quit()
Exit
EndFunc 试着用下这个函数(改自A版)在1维或2维数组的末尾添加指定的值,2维数组的列数还可以增加的
xyold1 发表于 2011-3-10 19:11 http://autoitx.com/images/common/back.gif
谢谢!!!虽然决定用一维数组,还是谢谢您的代码!!!收下了。。。。。
yhxhappy 发表于 2011-3-10 19:27 http://autoitx.com/images/common/back.gif
谢谢您的代码!!!收下了 回复 1# 131738
写的简单点.
#include <Misc.au3>
AdlibRegister("mouse", 10)
HotKeySet("{ESC}", "quit")
$i = 1
While 1
Sleep(10)
WEnd
Func mouse()
If _IsPressed(01) = 1 Then
$pos = MouseGetPos()
MsgBox(0, "第" & $i & '次', $pos & "," & $pos)
$i += 1
EndIf
EndFunc ;==>dd
Func quit()
Exit
EndFunc ;==>quit 本帖最后由 131738 于 2011-3-11 00:45 编辑
回复 6# lixiaolong
谢谢!!!我没表述清楚,坐标值已经有了,只是要将实数值带入另一个程序,
在这另一程序中将实数值转换为表示 X , Y的变量值,进行点击处理。。。
再次谢谢!!!已经解决了。。。 学习了,学习。新手路过 标记下,好东西
页:
[1]