2011-05-29 132 views

回答

4

方式一:

F2:: 
Values = pick,one of,these,choices 
StringSplit, ValueArray, Values, `, 
Random, rand, 1, 4 
SendInput % ValueArray%rand% 

我還沒有找到一個很好的方式來獲得數組的大小。

+0

大。謝謝。快速'ñ'骯髒的工作現在就好了。 我的字符串(幸運的)都沒有逗號,所以有一個函數可以計算字符串中字符的出現次數,即逗號+ 1 =數組大小? – MockWhy 2011-05-30 00:11:34

+0

製作副本和使用RegExReplace(它給出一個計數)或使用像TF這樣的擴展庫的缺點,我還沒找到。 – TrueWill 2011-05-30 00:54:28

2

如果您需要處理每個列表項中的逗號,則可以使用單獨的分隔符。

F2:: 
    list := "Hi, dork.;Hello, titmouse.;Greetings, ass.;Sup, barnacle." 
    listsize := list#items(list, ";") 
    Random, rand, 1, %listsize% 
    MsgBox, % listGet(list, rand, ";") 
return 


; return item at said position in said list 
listGet(list,pos=1,del=",") { 
    StringSplit, item, list, %del% 
    return item%pos% 
} 


; returns # of items 
list#items(list, del=",") { 
    ifEqual, list,, return 0 
    StringReplace, var, list, % del,, useErrorLevel 
    return ErrorLevel+1 
} 

多個列表操作函數在這裏: http://www.autohotkey.com/forum/topic3195.html

0

試試這個

Voice := ComObjCreate("SAPI.SpVoice") 

F2::  ;Press F2 
Random, rand, 1, 4 
goto, %rand% 

1: 
Voice.Speak("number 1") 
; Or you can use send 1 
return 

2: 
Voice.Speak("number 2?") 
return 

3: 
Voice.Speak("number 3") 
return 

4: 
Voice.Speak("number 4") 
return