//SE_APIⲿ׼òv0.3
//ܰ
// - ֧stdcallcdeclֵ÷ʽⲿ̬ӿ
// - ָֺ֧ͼֵ
//   - B : byte ֽ
//   - W : Word 
//   - D : DWord ˫
//   - I : Integer 
//   - P : Pointer ָ
//   - S : PChar ַ
//   - F : Single ȸ
//   - U : Double ˫ȸ
// - Զַ

//ƣĿǰݲְָ֧Ͳĺá

//űʦԴdemoűУصʾű

//ʷ
//v0.30 : ״ηİ汾


::APIOpen
function APIOpen(LibName:string; FuncName:string; ParamTypes:string; CallType:string): integer;
ָⲿ̬ӿ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ģʽ

//Ҫָ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)

::APIClose
procedure APIClose(hFunc:integer);
رѾͨAPIOpen򿪵ⲿ
hFunc: ʹ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)

::APICall
function APICall(hFunc:integer; Param1,Param2,Param3,...) : Value;
ⲿ̬ӿеĺʵҪĹܡ
hFunc: ͨAPIOpen򿪵ⲿ
Param1,Param2,Param3,...: 2nΪⲿĲ
      ע⣬ЩⲿҪǰ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)
