Thinkai's Blog

Autohoutkey|Python|php|aardio|VOIP|IT 爱好者

我在百度知道回答的。原文 提问者要求:

将下面这些按键精灵的代码转为autohotkey的代码格式,非常感谢
Dim P,Y
P = Array(300, 333, 366, 399, 432, 465, 498, 531, 564, 597, 630, 663, 696, 729, 762, 795, 828, 861, 894, 927, 960, 993)
//列坐标
For i=0 To 22
    Y= P(i) 

    MoveTo 600, 10
    LeftDown 1
    LeftUp 1
  
    Delay 1000
    MoveTo 420, 100
    LeftDown 1
    LeftUp 1

    Delay 1000
    MoveTo 600, 10
    LeftDown 1
    LeftUp 1

    Delay 100
    KeyDown "F1", 1
    Delay 200
    KeyUp "F1", 1

    Delay 1000
    MoveTo 1050, Y
    LeftDown 1
    LeftUp 1

    LeftDoubleClick 1

    Delay 600
    LeftDoubleClick 1

    KeyDown "ctrl", 1
    KeyDown "c", 1
    Delay 500
    KeyUp "c", 1
    KeyUp "ctrl", 1

    Delay 100
    KeyDown "F1", 1
    Delay 200
    KeyUp "F1", 1

    Delay 500
    MoveTo 500, 280
    LeftDown 1
    LeftUp 1
    Delay 500
    KeyDown "Ctrl", 1
    KeyDown "V", 1
    KeyUp "V", 1
    KeyUp "Ctrl", 1

    Delay 500
    MoveTo 630, 610
    LeftDown 1
    LeftUp 1

    MoveTo 620, 100
    LeftDown 1
    LeftUp 1

    Delay 8000

    MoveTo 260, 100
    LeftDown 1
    LeftUp 1

Next

我的回答:

CoordMode, Mouse, Relative    ;相对于窗口的xy
;CoordMode, Mouse, Screen;对于整个屏幕
;定义字串
a = 300|333|366|399|432|465|498|531|564|597|630|663|696|729|762|795|828|861|894|927|960|993
;创建伪数组
StringSplit, p, a, |, 
Loop
{
;p0为数组项目数 A_Index为当前循环执行次数
if A_Index > %p0%
    Break
y = % p%A_Index%
MouseClick, left, 600, 10
 
Sleep, 1000
MouseClick, left, 420, 100
 
sleep, 1000
MouseClick, left, 600, 10
 
sleep, 100
Send, {F1 Down}
Sleep, 200
Send, {F1 Up}
 
sleep, 1000
MouseClick, left, 1050, %y%
 
MouseClick, left, 1050, %y%, 2
 
sleep, 600
MouseClick, left, 1050, %y%, 2
 
Send, {CtrlDown}{c Down}
Sleep, 500
Send, {c Up}{CtrlUp}
     
sleep, 100
Send, {F1 Down}
Sleep, 200
Send, {F1 Up}
 
sleep, 500
MouseClick, left, 500, 280
sleep, 500
;^v等效于ctrl+v
Send, ^v
 
sleep, 500
MouseClick, left, 630, 610
 
MouseClick, left, 620, 100
 
sleep, 8000
 
MouseClick, left, 260, 100
}

然后提问者反馈无法运行


回答:

首先,上面我在脚本首写了鼠标操作的坐标是相对于全屏还是活动窗口,这个一定注意!!!默认是活动窗口。这些坐标及信息可以通过ahk目录下的AU_SPY工具直接获取。

在坐标全屏模式为标准下要换算可以使用下面类似的语句。

WinGetActiveStats, , , , win_x, win_y
caozuo1_x := win_x + 400
caozuo1_y := win_y + 400
MouseClick, Left, %caozuo1_x%,%caozuo1_y%

脚本默认在双击执行时,就开始运行。如果要引用快捷键,可以在首处添加快捷键,比如:

;发送z以及触发操作
~z::
;win+z
#z::
;Ctrl+Alt+z
^!z::
;Shift+z
+z::

然后在末尾加return  返回。


也可以用判断机制:

;如果存在激活窗口

IfWinActive, 窗口标题或者ahk_class
    {    
    ;...............
    }

【手动中断循环】

如果循环此时很多或者在调试怎么办,可以这样写:

;语句若干
;初始化变量
ex = 0
loop
{
If ex = 1
    Break
;若干语句
}
Return
 
~x::
;快捷键
ex = 1
Return



来了就留个评论吧! 没有评论




友情链接:Autohotkey中文论坛Autohotkey中文帮助Autohotkey官网我的B站直播间如若生涯一场梦博客联系作者免GooglePlay APK下载

 主题设计 • skyfrit.com  Thinkai's Blog | 保留所有权利

63 queries in 4.124 seconds |