作者VElysian (家瑀 致中和)
看板EzHotKey
标题Re: [AHK-] 有没有办法按下同个按键会依序出现不同 …
时间Fri Aug 15 22:04:46 2008
1F:推 john2834:可以用!很方便!不过还有一个问题!08/14 08:13
2F:→ john2834:如果把123改成ABC要怎麽改?那如果是不连续字母怎麽办08/14 08:13
3F:推 Lumania:num:= 65 send {ASC %num%} 送ASCII code08/15 09:27
连续的字母可以用阵列唷~~
只会增加 4 行变成 10 行而已。 ^_^
程式码如下:
string = Hello
;设定文字为 Hello
StringSplit , array , string
;将string的内容转换成 array 阵列的元素
StringLen , strLen , string
;撷取string的长度并放进 strLen 变数中
#W:: ;按下 Win + W 执行至 return 前的指令
arrayCount = 1
;建立变数 arrayCount 并令他的值为 1
return ;Win + W 指令结束
#Q:: ;按下 Win + Q 执行至 return 前的指令
Send ,% array%arrayCount%
;送出指定阵列位置的值
arrayCount :=
( mod(arrayCount, strLen)
) + 1
; := 意思是将右边运算的结果放进左边的变数中
;例如 mod(10,4)是取 10 ÷4 的余数也就是 2
return ;Win + Q 指令结束
阵列教学:
阵列与变数不同的地方在於,
1. 阵列一定是一连串的文字组成,变数则不一定。
2. 阵列可以撷取中间的某个字,变数不行。
例如两个内容都是 Hello 的变数和阵列,他们会长得像这个样子:
┌───┬───────────┐
│ 型态 │ 内容 │
├───┼───────────┤
│ │ ╭─────╮ │
│ 变数 │ │Hello│ │
│ │ ╰─────╯ │
├───┼───────────┤
│ │╭─┬─┬─┬─┬─╮│
│ ││1│2│3│4│5││
│ 阵列 │├─┼─┼─┼─┼─┤│
│ ││H│e│l│l│o││
│ │╰─┴─┴─┴─┴─╯│
└───┴───────────┘
上图中我们发现阵列的 Hello 被分成 5 个字母,
这 5 个字母称为阵列的元素。
字母上面的数字是用来提取字母用的。
这些数字可以想像成是一条街上的地址,
如果要找特定的住户(字母),只要找到地址就可以了。
而变数只能一次提取出 Hello 这个单字,不能像阵列可以分别提出来。
═══════════════════════════════════════
在 AutoHotKey 中,可以用 StringSplit 指令来制造阵列。
StringSplit , 阵列 ,
变数 ,
分割条件(文字) ,
首尾忽略文字
这个指令会将
变数 的内容分开成一个个阵列的元素,然後存放进指定的
阵列 中。
例如:
string = Hello
StringSplit , array , string
会把 string 的内容 Hello 的字母分别拆开来一个个放进 array 这个阵列中。
更进一步资料可以参考
http://www.autohotkey.com/docs/commands/StringSplit.htm
═══════════════════════════════════════
阵列使用教学:
如果我们制造了一个阵列如下:
┌────┬───────────┐
│阵列名称│ 阵列内容 │
├────┼───────────┤
│ │╭─┬─┬─┬─┬─╮│
│ ││1│2│3│4│5││
│ Array │├─┼─┼─┼─┼─┤│
│ ││H│e│l│l│o││
│ │╰─┴─┴─┴─┴─╯│
└────┴───────────┘
那麽要怎麽使用它呢?
其实很简单,只要在阵列名称後面加上数字的位置就行了:
Array1 就是 H
Array2 就是 e
Array3 就是 l
Array4 就是 l
Array5 就是 o
如果要显示第五个元素的内容,这样子写就好了:
MsgBox , %Array5%
但是假设我的阵列元素有 100 个,想要全部印出来,要怎麽写?
如果用 Loop ,
num = 1
Loop , 100
{
MsgBox , % Array
%num% %
num := num + 1
}
有太多「 % 」,Loop 会认不出来耶~~
AutoHotKey 提供一种特别的方法让你在指令中内嵌阵列唷~~
就是把 阵列的「
% 」去掉,然後在指令的逗号後面加一个「
% 」就行了。
范例如下:
num = 1
Loop , 100
{
MsgBox ,
% Array
%num
%
num := num + 1
}
更进一步的资料可以参考:
http://www.autohotkey.com/docs/misc/Arrays.htm
═══════════════════════════════════════
教学完毕,希望对你有帮助。 ^_^
--
战略高手 游戏, 数位, 程设 [jzs/lostname
DigitalWare 软体 Σ软体 应用 技巧 [lostname]
EzHotKey 软体 ◎简化复杂工作的快速键软体 VElysian
EzHotKey 主要讨论一种可以把复杂的滑鼠键盘动作变成简单的快速键的软体。
例如:
重复的剪下贴上,或是将滑鼠调整音量的动作简化成只按 +/- 键。
包括:
AutoHotKey、AutoIt、EZScript、VBScript、Windows 批次档。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.64.175.233
4F:推 john2834:先推等等慢慢看 感谢解答 08/16 07:01