魔导 发表于 2011-11-21 18:27:29

AU3是否可以鼠标同时点击几个坐标?

本帖最后由 魔导 于 2011-12-1 11:12 编辑

想要用模拟操作同时操作几个游戏
需要鼠标在同一时间点击多个点。。。。。
请各位大牛,前辈们帮帮忙指点指点{:1_498:}
MouseClick("right",461+$Bx,234+$By,10,0);这是第一个坐标
MouseClick("right",461+$Ax,234+$Ay,10,0);这是第二个坐标
;是否可以两个一起进行?

jj119120 发表于 2011-11-21 18:36:13

可以啊模拟多线程多线程要是觉得麻烦   就用多进程   一个进程点一个坐标

xms77 发表于 2011-11-21 21:25:29

好像多线程是au3的硬伤,只能多进程

netegg 发表于 2011-11-22 03:10:01

_WinAPI_CreateSemaphore做并发

82809085 发表于 2011-11-22 23:59:44

_WinAPI_CreateSemaphore做并发

这个我用过的,可以实现楼主的要求

淡定开源 发表于 2011-11-23 04:38:26

这个也能实现,强。

魔导 发表于 2011-11-23 17:42:43

感谢各位前辈{:1_498:}

魔导 发表于 2011-11-23 17:48:35

回复 4# netegg
前辈可以给个列子吗??
去看了下都是些英文的没看懂
这两个一起的话该怎么做呢?
MouseClick("left",448+$A,250+$C,12);这是代码A
MouseClickDrag("left",483+$A,282+$C,503+$A,282+$C)
MouseClick("left",358+$A,585+$C,20)
MouseClick("left",850+$A,588+$C,20)
MouseClick("left",770+$A,355+$C,4)
wuseA()
MouseMove(1439,0)
Send("5")
MouseMove(4,17,5)
Send("{ENTER}")
MouseMove(1439,0,5)
Send("{ENTER}")
MouseClick("left",850+$A,588+$C,500)
MouseClick("left",911+$A,588+$C,19)
MouseClick("left",862+$A,604+$C,5,0)
Send("{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}")



MouseClick("left",448+$A,250+$B,12);这是代码B
MouseClickDrag("left",483+$A,282+$B,503+$A,282+$B)
MouseClick("left",358+$A,585+$B,20)
MouseClick("left",850+$A,588+$B,20)
MouseClick("left",770+$A,355+$B,4)
wuseB()
MouseMove(1439,0)
Send("5")
MouseMove(4,17,5)
Send("{ENTER}")
MouseMove(1439,0,5)
Send("{ENTER}")
MouseClick("left",850+$A,588+$B,500)
MouseClick("left",911+$A,588+$B,19)
MouseClick("left",862+$A,604+$B,5,0)
Send("{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}{ESC}")

魔导 发表于 2011-11-23 17:49:39

回复 6# 淡定开源


    如8楼的   ,可以给个列子吗?
谢谢前辈{:1_498:}

魔导 发表于 2011-11-23 17:51:20

回复 2# jj119120


    这个试过一次,当时的状况是以个鼠标点完一个又点一个。就好像在点击是用热键一样的。{:1_498:}

bdancerlc 发表于 2011-11-23 20:44:22

_WinAPI_CreateSemaphore 做兵法,我去研究一下...

魔导 发表于 2011-11-24 01:04:57

回复 11# bdancerlc


    万分感谢{:1_498:}

魔导 发表于 2011-11-26 23:26:25

回复 2# jj119120


    具体的怎么做啊?
要同时可以点击两个以上的坐标{:1_498:}

jj119120 发表于 2011-11-27 09:49:39

回复 13# 魔导


    函数参考
_WinAPI_CreateSemaphore
--------------------------------------------------------------------------------

创建或打开有名或无名的信号量对象.
译注: 关于 信号量 ,维基百科的注释页:


#Include <WinAPIEx.au3>
_WinAPI_CreateSemaphore ( $sSemaphore, $iInitial, $iMaximum [, $tSecurity] )




参数

$sSemaphore 信号量的名称. 名称比较区分大小写.
$iInitial 信号量对象的初始计数.
该值必须大于或等于 0, 且小于或等于 $iMaximum
$iMaximum 信号量对象的最大数量. 该值必须大于 0.
$tSecurity [可选参数] $tagSECURITY_ATTRIBUTES structure that specifies a security descriptor for the new semaphore.
If this parameter is 0, the semaphore gets a default security descriptor.



返回值

成功: 返回信号量对象的句柄.如命名信号量对象在函数调用前已存在,
函数返回现有对象的句柄.
失败: 返回 0,设置@error:标志为非 0 值.



注意/说明

任何进程可以调用 _WinAPI_WaitFor... 函数指定信号量对象句柄.
单一对象等待函数返回指定对象的状态信号.
当任一对象或指定对象都是信号时, 多对象等待函数可以返回任何命令.
当一个等待函数返回时,被释放的等待进程继续执行.
信号量对象的状态是信号时, 其信号计数大于 0, 如果不是, 其计数等于 0.
$iInitial 参数指定初始值.每个等待进程因信号量的信号状态的释放使计数减 1.
使用 _WinAPI_ReleaseSemaphore() 函数指定信号量的递增计数.
计数不能小于 0 或大于 $iMaximum 参数指定的值.




相关



详情参考

在MSDN中搜索





示例/演示


#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

If Not @Compiled Then
    MsgBox(0, '', 'To run this script, you must first compile it and then run the (.exe) file.')
    Exit
EndIf

Global $hSemaphore = _WinAPI_CreateSemaphore('MySemaphore', 2, 2)

_WinAPI_WaitForSingleObject($hSemaphore)
_MyGUI()
_WinAPI_ReleaseSemaphore($hSemaphore)
_WinAPI_CloseHandle($hSemaphore)

Func _MyGUI()

    Local $Msg

    GUICreate('MyGUI')
    GUISetState()
    While 1
      $Msg = GUIGetMsg()
      Switch $Msg
            Case -3
                ExitLoop
      EndSwitch
    WEnd
EndFunc   ;==>_MyGUI

dnbj2010 发表于 2011-11-27 10:41:27

好复杂,晕了。
打比方你两个游戏吧,M游戏,N游戏。
M游戏上A点 500下,生成一个执行脚本
N游戏上B点 500下 ,生成另一个执行AU3
..........
页: [1] 2
查看完整版本: AU3是否可以鼠标同时点击几个坐标?