Necesito acceder a algunas funciones de la biblioteca win32 en ruby. He encontrado información muy escasa en la clase de Win32API en línea, así que estoy preguntando aquí.Ruby win32 api interface
sé que se puede hacer algo como esto:
function = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')
Pero me parece que no puede ser capaz de llamar a esta función con los enlaces actuales Win32:
http://msdn.microsoft.com/en-us/library/bb762108%28VS.85%29.aspx
El el problema está en su prototipo:
UINT_PTR SHAppBarMessage(
DWORD dwMessage,
PAPPBARDATA pData
);
I'll be abl e para usar los enlaces de rubí win32 para obtener 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;
Me trataron de 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 la "llamada "método y el segundo no se ejecuta debido a la cantidad incorrecta de argumentos especificados en la invocación del método" llamada ". ¿Hay alguna forma de exponer esta función api sin recurrir a la creación de un módulo externo en C++?
Gracias.