Ruby Win32 API-Schnittstelle
Ich muss auf einige Funktionen der win32-Bibliothek in Ruby zugreifen. Ich habe extrem spärliche Informationen über die Win32API-Klasse online gefunden, daher frage ich hier.
Ich weiß, dass Sie so etwas tun können:
function = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')
Aber ich kann diese Funktion mit den aktuellen win32-Bindungen scheinbar nicht aufrufen:
http://msdn.microsoft.com/en-us/library/bb762108%28VS.85%29.aspx
Das Problem liegt in seinem Prototyp:
UINT_PTR SHAppBarMessage(
DWORD dwMessage,
PAPPBARDATA pData
);
Ich werde in der Lage sein, die win32-Ruby-Bindungen zu verwenden, um den Rückgabetyp und den ersten Parameter zu erfassen, der zweite erwartet jedoch eine Struktur. Die Definition der Struktur lautet wie folgt:
typedef struct _AppBarData {
DWORD cbSize;
HWND hWnd;
UINT uCallbackMessage;
UINT uEdge;
RECT rc;
LPARAM lParam;
} APPBARDATA, *PAPPBARDATA;
Ich habe versucht, diese API-Methode mit beiden zu definieren:
api = Win32API.new('shell32','SHAppBarMessage',['L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'],'I')
und
api = Win32API.new('shell32','SHAppBarMessage',['L', 'LLLLLLLL'],'I')
Der erste Fehler tritt jedoch während der "call" -Methode auf, und der zweite Fehler tritt aufgrund der falschen Anzahl von Argumenten auf, die beim Aufruf der "call" -Methode angegeben wurden. Gibt es eine Möglichkeit, diese API-Funktion verfügbar zu machen, ohne ein externes Modul in C ++ zu erstellen?
Vielen Dank.