1

私はRubyが初めてで、このコードを取得してMessageBoxを呼び出そうとしましたが、できません。何かが欠けていることは知っていますが、それが何であるかはわかりません。これについて何か助けていただければ幸いです。

これまでのコードは次のとおりです。

require 'Win32API'

LoadLibrary = Win32API.new('kernel32','LoadLibrary','P','L')
GetProcAddress = Win32API.new('kernel32','GetProcAddress','LP','L')

Load = LoadLibrary.call('user32.dll')
Proc = GetProcAddress.call(Load,'MessageBox')

Proc.call(0,"Hello World!","MessageBox in Ruby",0)

「Proc.call」以外はすべて問題ないことはわかっています。私は何が欠けていますか?

4

1 に答える 1

0

これはあなたが見ているエラーですか?

undefined method `call' for 0:Fixnum (NoMethodError)

これに使う必要はないと思いますGetProcAddress。メッセージボックスを表示するためのサンプルコードを次に示します。

require 'Win32API'

msgbox = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'], 'I')  
msgbox.call(0, 'Hello World!', 'MessageBox in Ruby', 0)

現在のコードには、呼び出し可能なオブジェクトではなく、Procからの戻り値があります。GetProcAddressこれは0、への呼び出しGetProcAddressが失敗したためだと思います。

于 2012-09-18T13:11:28.627 に答える