本文主要是介绍ruby的魅力:直接呼叫Win32API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ruby的魅力:直接呼叫Win32API
Ruby是很强大,可以利用附加库dl/win32的Win32API模块直接呼叫win32API
Win32API.new
参数1 字符串 呼叫dll名称
参数2 字符串 dll中dllexport的名称
参数3 字符串数组 表示每个参数的类型 L代表Long P代表Point I代表Int V代表Void (在实际使用的时候HResult和各种Handle都是Long,字符串是P)
参数4 字符串 表示返回值类型 同上
require " dl/win32 "
FindWindow = Win32API.new ' user32.dll ' , ' FindWindow ' , % w(L P), ' L '
SetWindowText = Win32API.new ' user32.dll ' , ' SetWindowText ' , % W(L P), ' I '
if ARGV.length == 0 then
puts " 使用说明: "
puts " 一个参数时,是根据窗体标题查看窗体ID "
puts " 两个参数时,是根据参数1的标题查找窗体,然后更改为参数2的标题 "
elsif ARGV.length > 0 then
win = FindWindow.call(0,ARGV.shift)
puts win
if win != 0 then
bSet = SetWindowText.call(win, ARGV.shift)
if bSet == 1 then
puts " Success! "
else
puts " Fail! "
end
end
end
FindWindow = Win32API.new ' user32.dll ' , ' FindWindow ' , % w(L P), ' L '
SetWindowText = Win32API.new ' user32.dll ' , ' SetWindowText ' , % W(L P), ' I '
if ARGV.length == 0 then
puts " 使用说明: "
puts " 一个参数时,是根据窗体标题查看窗体ID "
puts " 两个参数时,是根据参数1的标题查找窗体,然后更改为参数2的标题 "
elsif ARGV.length > 0 then
win = FindWindow.call(0,ARGV.shift)
puts win
if win != 0 then
bSet = SetWindowText.call(win, ARGV.shift)
if bSet == 1 then
puts " Success! "
else
puts " Fail! "
end
end
end
这篇关于ruby的魅力:直接呼叫Win32API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!