| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 4 |
| 经验 | |
| 最后登录 | 2020-7-11 |
| 在线时间 | 1245 小时 |
狂気の月兔
- 梦石
- 0
- 星屑
- 421
- 在线时间
- 1245 小时
- 注册时间
- 2009-4-7
- 回帖
- 866

|
发表于 2013-8-1 16:00:23
|
显示全部楼层
本帖最后由 铃仙·优昙华院·因幡 于 2013-8-1 16:02 编辑
咱只能说用 Win32API 这个 Ruby 类来调用.
引用一下:
[pre lang="ruby" line="1"]
Win32API.new(dllname, proc, import, export)
加载名为dllname的DLL,生成API函数proc的对象。在import中指定proc的参数类型列表,在export中指定proc返回值的类型。
使用下列字符串或数组来指定类型。
"p" 指针
"n", "l" long
"i" int
"v" void
若import为nil,则看成是没有参数。若export为nil,则看做是没有返回值(void)。
[/pre]
Win32API.new 可以成是 C++ 里动态调用所要做的第一步, 也就是
[pre lang="C" line="1"]
HINSTANCE hdll = ::LoadLibrary(dllname);
typedef [export] (*DllFunc)([import]);
DllFunc _DllFunc = (DllFunc)::GetProcAddress(hdll, proc);
[/pre]
以上算是 C++ 代码吧. 虽然要改改,不过了为了对应好看所以就这么写了. 不过既然知道了 API 了, 那么 C++ 应该或多或少知道的吧.
对于 Ruby 就是要调用这个API, Win32API#Call 方法来调用. 其实就是类似函数或者是方法的调用. 相对 C++ 就是, _DllFunc(参数);
一个小小的例子: http://rpg.blue/forum.php?mod=re ... 6&fromuid=63926 122楼
至于说有什么 API 能用, 这个就要看 MSDN 了. 里面有详尽的 API 列表, 功能, 参数等信息. 前提是用的是 Windows 和 RGSS 能调用.
要自定义的话, 那么可以查阅相关语言的 DLL 编写指南.
|
评分
-
查看全部评分
|