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 ++?
Благодарю.