chamada de dll em advpl
TRANSCRIPT
-
7/25/2019 Chamada de Dll Em Advpl
1/3
CHAMADA DE DLL EM ADVPLJOSE ROBERTO [email protected] : [email protected] :htt!:""#oserobertoteixeira.blogs!ot.com
possvel executar qualquer DLL usando ADVPL, desde que a DLL respeite os itensabaixo
1 - A DLL, deve possuir o seguinte mtodo a ser exportada:
EXEMPL C!!"
int DLL_EXPORT ExecInClientDLL(int nParamHdl, CHAR* cParameters, CHAR*cBuer, int n!i"eBuer#
2 - Caso a sua DLL seja em C, C++ o cabeao ! deve possuir :
$inde __%AI&_H__$deine __%AI&_H__
$include 'ind)s+
$ide B-ILD_DLL $deine DLL_EXPORT __decls.ec(dllex.)rt#$else $deine DLL_EXPORT __decls.ec(dllim.)rt#$endi
$ide __c.lus.lusextern /C/
0$endi
int DLL_EXPORT ExecInClientDLL(int nParamHdl, CHAR* cParameters,CHAR* cBuer, int n!i"eBuer#1
$ide __c.lus.lus2$endi
$endi 33 __%AI&_H__
mailto:[email protected]:[email protected]://joserobertoteixeira.blogspot.com/http://joserobertoteixeira.blogspot.com/mailto:[email protected]:[email protected]://joserobertoteixeira.blogspot.com/ -
7/25/2019 Chamada de Dll Em Advpl
2/3
#ource C!! "
$include /main+/
$ide DLLDIR_EX $deine DLLDIR __decls.ec(dllex.)rt#$else $deine DLLDIR __decls.ec(dllim.)rt#$endi
int DLL_EXPORT ExecInClientDLL(int _4uncti)nId, CHAR* _Parameters, CHAR*_Buer, int _!i"eBuer #0 %essa5eB)xA(6, _Parameters, /DLL %essa5e/, %B_O7 8
%B_ICO&I&4OR%ATIO
return 9 1
2
BOOL :I&API Dll%ain(HI&!TA&CE +instDLL, D:ORD dReas)n, LP;OIDl.rea?1
case DLL_THREAD_ATTACH= 33 attac+ t) t+read
>rea?1
case DLL_THREAD_DETACH= 33 detac+ r)m t+read >rea?1 2 return TR-E1 33 succesul2
-
7/25/2019 Chamada de Dll Em Advpl
3/3
$ % Caso se&a e' Delp(i criar a inter)ace "
uncti)n ExecInClientDLL(nParamHdl = inte5er 1 cParameters = Pc+ar 1cBuer = Pc+ar1 n!i"eBuer = inte5er # = inte5er 1 stdcall 1 ex.)rt 1
E os par*'etros int n"aram#d$, C#A%& c"arameters, C#A%& c'u(er, intn)i*e'u(er
nt n"aram#d$ Valor retornado pela c(a'ada da DLLc"arameters +ualquer valor strin a ser executado, ou tratado pela DLLc'u(er Cadeia de caracters a ser usado na DLLn)i*e'u(er -a'an(o do .u/er 0 de acordo co' c.u/er 1Caracters2
C(a'a'ando a DLL
3include 4prot(eus5c(4
6ser 7unction -L8.EXlocal nHandle "9 :local c;etDLL "9 :
nHandle "9 Exec8nDllpen1