找回密码
 加入
搜索
查看: 3075|回复: 8

[AU3基础] [已解决]如何将鼠标点击坐标 x、y 值转换为二维数组?谢谢!!!

  [复制链接]
发表于 2011-3-10 18:20:59 | 显示全部楼层 |阅读模式
本帖最后由 131738 于 2011-3-10 19:40 编辑

决定使用一维数组,容易些!!!

如 2 次点击:

获取到第一次坐标值:  62,27

获取到第二次坐标值: 106,92

如何转换为如下形式的二维数组:

[0][0] = 62
[0][1] = 27

[1][0] = 106
[1][1] = 92

谢谢!!!!

突然想到用一维数组也许可以,在研究下!!!!!!!!!!!
发表于 2011-3-10 19:11:00 | 显示全部楼层
本帖最后由 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[0] = $iUBound - 1 Then $avArray[0] += 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[0][0] = $iUBound - 1 Then $avArray[0][0] += 1
                ReDim $avArray[$iUBound + 1][2]
                $avArray[$iUBound][0] = $vValue0
                $avArray[$iUBound][1] = $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[0][0] = $iUBound - 1 Then $avArray[0][0] += 1
                ReDim $avArray[$iUBound + 1][3]
                $avArray[$iUBound][0] = $vValue0
                $avArray[$iUBound][1] = $vValue1
                                $avArray[$iUBound][2] = $vValue2
;~                                 MsgBox(0,0,$avArray[$iUBound][2])
                                 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[0][0] = $iUBound - 1 Then $avArray[0][0] += 1
                ReDim $avArray[$iUBound + 1][4]
                $avArray[$iUBound][0] = $vValue0
                $avArray[$iUBound][1] = $vValue1
                                $avArray[$iUBound][2] = $vValue2
                                $avArray[$iUBound][3] = $vValue3
        ElseIf UBound($avArray, 0) > 2 Then
                Return SetError(3, 0, -1)
        EndIf
        Return $iUBound
EndFunc   ;==>__ArrayAdd
发表于 2011-3-10 19:27:00 | 显示全部楼层
本帖最后由 yhxhappy 于 2011-3-10 19:36 编辑

#Include <Misc.au3>
#Include <Array.au3>

Dim $Pos[1][2]
HotKeySet("a", "dd")
HotKeySet("{ESC}", "quit")

While 1
        If _IsPressed(01) = 1 Then
                $MPos = MouseGetPos()
                ReDim $Pos[UBound($Pos)+1][2]
                $Pos[UBound($Pos)-1][0] = $MPos[0]
                $Pos[UBound($Pos)-1][1] = $MPos[1]
                $Pos[0][0] = UBound($Pos)-1
        EndIf
        ToolTip("随意点鼠标,按A键显示数组,ESC键退出")
        Sleep(150)   ;这个延时很重要,如果用户连续点同一个位置,不加延时会一下子添加好几行相同坐标进数组
WEnd

Func dd()
        _ArrayDisplay($Pos)
EndFunc

Func quit()
        Exit
EndFunc

评分

参与人数 1金钱 +10 收起 理由
xyold1 + 10

查看全部评分

 楼主| 发表于 2011-3-10 19:36:41 | 显示全部楼层
试着用下这个函数(改自A版)在1维或2维数组的末尾添加指定的值,2维数组的列数还可以增加的
xyold1 发表于 2011-3-10 19:11


谢谢!!!虽然决定用一维数组,还是谢谢您的代码!!!收下了。。。。。
 楼主| 发表于 2011-3-10 19:37:08 | 显示全部楼层
yhxhappy 发表于 2011-3-10 19:27


谢谢您的代码!!!收下了
发表于 2011-3-11 00:20:43 | 显示全部楼层
回复 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[0] & "," & $pos[1])
                $i += 1
        EndIf
EndFunc   ;==>dd

Func quit()
        Exit
EndFunc   ;==>quit
 楼主| 发表于 2011-3-11 00:44:34 | 显示全部楼层
本帖最后由 131738 于 2011-3-11 00:45 编辑

回复 6# lixiaolong

谢谢!!!我没表述清楚,坐标值已经有了,只是要将实数值带入另一个程序,

在这另一程序中将实数值转换为表示 X , Y  的变量值,进行点击处理。。。

再次谢谢!!!已经解决了。。。
发表于 2011-10-28 17:27:54 | 显示全部楼层
学习了,学习。新手路过
发表于 2011-11-3 01:28:44 | 显示全部楼层
标记下,好东西
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-6 03:12 , Processed in 0.079387 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表