chamada de dll em advpl

Upload: alessandro-freire

Post on 26-Feb-2018

218 views

Category:

Documents


0 download

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