Ruby Win32 API интерфейс

Мне нужно получить доступ к нескольким функциям библиотеки win32 в ruby. Я нашел чрезвычайно скудную информацию о классе Win32API в Интернете, поэтому я спрашиваю здесь.

Я знаю, что вы можете сделать что-то вроде этого:

function = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')

Но я не могу вызвать эту функцию с текущими привязками win32:

http://msdn.microsoft.com/en-us/library/bb762108%28VS.85%29.aspx

Проблема в его прототипе:

UINT_PTR SHAppBarMessage(      
    DWORD dwMessage,
    PAPPBARDATA pData
);

Я смогу использовать привязки win32 ruby для получения возвращаемого типа и первого параметра, однако второй ожидает структуру. Определение структуры выглядит следующим образом:

typedef struct _AppBarData {
    DWORD cbSize;
    HWND hWnd;
    UINT uCallbackMessage;
    UINT uEdge;
    RECT rc;
    LPARAM lParam;
} APPBARDATA, *PAPPBARDATA;

Я попытался определить этот метод API, используя оба:

api = Win32API.new('shell32','SHAppBarMessage',['L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'],'I') 

а также

api = Win32API.new('shell32','SHAppBarMessage',['L', 'LLLLLLLL'],'I')

но первый из них завершается ошибкой во время «вызова» метод и второй не запускаются из-за неправильного количества аргументов, указанных в & quot; call & quot; вызов метода. Есть ли способ предоставить эту функцию API, не прибегая к созданию внешнего модуля в C ++?

Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос