Como usar DLL com Harbour

#define DC_CALL_STD 0x0020      // __stdcall
#define DLL_OSAPI DC_CALL_STD
#define STR_LEN 256
#define ACBrLIB "ACBrNFe32.dll"

Function main 
    // Se mandar .f. - imprime o xml 
    // Se mandar .t. - gera o pdf
    ImprimirPDFNfe( 'C:\ARQXML.XML', .F. )
    Return nil

FUNCTION ImprimirPDFNfe(cArq, lPdf)  
     Local cTexto    := ''
   Local cBufferlen
   Local hLib
   hLib       := DllLoad(ACBrLIB)
        iRet       := DllCall(hLib, DLL_OSAPI, "NFE_Inicializar", "", "") 
   bufferLen:= STR_LEN
   cTexto    := Space(bufferLen)
   iRet       := DllCall(hLib, DLL_OSAPI, "NFE_CarregarXML", hb_StrToUTF8(cArq))
   If lPdf 
      iRet       := DllCall(hLib, DLL_OSAPI, "NFE_ImprimirPDF")
   Else
      iRet      := DllCall(hLib, DLL_OSAPI,"NFE_Imprimir", hb_StrToUTF8(""), 1, hb_StrToUTF8(""), hb_StrToUTF8(""), hb_StrToUTF8(""), hb_StrToUTF8(''), hb_StrToUTF8(""))      
   EndIf
   iRet       := DllCall( hLib, DLL_OSAPI,"NFE_Finalizar")    
   hLib       := NIL
   RETURN nil
1 curtida