A. 如何修改Ruby的gem源
這個不難,在桌面「網上鄰居」點右鍵,選「屬性」,如果你是撥號上網的,不要選「寬頻連接」,而要選「本地連接」的右鍵選「屬性」,在「常規」欄下雙擊「Internet協議(TCP/IP)」,或是選擇後點「屬性」,在Internet協議(TCP/IP)屬性中,你可以選「自動獲得IP地址」由系統自動獲得,或是選「使用下面的IP地址」手動設定IP地址。
B. 如何通過修改ruby的源碼來修改ruby的內置關鍵字
可以嘗試自定義函數來做,或者可以覆蓋關鍵字來實現(可以改變定義在某個類型中的函數,類似於下面這段代碼)。
1.234.to_json
=>"1.234"
1.234.to_s
=>"1.234"
1.234.to_s.to_json
=>""1.234""
classFloat
defto_json
self.to_s.to_json
end
end
1.234.to_json
=>""1.234""
C. ruby腳本語言要和其它什麼工具一起使用嗎
Ruby 是一種腳本語言,意思也就是如果你有編譯器,他就可以運行。
我估計你是一位剛接觸編程的朋友,我大概給你說下運行ruby的方法。
首先你需要下載ruby編譯器,現在的版本是1.8.6,下載完後解壓縮到一個目錄 c:\ruby , 然後你把 c:\ruby\bin 加到你的系統環境變數裡面。
然後打開cmd窗口,運行ruby -v ,應該會出現版本號,就證明你的編譯器完成了。
然後你就寫你的腳本,放在哪裡都無所謂,我給你寫個簡單的腳本
my_name = "happyday"
puts "Hello " + my_name +", post at " + Time.now().to_s
你把上面的代碼保存為 hello.rb 。
然後運行 ruby hello.rb
就可以了。
ruby 有很多用途,不過一般的人都會先學習ruby on rails, 然後再回來學ruby.
希望對你有幫助。
D. ruby怎麼錄制自動化腳本啊只看見了一個SciTE編輯器,如何錄制腳本啊
SciTE只是一個文本的編輯器,頂多隻能用來編寫ruby腳本
如果你想用ruby來錄腳本的話
selenium這個工具你聽過嗎,用的人也非常多
它支持很多種語言,當然也包括ruby
selenium IDE 就是可以用來錄制腳本,錄完之後可以選擇一種語言進行導出
代碼都是自動生成的,有興趣你可以去研究下啊~
E. 以下RUBY腳本已被篡改,因此不會再啟動sketchup.rb
殺毒軟體直接殺毒不就得了么
安裝個電腦管家到電腦上
然後使用病毒查殺,對著你的電腦殺毒就行了
F. 我用ruby做的介面測試腳本,比如那種刪除介面,數據如何恢復實現自動化
你只用ruby嗎? 一般除了使用ruby作為腳本語言外,都用其他的工具搭配使用。 你是搞web自動化測試還是軟體測試看 如果是web自動化測試的我可以幫助你,最近也在研究,寫了幾個demo出來。 我是用ruby+watir-webdriver+cucumber
G. 如何用ruby調用另一個ruby腳本
system(「.ruby」)或者load 'another.rb'
具體代碼如下:
# 返回ls的輸出
s=`ls`
cmd= "ls"
s= `#{cmd}`
# 返回true or false
s= system('ls')
cmd= 'ls'
s= system(cmd)
#返回輸出
s= %x[uptime]
#用top進程替換當前ruby進程
exec "top"
cmd = 'top'
exec cmd
H. Ruby模擬鍵盤輸入字元串
一.前言
註:因為復制的時候太激動了,所以本文的轉載無法經過夏克的同意,這里說聲對不住了,希望有人能給個地址,大家上他那去看看!本文在原文的基礎上面稍微擴充了RGSS2的知識,但是不多,很多地方都修改了,希望希望夏克同學原諒我,因為我實在沒辦法聯繫到你.那麼,請各位看官閱覽本文過後,仔細看看RPG Maker自帶的幫助,雖然說是幫助,但是那個也是很好的教材哦!
二.基本概念
1.什麼是RGSS/RGSS 2?
Ruby Game Scripting System(以下簡稱RGSS),中文意思就是:Ruby游戲腳本系統,是一個腳本性質的游戲編程系統,並不是整個游戲都用它來生成,RGSS所能做的只是一些有限的功能,而這些功能,是由廠家也就是EnterBrain所規定的,我們只能在自己力所能及的范圍內來挖掘RGSS的潛力,RGSS 2則是在RGSS的基礎上擴充和刪減了一部分形成的,也可以稱之為RGSS的換代版本,是RMVX所使用的
2.腳本(Script):
腳本這個概念應用的范圍很廣,Windows系統里就有VBScript,JavaScript,WScript等腳本程序,Unix系統也有很多Perl,C等腳本程序,腳本可以解釋為是一種系統內用來實現一些特定功能的有著局限性的編程環境.有的腳本可以觸及到系統底層,有的卻只是完成一些運算或者控制流程的功能,這取決於腳本系統的許可權,也可以說取決於腳本系統所提供的庫函數功能.
3.RGSS/RGSS2中的腳本:
在RPG Maker XP/RPG Maker VX(以下簡稱RMXP/RMVX)中,按F11就可以打開[腳本編輯器],不過RM2003或更早的版本卻沒有這個功能,左邊的窗口是腳本列表,右邊的窗口是腳本內容,左下角可以修改腳本名稱.
在RMXP/RMVX中,游戲開始運行後,總是從最上邊的腳本開始運行,依次往下,所以,經常把變數聲明、類聲明、函數聲明、函數定義的腳本放在上面,而MAIN腳本總是放在最後.
三.開始神奇的腳本學習旅程
1.Hello,World!
經過上面的基本知識後,相信你對RGSS/RGSS2的相關知識有了一定了解,一般的編程語言教程都是從"Hello,World!"開始的,那好,我們也從"Hello,World!"開始,不過為了體現RGSS語言與Ruby的不同,我們將其改為"Hello,World,我來學習RGSS語言了!",首先,請打開RMXP/RMVX,在新建好一個空白工程後,按下鍵盤上面的"F11"鍵,開始我們的RGSS/RGSS2腳本學習之旅!為了保證執行腳本的快速,請在腳本列表中選中最頂端的那個腳本,然後按下方向鍵上面的Delete(也稱為DEL、刪除)鍵,刪除腳本直到Main腳本為止(這里的意思是只保留Main腳本),選擇[插入]來插入一個新的腳本,給新腳本命名為Test,刪除Main腳本,點[確定].這樣我們就得到了一個空的腳本系統,試著運行一下游戲,可以看到游戲在短暫的啟動後就自動終止了,這表明沒有任何腳本可以執行,游戲只好退出.既然測試成功了,那麼下面我們在Test腳本中加入一些內容.按F11打開[腳本編輯器],因為我們只有Test一個空腳本,所以在Test的內容中輸入下面的代碼:
p "Hello,World,我來學習RGSS語言了!"
把這行代碼復制並粘貼在Test腳本中,按[確定],按F12,保存後游戲開始運行,短暫停頓後就會彈出一個對話框,內容是不是:"Hello,World!"?這樣我們就做出了第一個腳本,如果是學過Ruby的你一定會發現中文會被正常的輸出,而不是類似於"/數字/"的結果,但是這里要說的是,RGSS不支持puts命令,而printf命令則會忽略掉,如果您實在懷戀,可以通過其他的腳本來輔助實現.值得說一下的是,RGSS是會區分大小的,所以這里的p不能使用P(大寫的P).
2.腳本的注釋
在學習任何語言的過程中,注釋是少不了的,因為注釋不僅僅可以讓新手更明白腳本語句的含義,而且還會使腳本看起來更整潔、美觀,當然,能做到的當然還有很多.在RGSS中,有兩種注釋,它們分別是符號 # 和
=begin
=end
如果你比較細心的話應該可以看出他們的用途, 符號#是用來注釋單行,而 =begin ... =end 是用來注釋多行的,在這里,有個知識點需要提一下,符號#後的腳本是會被忽略的,也就是說,你把符號#插入到某一腳本的前面,那麼那條腳本就會無效,很多人都將在腳本前添加#看做是一種解決腳本故障的辦法(也就是DEBUG),舉個例子:
p "Hello,World,我來學習RGSS語言了!" #我是很可愛的注釋,執行腳本的時候你會無視我!
將這段代碼插入到腳本中,#後面的語句或者注釋將被無視,然而在這段代碼中,無論是什麼都會無效.
=begin
p "Hello,World,我來學習RGSS語言了!" #我是很可愛的注釋,執行腳本的時候你會無視我!
=end
到此,基礎部分完畢,如果你想要學習更深入的知識,請往下看.
四.數據類型
1.數字
數字包括整數和小數,小數在計算機術語中被稱為浮點數,相信大家都明白什麼是整數和小數了.整數包括正整數和負整數,0可以被視為整數,數字屬於常量的一部分.
常見的數字種類有:
1 = 整數
100 = 整數
-10 = 整數
0 = 整數
0.11 = 浮點數
-12.3 = 浮點數
那好,讓我們寫一個腳本來學習如何顯示一個常量的值,在Test腳本中,清除腳本內容,插入下面的代碼:
p 100
運行游戲,看到彈出的對話框顯示:"100",若輸入我們輸入:
p 100.100
作為新手的你覺得會彈出什麼呢,想想,實際上彈出的是100.1,而不是100.100
2.數字的計算
我們在上節講了數字的類型與輸出給用戶的方法,現在我們來體驗一下數字的計算,在腳本 TEST 中插入以下代碼:
p 1+1
運行游戲,看到彈出的對話框顯示:2.這就是常量的加法.你可以很聰明地想像出乘法、除法、減法:
p 3+5
p 3*5
p 3/5
p 3-5
運行游戲,你會發現游戲按腳本順序輸出了加、乘、除、減,你會發現,3/5輸出的是0而不是正確結果,整數和整數的運算,其結果仍舊表現為整數,如果你希望得到浮點數,那麼就應該使被除數或者除數至少有一個是小數形式的表示.請看下面的代碼:
p 3.0/5
p 3/5.0
運行游戲,顯示的結果就都是小數了.值得一提的是還有兩個很有用的算符,求余數(%)和乘方(**),輸入以下代碼:
p 14%4
p 2**3
它們分別輸出了2與8,和預期的正確結果一樣.
3.括弧的用處
各種運算符之間總會存在優先順序,加減乘除的順序是不變的,對於其它你所不熟悉的或者弄不清除的,只要記住一點就可以了,那就是括弧的優先權是最高的,善用括弧能夠至少確保程序的准確性而先不管是不是很難看,當然,強大的RGSS所使用的基本不是只有一個功能,或考得其他功能我們會在以後的章節一一闡述.
4. 常量與變數
常量:常量就是我們經常會用的數字、字元串了,比如我們問一張光碟多少錢,回答說5元,那麼5就是常量,如果說一張光碟的價格不定,在3-5元的范圍內浮動,那麼這就是我們學過的未知數,對於這樣的未知數我們經常會用一個變數來表示.
變數:變數就是我們用一個符號來表示一個我們想要表示的概念,比如我們可以用price這個變數來表示一張光碟的價格.變數與常量的區別就在變數是可以變動的,也就是說我們用變數來定義一個概念後,接下來就會來操作這個變數使它變化.而我們不能讓一個常量變化,比如我們不能讓5=4,但我們可以讓price=4.
命名規則: 變數的取名有以下的限制:
1、必須以英文字母(大小寫均可)、漢字、下劃線開頭.
2、第二個字元開始可以使用數字、英文字母、漢字、下劃線.
3、不能使用保留字作變數的名字.
保留字是保留給系統用的,也就是說系統已經佔用了,以下是系統的保留字:
alias def false nil return unless
and do for not self until
begin else if or super when
break elsif in redo then while
case end mole rescue true yield
class ensure next retry undef
所以不要使用上面列出的單詞做你的變數的名字.
變數的賦值:變數無需事先聲明,可以拿來就用,例如:
a=100
p a
運行腳本,看到彈出的對話框顯示:100 , 但必須先賦值才可以使用變數,否則,試試下面的代碼:
p b
會彈出什麼呢,如果不賦值給變數,就相當於這個變數不存在,而一旦賦值給它,就表明這個變數存在了.
變數的運算:
下面的代碼你應該可以猜出是什麼結果的:
戰斗前的體力=234
戰斗後的體力=200
p 戰斗前的體力
p 戰斗後的體力
繼續:
p 戰斗前的體力-戰斗後的體力
看到了嗎,這里我進行了運算,變數的運算.
就像對於常量一樣,加減乘除和括弧同樣適用於變數的運算:
x=1
y=2
z=3
p x+(y*z)/(y+z)-y+z
但下面的運算是常量所沒有的:
自運算:
x+=5
y*=2
z/=3
p x
p y
p z
+=,-=,*=,/=這四個運算符是自運算符,x+=1相當於x=x+1,其它同理.
全局變數:
局部變數和全局變數的區別在於局部變數只能被所在的腳本訪問,而全局變數能被所有的腳本訪問.
在變數名前加$符號就可以聲明全局變數了.
5. 字元串
顯示字元串:
先看看下面這幾行語句在RGSS中的效果:
p"這將會顯示雙引號"
p'這也會顯示雙引號'
print"這不會顯示雙引號"
print'這也不會顯示雙引號'
把上面的四行語句復制下來,然後在我們剛剛建立好的Test腳本中粘貼,粘貼前最好把Test腳本的內容清除掉,我們只需要測試我們現在的代碼.好,運行游戲,看看效果吧.
首先,看得出來,用來輸出顯示的方法又多了一種:print,不同的是,p可以顯示很多種數據類型,對不同的數據類型,它會按人們容易理解
的格式來顯示,比如說這里的字元串,它都會加上雙引號來告訴人們:這次顯示的是字元串,而print直接顯示字元串本身.
在上面的代碼中,分別輸出下面的四行字元串:
"這將會顯示雙引號"
"這也會顯示雙引號"
這不會顯示雙引號
這也不會顯示雙引號
6.字元串常量:
字元串常量的表示有兩種方法.
1.雙引號表示的字元串:
這種表示方法使得字元串可以支持一些特殊格式,這將是我們用的最多的表示方法,下面會有更詳細的介紹.
2.單引號表示的字元串:
直白的說,單引號所包括的字元串會被原樣顯示出來,也就是說,即使單引號中包含特殊格式,也不會顯示這種特殊格式.
7.字元串變數:
和數字變數一樣,看看例子吧:
1、賦值:
a="歡迎使用RGSS來編程"
print a
結果輸出:歡迎使用RGSS來編程
2、連接:
a="中華人民"
b="共和國"
print a+b
結果輸出:中華人民共和國
3、乘法:
a="連續兩遍"
print a*2
結果輸出:連續兩遍連續兩遍
4、換行符:
\n表示換行,但是只能用在雙引號字元串內,若是在單引號字元串內便不起作用了,看看下面兩個例子:
a='中華人民\n共和國'
b="中華人民\n共和國"
print a
print b
結果輸出:
中華人民\n共和國
中華人民
共和國
5、常量中包含變數:
a="人民"
print "中華#{a}共和國"
結果輸出:中華人民共和國
記住:這個特殊格式和\n一樣只能在雙引號形式的字元串中使用,這里提一下,這里的#符號不是注釋的意思.
再看一個:
a="C:\\Program Files\\RPG Maker XP\\System\\Data\\Skills.rxdata"
print "系統安裝後的初始腳本文件是:#{a}"
你可以試試看下面的例子:
a="人民"
print '中華#{a}共和國'
結果輸出:中華#{a}共和國
五. 控制語句
1. 條件分歧語句
1.比較運算符:
有6個比較運算符,分別是
== 相等
!= 不相等
< 小
> 大
<= 小或相等
>= 大或相等
比較運算符,顧名思義,就是用來比較的,比較的對象可以是任意的,比較的結果是True或者False.
舉例:
p(" 早安 "==" 早安 ") # => true
p(" 早安 "==" 晚安 ") # => false
p (3 + 1 == 3 + 5) # => false
p (3 + 1 == 2 + 2) # => true
觀察一下結果就會明白.
邏輯運算符:
邏輯運算符也有6個,分別是:
與:and , &&
或:or , ||
非:not , !
舉例:
p (100 > 77 and 1 + 1 == 2) # => true
p (100 > 77 && 1 + 1 == 2) # => true
if..elseif..else..end 語句:
結構:
if 條件1
語句1
elseif 條件2
語句2
.
.
else
語句
end
舉例:
x=123
y=23
z=67
a=(x*y*z+x/y+z/y)*(y-z)+x*z
if a>0
print "大於0"
elseif a=0
print "等於0"
else
print "小於0"
end
最常用的還是if...end語句:
金錢數=10
if 金錢數<100
print "對不起,你的錢不夠了.."
end
unless..end 語句:
這是if..end語句的變種,正好跟if..end相反,就是除非的意思:
unless 條件
語句
end
舉例:
金錢數=10
unless 金錢數>=100
print "對不起,你的錢不夠了.."
end
除非你的金錢數大於等於100,否則:「對不起,你的錢不夠了..」
case..when..end 語句:
如果對於把條件限制在某個范圍或者某些特定的值的情況,使用case..end語句更方便:
case 變數
when 特定的值或者范圍
when 特定的值或者范圍
.
.
end
舉例:
主角狀態="昏睡"
case 主角狀態
when "昏迷"
print "你昏迷了.."
when "中毒"
print "你中毒了.."
when "昏睡"
print "你昏睡了.."
end
2.條件賦值語句:
條件賦值語句給我們提供了一個非常方便的if..else..end的簡化版.
(條件1 ? 語句1 : 語句2)
相當於:
if 條件1
語句1
else
語句2
end
舉例:
戰斗狀態=1
print (戰斗狀態>0 ? "勝利" : "失敗")
2.循環
1.while..end 循環:
舉例:
a = 0
i = 1
while i <= 5
a += i
i += 1
end
p a
這很簡單,很容易明白的.
2.for..in..end 循環:
類似於c語言中的for,但不同,in後面給出變數的變化范圍.
3變化范圍:
類似於1..5表示一個變化范圍,其所含的值為大於等於1小於等於5.
舉例:
a = 0
for i in 1..5
a += i
end
p a
這也很簡單,很容易明白的.
4.loop do..end 循環:
舉例:
i = 0
loop do
i += 1
p i
end
上面的代碼會一直循環下去,也就是說是個死循環.只有使用break才可以從中跳出.
5.break 語句:
上面的例子如果改成下面的樣子,就不再是死循環了:
i = 0
loop do
i += 1
if i == 5
break
end
p i
end
break也可以從while、for循環中跳出.
6.next 語句:
跳過本次循環,進入下次循環.
舉例:
for i in 1..5
if i == 3
next
end
p i
end
結果顯示四次,就只有1,2,3,4,5被顯示出來了.
3. 函數
1. 函數的概念:
我們把事先編好的,能夠解決或者說處理某種情況的功能的集合叫做函數.不必在意概念,用得多了自然就明白.其實我們一直在使用的
p,print就是函數的一種,下面介紹一個很有用的函數,隨機函數rand():
rand(x)返回0-(xx-1)范圍內的隨機數,例如:
p rand(100)
返回的數字在0-99范圍內.
我們也可以設計自己的函數以便增加我們需要的功能,更多的時候,我們大多數時間是在跟函數打交道.
2. 函數的聲明:
函數的名字基本上和變數的名字有著相同的限制,例外的情況是,函數可以在名字的最後添加?或!符號,這種符號有著特殊的用處,以後會講到.
函數的聲明要用def..end語句,形如:
def 函數名字
語句
end
我們用rand函數來設計一個自己的函數bet():
def bet
if rand(6)>3
return "大"
else
return "小"
end
end
print bet
這里的return表示函數返回的值,如果省略return也可以,但最好帶上,能夠使程序可讀性更好.
我們給bet函數增加參數:
def bet(x)
if rand(x)>3
return "大"
else
return "小"
end
end
print bet(7)
還可以為參數設置默認值:
def bet(x=7)
if rand(x)>3
return "大"
else
return "小"
end
end
print bet #這和print bet(7)一樣
函數可以有很多參數:
def bet(x,y,z)
if rand(x)>3 and rand(y)>3 and rand(z)>3
return "大"
else
return "小"
end
end
print bet(7,6,10)
4. 重定義函數:
如果定義了兩次相同的函數,則只有後面定義的函數有效,而先前的定義就無效了.
def hello
return" 您好 "
end
def hello
return" 晚安 "
end
p hello #=>" 晚安 "
六. 數組
如果知道將多次對一個變數,例如 $salut賦值,您會怎樣做呢?這在很多情況下都會發生.因此,您可以將所有的變數值放進一個數組里,而不是手動
地給變數重新賦值.
數組允許對每個變數值進行分別的處理.請看如下示例:
$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?'] print $salut
運行上述代碼得到的輸出如下所示:
Hello WorldGood Bye WorldWhat do you mean Good Bye World?
顯然,這不是我們想要的輸出.沒有間隔也沒有換行.因此,我們可以標識希望顯示數組的哪一部分,並使用先前解釋的串聯技術來更方便地提供易讀的輸出.
$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?']
print $salut[0] + "\n"
print $salut[1] + "\n"
print $salut[2] + "\n"
將會導致如下輸出:
Hello World
Good Bye
World What do you mean Good Bye World?
仔細分析這些代碼.如果回顧一下我們建立的數組:
$salut = ['Hello World','Good Bye World','What do you mean Good Bye World?']
我們告訴 Ruby 定義一個名為 salut 的變數,其值為:
$salut = 0 1 2
Hello World Good Bye World What do you mean Good Bye World?
每個值通過一個數字來被識別.數字通過數組中的數字位置來定義.位置總是從 0 開始,並從 0 開始遞增.所以要列印數組中的第 2 個值,
您要輸入:
print $salut[1]
最容易忘記的是欄位從 0 而不是從 1 開始.
七. load,require語句
在許多知名網站上,很多的人都認為RGSS不支持load,requir,語句,如果需要使用的話好去破解Scripts.rxdata文件(XP)或者Scripts.rvdata(VX),其實你不用去研究破解Scripts.rxdata了,因為RGSS完全支持load,require語句,只不過與Ruby語言稍有區別的是這兩個語句只支持絕對地址,也就是說不支持類似於:require "win32/***" 的格式
在我們的試驗腳本中輸入:
load "d:/sequh.rb"
就可以載入D盤的sequh.rb文件了,同理:
require "D:/sequh.rb"
這里我輸入的是絕對路徑,絕對路徑的表示方法是:
把DOS格式的路徑名中的「\」統統改為「/」即可
而相對路徑的獲得,需要一點兒辦法:
因為在我的游戲目錄下有game.exe文件,所以我們可以通過它來獲得游戲目錄,然後得到絕對目錄,把我們的相對路徑加到絕對目錄後面,例
子:
load "#{File.dirname(File.expand_path("Game.exe"))}/scripts/sequh.rb"
其中的File.dirname(File.expand_path("Game.exe"))便是游戲目錄的絕對路徑.
八. 對象和方法
這個代碼段中用到的一些技術和方法您可能是第一次見到.RGSS是一種面向對象的編程(Object Oriented Programming,OOP)語言.使用 OOP 時,通常情況下程序員將調用諸如對象和方法之類的項目.對象就象一個容器.它包含自己特定的變數和函數. 方法是一種被調用的東西,就像函數對對象進行專門處理一樣.如果看一下先前的示例,我們就可以顯示工作中的對象和方法.
while enterWorld = STDIN.gets enterWorld.chop!
這里我們有兩個對象和兩個方法的示例.第一個對象是 enterWorld,第二個對象是 STDIN.enterWorld 對象是用戶定義的對象,而 STDIN 對象(Standard Input 的縮寫)是RGSS內建的.
這個示例中還有兩種方法.第一種是 gets,第二種是 chop!.前面提到過,方法對對象進行專門處理.明確地說,方法將在對象中執行一個操作.用 gets 方法,我們告訴 RGSS 去獲取 STDIN.當 RGSS 看到與 STDIN 關聯的 gets,它就會等待鍵盤輸入和一個回車.簡而言之,STDIN.gets 就是等待用戶輸入一些內容然後敲 Enter 鍵.
第二種方法 chop! 用來對用戶定義的對象 enterWorld 進行專門處理.chop! 方法告訴 enterWorld 將 enterWorld 對象關聯的數據的換行符
和回車符截去.如果不使用 chop!(或者 chomp!),那麼包含在先前代碼上下文中的下面語句永遠都不會為真.
if enterWorld == $salut[0]
因為沒有使用 chop!,所以得出結果將為假,$salut[0] 實際上就等於 $salut[0]\n.新行是由 STDIN 對象從 gets 方法接收的輸入產生的.使用回車將會在值末尾添加一個換行符.
autoit和按鍵精靈 按鍵娃娃這些屬於按鍵工具 可以模擬控制
ruby,lua,php,python vb6.0,C#,java erlang等這些可以模擬控制
C/C++ 匯編 可以控制硬體鍵盤滑鼠
I. 關於Ruby腳本的一個問題
那就不要用 file 變數,參看下面這種寫法:
J. 如何在ruby中調用帶ruby參數的Python或者shell腳本
可以用system來執行shell 腳本,對於python可以在shell中調用python。