2012-09-18 78 views
1

我是Ruby的新手,我一直試圖讓這段代碼去調用 MessageBox,但是不能。我知道我錯過了一些東西,但我不知道 是什麼。任何幫助,將不勝感激!LoadLibrary和GetProcAddress在Ruby中

這裏是到目前爲止的代碼:

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」 OK。我錯過了什麼?

回答

0

這是你看到的錯誤嗎?我不認爲有必要使用GetProcAddress這個。下面是顯示一個消息框一些示例代碼:

require 'Win32API' 

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

在當前的代碼ProcGetProcAddress返回值,而不是一個可調用對象。我懷疑這是0,因爲撥打GetProcAddress失敗。

+0

非常感謝您的幫助。我這樣做的原因是因爲我想了解如何使用LoadLibrary和GetProcAddress調用MessageBox。我得到了你確實的錯誤信息。你給了我正是我想要的東西。謝謝。 – Huxley