相关疑难解决方法(0)

Ruby win32 api接口

我需要在ruby中访问win32库的一些函数.我在网上找到了关于Win32API类的非常稀少的信息,所以我在这里问.

我知道你可以这样做:

function = Win32API.new('user32','MessageBox',['L', 'P', 'P', 'L'],'I')
Run Code Online (Sandbox Code Playgroud)

但我似乎无法使用当前的win32绑定调用此函数:

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

问题在于它的原型:

UINT_PTR SHAppBarMessage(      
    DWORD dwMessage,
    PAPPBARDATA pData
);
Run Code Online (Sandbox Code Playgroud)

我将能够使用win32 ruby​​绑定来获取返回类型和第一个参数,但是,第二个参数需要一个结构.结构的定义如下:

typedef struct _AppBarData {
    DWORD cbSize;
    HWND hWnd;
    UINT uCallbackMessage;
    UINT uEdge;
    RECT rc;
    LPARAM lParam;
} APPBARDATA, *PAPPBARDATA;
Run Code Online (Sandbox Code Playgroud)

我尝试使用两者来定义这个api方法:

api = Win32API.new('shell32','SHAppBarMessage',['L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'],'I') 
Run Code Online (Sandbox Code Playgroud)

api = Win32API.new('shell32','SHAppBarMessage',['L', 'LLLLLLLL'],'I')
Run Code Online (Sandbox Code Playgroud)

但是第一个在"调用"方法期间发生了段错误,而第二个由于"调用"方法调用中指定的参数数量错误而无法运行.有没有办法公开这个api函数而不需要在C++中创建外部模块?

谢谢.

c++ ruby winapi

6
推荐指数
1
解决办法
5311
查看次数

标签 统计

c++ ×1

ruby ×1

winapi ×1