Interfaz de Rubi Win32 api

Necesito acceder a algunas funciones de la librería win32 en ruby. He encontrado información muy escasa en la clase de Win32API en línea, así que estoy preguntando aquí.

Sé que puedes hacer algo como esto:

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

Pero parece que no puedo llamar a esta función con los enlaces win32 actuales:

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

El problema está en su prototipo:

UINT_PTR SHAppBarMessage(      
    DWORD dwMessage,
    PAPPBARDATA pData
);

Podré usar los enlaces ruby ​​de win32 para capturar el tipo de retorno y el primer parámetro, sin embargo, el segundo espera una estructura. La definición de la estructura es la siguiente:

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

Intenté definir este método api usando ambos:

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

y

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

pero el primero segfaults durante el método de "llamada" y el segundo no se ejecuta debido a la cantidad incorrecta de argumentos especificados en la invocación del método de "llamada". ¿Hay alguna forma de exponer esta función api sin tener que recurrir a la creación de un módulo externo en C ++?

Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta