设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

利用DLL完成RM不可能任务!(1)Win32API类的使用

2007-4-22 00:00| 发布者: 叶舞枫| 查看: 2778| 评论: 0|原作者: gpra8764

摘要:     作者 gpra8764 版本 没有 相关网址 点此进入讨论贴 范例工程 没有范例   教程内容 实际上在RGSS自带的那个帮助文档里,有很多的Ruby的内容是没有提到的,比如里面就
 
 

作者

gpra8764

版本

没有

相关网址

点此进入讨论贴

范例工程

没有范例


 

教程内容

实际上在RGSS自带的那个帮助文档里,有很多的Ruby的内容是没有提到的,比如里面就没有提到怎么样使用API(DLL),这样的话很多的功能就浪费了。
美兽制作的很多东西都是使用到API的,但是没有相关说明的话是没有那么容易理解的。
所以,诞生了这个教程,详细告诉RMER如何利用DLL来增强RM,完成RM无法单独完成的任务!

教程第一弹:Win32API类的介绍

Win32API是Ruby中一个为调用Win32 API而准备的类。

其包含以下方法:

#大小写是不用我提示的,必须要注意哦
Win32API.new(dllname, proc, import, export)
#功能:加载名为dllname的DLL,生成DLL导出API函数中proc的对象,在import中指定proc的参数类型列表,在export中指定proc返回值的类型。这里的DLL可以存在于系统的System32(WinXP)目录下,也可以是游戏根目录。proc就是选择DLL导出函数中的一个。关于参数的类型使用下列字符串或数组来指定类型。

"p" 指针
"n","l" long
"i" int
"v" void

若import为nil,则看成是没有参数。若export为nil,则看做是没有返回值(void)。

#这里就是说首字母不分大小写
Win32API#call([args ...])
Win32API#Call([args ...])
#功能:调用“声明过”的API函数。参数和返回值与new过程中申明的一一对应。若是传递了指针,应该预先开辟出保存空间(否则内存混乱……)。

例如调用一个返回字符串的函数时应该这样:

obj = Win32API.new 'dllname.dll', 'foo', 'p', 'v'
arg = "\0" * 256
obj.call(arg)

传递指针数组时,应该这样处理。

obj = Win32API.new 'dllname.dll', 'foo', 'p', 'v'
args = ["\0" * 256, "\0" * 256, "\0" * 256,]
obj.call(args.pack("p3"))

总而言之就这些了,因为不是专业搞这个的,描述的不好不准确的地方还请大家指教,尤其是美兽啦。


下一期:Win32API调用示例——固定游戏窗口于顶层

 
 

教程的通用说明

本站发布的教程,大多经过一些测试,应该都能够实现相应功能。但不保证所有的教程都是最优化的制作方法。

相关问题,点击发布贴进行讨论。谢谢您的鼓励与支持。


鲜花

刚表态过的朋友 (0 人)

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-19 22:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部