Interfejs api Ruby Win32

Muszę uzyskać dostęp do kilku funkcji biblioteki win32 w ruby. Znalazłem bardzo rzadkie informacje na temat klasy Win32API online, więc pytam tutaj.

Wiem, że możesz zrobić coś takiego:

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

Ale wydaje mi się, że nie mogę wywołać tej funkcji z bieżącymi powiązaniami win32:

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

Problem tkwi w jego prototypie:

UINT_PTR SHAppBarMessage(      
    DWORD dwMessage,
    PAPPBARDATA pData
);

Będę mógł używać powiązań ruby ​​win32 do pobrania typu zwracanego i pierwszego parametru, jednak drugi oczekuje struktury. Definicja struktury jest następująca:

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

Próbowałem zdefiniować tę metodę api przy użyciu obu:

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

i

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

ale pierwsza z nich ulega awarii podczas metody „call”, a druga nie działa z powodu niewłaściwej liczby argumentów określonych w wywołaniu metody „call”. Czy istnieje sposób na ujawnienie tej funkcji api bez uciekania się do tworzenia zewnętrznego modułu w C ++?

Dzięki.

questionAnswers(3)

yourAnswerToTheQuestion