Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Função: ExeDLLRun2

Executa functions ou procedures de uma determinada DLL - Dynamic-link library (Biblioteca de ligação dinâmica).

ExeDLLRun2 ( < nHandle>, < nOpc>, < cBuffer> ) --> nRet

 

NomeTipoDescriçãoObrigatórioReferência
nHandleNuméricoIndica o handle da DLL obtida através da função ExecInDLLOpen().X 
nOpcNuméricoIndica a opção que será executada pela DLL.X 
cBufferCaracterIndica o buffer, no formato caracter, que será recebido pela DLL.X 

 

nRet
    (numerico)
  • Retorno vindo da DLL após o processamento.
A variável cBuffer tem limite de 20000 caracteres, para ser passada como referencia.
//============================================================
// DLL DE EXEMPLO EM DELPHI
//============================================================
library TSTDLL;
uses  Dialogs;
{$R *.RES}
function ExecInClientDLL( aFuncID: Integer;                          
 aParams: PChar;                         
 aBuff: PChar;                         
 aBuffSize: Integer ): integer; stdcall;
begin 
 if aFuncID=1 then  begin    
  // Roda opção 01    
  showmessage('Executando pela DLL - Texto via parametro: '+chr(13) + aParams);    
  result:=999; 
 end; 
 if aFuncID=2 then begin     
  // Roda opção 02    
  result:=-1; 
 end;
end;
exports ExecInClientDLL;
begin
end.
//============================================================
// ROTINA EM AdvPL PARA CHAMADA DA DLL
//============================================================
// Abre Dll
hHdl := ExecInDLLOpen( "TSTDLL.DLL" ) 
// ----------------------------------------------------------------
// Envia comando para execução, repare que estamos
// usando a opção "1" no momento de chamar a DLL.
// ----------------------------------------------------------------
// ExecInDllRun não retorna valor da DLL
buffer:= "Executando a partir da ExecInDllRun..."
xRet1 := ExecInDllRun( hHdl, 1, @buffer ) 
alert("Retorno da ExecInDllRun: " + xRet1)
// ExeDllRun2 retorna valor numérico da DLL
buffer:= "Executando a partir da ExeDllRun2..."
nRet2 := ExeDllRun2( hHdl, 1, @buffer )
alert("Retorno da ExeDllRun2: " + StrZero(nRet2,3))      
// ExeDllRun3 retorna valor numérico da DLL
buffer:= "Executando a partir da ExeDllRun3..."
nRet3 := ExeDllRun3( hHdl, 1, @buffer )
alert("Retorno da ExeDllRun3: " + StrZero(nRet3,3))      
// ----------------------------------------------------------------
// Fecha a DLL
ExecInDllClose( hHdl )
Microsiga Protheus 8.11 , TOTVS Application Server 10 , ByYou Application Server

 

 

 

  • No labels