Project1

标题: 关于调用自已编写的dll问题,各位好汉帮下忙 [打印本页]

作者: dengwei    时间: 2013-2-27 21:52
标题: 关于调用自已编写的dll问题,各位好汉帮下忙
    近日,我在编写一个脚本时遇到调用自己编写的dll时开始头痛.......
我一开始用:
Win32ApI调用,结果无效,才发现它只支持系统ApI函数....
我尝试在前加两行代码;
require 'rubygems'
require 'win32api'
Win32API......
发现找不到定义的那两个文件.....

接着又用;
extern.declare....
结果发现不支持....

最后我尝试调用系统API来调用我的dll,让我头痛的事又出现了,在调用系统ApI取游戏窗口句柄时却反回一个二近制字串符给我....这让老夫如何是好,所以想求众人帮助....

顺便给个类型表,包函所有内型,仿下例子;
i = 整数型
l = 长整数型
p = 子程序指针
.......

谢谢了,到时脚本写好后大家捧个场,呵呵......
作者: zhangbanxian    时间: 2013-2-27 21:52
本帖最后由 zhangbanxian 于 2013-2-28 09:32 编辑

a = Win32API.new("dll名","函数名","参数类型","返回类型")#注意这只是loadlibrary加getprocadress
a.call(参数1,参数2,...)#这里才是调用
调用自己写的dll是没问题的,注意dll名和函数名是否写错...
另外,参数类型就这么几个i和l时返回与返回值相等的整数,p时返回返回值指向的字符串,可以用字符串pack与unpack来转化...
还有"v"代表没有参数
作者: 羞射了    时间: 2013-2-27 23:00
变量 = Win32API.new(DLL名,……) ,dll放在游戏根目录下,我看很多脚本里都是这样调用的,并不是LZ说的那样吧?具体太专业的我也不懂。
作者: dengwei    时间: 2013-2-28 06:53
羞射了 发表于 2013-2-27 23:00
变量 = Win32API.new(DLL名,……) ,dll放在游戏根目录下,我看很多脚本里都是这样调用的,并不是LZ说的那 ...

win32api它只能调用内部系统ApI,如user32,shell32......




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1