魔兽地图吧's Archiver

iceboy009 发表于 2008-11-14 21:04

脚本大师通用API调用插件SE_API v0.3

此插件包含以下函数:

[b]function APIOpen(LibName:string; FuncName:string; ParamTypes:string; CallType:string): integer;[/b]
打开指定外部动态链接库LibName中的指定函数FuncName,返回已打开函数的句柄。
LibName: 外部动态链接库文件名,通常是一个*.dll的文件。
FuncName: 需要打开的外部动态链接库中的指定函数的名字,
         *请注意,该名字区分大小写,必须与外部函数库的导出名字一致。
ParamTypes: 函数的参数表示字符串,通常的形式应当为"XXXX:X"
         冒号前面的XXXX每一个X表示该函数的一个参数,X的取值则表示这个参数的类型
         冒号后面的X则表示函数的返回值类型
         可能的函数参数及返回值类型列举如下:
         - B : byte 字节
         - W : Word 字
         - D : DWord 双字
         - I : Integer 整数
         - P : Pointer 指针
         - S : PChar 字符串
         - F : Single 单精度浮点数
         - U : Double 双精度浮点数
CallType: 函数的调用模式,可支持"Stdcall"(简写为"S")和"cdecl"(简写为"C")两种模式
         如果该参数被忽略或者输入了一个不可识别的模式,则默认按"Stdcall"方式调用
         注: Windows系统标准函数都是stdcall模式调用,只有某些特殊情况才需要用到cdecl模式

[b]procedure APIClose(hFunc:integer);[/b]
关闭已经通过APIOpen打开的外部函数句柄
hFunc: 使用APIOpen打开的函数句柄

[b]function APICall(hFunc:integer; Param1,Param2,Param3,...) : Value;[/b]
调用外部动态链接库中的函数实现需要的功能。
hFunc: 通过APIOpen打开的外部函数句柄。
Param1,Param2,Param3,...: 第2至第n个参数都为外部函数所需的参数
      注意,这些外部函数所需参数需要根据前面APIOpen时指定的参数类型来一一正确对号入座,
      否则可能造成外部函数执行不正常。
外部函数的返回值即为本函数的返回值,返回值类型会自行根据外部函数返回值类型转换。



举例:

//首先要打开指定的API函数,注意函数名要区分大小写
set hMessageBox=APIOpen('User32.dll','MessageBoxA','ISSI:I','s')
//调用外部函数,注意第2,3,4,5这四个参数为MessageBox所需的输入参数
set i=APICall(hMessageBox,0,'演示如何直接调用标准外部API函数','测试',0)
//最后记得一定要关闭函数以释放系统资源
do APIClose(hMessageBox)

圣诞#帕金逊~· 发表于 2008-11-14 21:33

支持支持

cctvfive 发表于 2008-11-15 12:07

突破零下载.(葱头:42)

剑魔 发表于 2008-12-15 20:21

不懂。。

lenoov 发表于 2009-1-28 18:11

看了这么多置顶,到底哪里有教做JASS啊……

LClichao 发表于 2009-6-17 06:04

路过 研究下 不知道具体有用没

nononononono 发表于 2009-8-14 12:10

[b]不可以下?[/b]

页: [1]


Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.