http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/621-trabalhando-com-dll-terceiros/read.awp
http://help.windev.com/en-US/?3014006&name=LoadDLL
http://help.windev.com/en-US/?3014003&name=CallDLL32
http://help.windev.com/en-US/?3014009&name=FreeDLL
//OBS.:
//Inicialmente registre por dos comando: regsvr32.exe
//Nao sei se alguem precisa mais ai vai a solução:
//StringRetrieve(retornomemoria , srUNICODEAddress )
//alterei de
//srASCIIZAddress para srUNICODEAddress
//ficou assim:
retornomemoria is int = CallDLL32("spdNfeLib.dll","StatusDoServico",Caminhoini,1)
xmlretorno is string = StringRetrieve ( retornomemoria , srUNICODEAddress )
Info (xmlretorno)
//Sobre o calldll32 retorna somente inteiro ai para ler o retorno string precisei fazer dessa forma:
hInst is int = LoadDLL("nfe.dll")
//hInst = LoadDLL("spdNfeLib.dll")
IF hInst = 0 THEN
Error(ErrorInfo())
ELSE
nAddrASCIIZString is int = CallDLL32("nfe.dll", "VLK_ConsultaStatusWS", Caminhoini,1)
sStringContent is string = StringRetrieve ( nAddrASCIIZString , srASCIIZAddress )
Info(sStringContent)
//sRetorno is string = sString is string CallDLL32("nfe.dll","VLK_ConsultaStatusWS",caminhoini,1)
//CallDLL32("spdNfeLib.dll","StatusDoServico",caminhoini,1)
FreeDLL(hInst)
END
//O stringretrieve que converte de int para string
//Vejamos o seguinte exemplo:
//EM CLARION:
PUBLIC *CLASTRING FastQRCode(*CLASTRING,*CLASTRING)
//Obs.: é com ponteiro
//Não é uma simples string
//é um ponteiro de string
//com endereçamento de memoria
//Voce em que tomar cuidado para não mandar um caminhao entrar numa garagem de um fusca
//ai não da certo, a tipagem de campos algo bem sério para a questão da prototipação de Dlls de terceiros.
//em seu sistema, pois uma vez mal feito vai gerar excessoes, exceptions GPFs em seu sistema.
//A Dll deve ser encaixada corretamente em seu sistema
//A variavel do tipo VARIANT aceita qualquer coisa bem como a BUFFER na maioria dos casos
//Inicialmente registre por dos comando: regsvr32.exe
//Nao sei se alguem precisa mais ai vai a solução:
//StringRetrieve(retornomemoria , srUNICODEAddress )
//alterei de
//srASCIIZAddress para srUNICODEAddress
//ficou assim:
retornomemoria is int = CallDLL32("spdNfeLib.dll","StatusDoServico",Caminhoini,1)
xmlretorno is string = StringRetrieve ( retornomemoria , srUNICODEAddress )
Info (xmlretorno)
//Sobre o calldll32 retorna somente inteiro ai para ler o retorno string precisei fazer dessa forma:
hInst is int = LoadDLL("nfe.dll")
//hInst = LoadDLL("spdNfeLib.dll")
IF hInst = 0 THEN
Error(ErrorInfo())
ELSE
nAddrASCIIZString is int = CallDLL32("nfe.dll", "VLK_ConsultaStatusWS", Caminhoini,1)
sStringContent is string = StringRetrieve ( nAddrASCIIZString , srASCIIZAddress )
Info(sStringContent)
//sRetorno is string = sString is string CallDLL32("nfe.dll","VLK_ConsultaStatusWS",caminhoini,1)
//CallDLL32("spdNfeLib.dll","StatusDoServico",caminhoini,1)
FreeDLL(hInst)
END
//O stringretrieve que converte de int para string
//Vejamos o seguinte exemplo:
//EM CLARION:
PUBLIC *CLASTRING FastQRCode(*CLASTRING,*CLASTRING)
//Obs.: é com ponteiro
//Não é uma simples string
//é um ponteiro de string
//com endereçamento de memoria
//Voce em que tomar cuidado para não mandar um caminhao entrar numa garagem de um fusca
//ai não da certo, a tipagem de campos algo bem sério para a questão da prototipação de Dlls de terceiros.
//em seu sistema, pois uma vez mal feito vai gerar excessoes, exceptions GPFs em seu sistema.
//A Dll deve ser encaixada corretamente em seu sistema
//A variavel do tipo VARIANT aceita qualquer coisa bem como a BUFFER na maioria dos casos
Posté le 17 septembre 2015 - 17:16
Principal noção:
A) Carrega uma Dll na memória com LoadDLL (Function)
http://help.windev.com/en-US/?3014006&name=LoadDLL
<Result> = LoadDLL(<DLL Name>)
Ex.:
hInst is int
hInst = LoadDLL("MyDLL.DLL")
IF hInst = 0 THEN
Error(ErrorInfo())
ELSE
Info("DLL loaded")
FreeDLL(hInst)
END
Executa um metodo interno de uma DLL com CallDLL32 (Function)
http://help.windev.com/en-US/?3014003&name=CallDLL32
<Result> = CallDLL32(<DLL Name>, <Function Number> [, <Parameter 1> [, <Parameter 2> [, ... ]]])
Ex.;
CallDLL32("USER32", "SendMessageA", hWnd, wMsg, lParam1, lParam2)
C) Libera uma DLL com FreeDLL (Function)
http://help.windev.com/en-US/?3014009&name=FreeDLL
Ex.:
hInst = LoadDLL("MyDLL.DLL")
IF hInst = 0 THEN
Error("Error during the unload operation")
ELSE
CallDLL32("MyDLL", "FunctionA", par1, par2)
CallDLL32("MyDLL", "FunctionB", par1)
FreeDLL(hInst)
END
Posté le 17 septembre 2015 - 17:21
|
Outros links:
Selecting_the_libraries // Selecionando As Bibliotecas
http://help.windev.com/en-US/?3515004&name=Selecting_the_libraries
http://help.windev.com/en-US/?2025009&name=Standalone_executable
http://help.windev.com/en-US/?2025002
*
Returns the list of libraries (".DLL" files) used by one of the applications currently run. This application can correspond to a WinDev application, a WinDev Mobile application or another application.
Selecting_the_libraries // Selecionando As Bibliotecas
http://help.windev.com/en-US/?3515004&name=Selecting_the_libraries
http://help.windev.com/en-US/?2025009&name=Standalone_executable
http://help.windev.com/en-US/?2025002
*
Returns the list of libraries (".DLL" files) used by one of the applications currently run. This application can correspond to a WinDev application, a WinDev Mobile application or another application.
Retorna a lista de bibliotecas (arquivos ".dll") utilizados por um dos aplicativos em execução. Esta aplicação pode corresponder a uma aplicação WINDEV, uma aplicação WINDEV móvel ou outra aplicação.
http://help.windev.com/en-US/?3035009&name=ExeListDLL
The list of libraries (".DLL" files) used by the current WinDev or WinDev Mobile application or by the current WebDev site. Only the libraries loaded in memory are listed.
http://help.windev.com/en-US/?3035009&name=ExeListDLL
The list of libraries (".DLL" files) used by the current WinDev or WinDev Mobile application or by the current WebDev site. Only the libraries loaded in memory are listed.
A lista de bibliotecas (arquivos ".dll") utilizados pelo WINDEV atual ou WINDEV aplicação móvel ou pelo site WebDev atual. Somente as bibliotecas carregadas na memória são listados.
http://help.windev.com/en-US/?3064006&name=ListDLL
API do Windows
http://help.windev.com/en-US/?3014005&name=API
e
http://help.windev.com/en-US/?1000019149&name=API_description
Ex.:
API("USER32", "SendMessageA", hWnd, wMsg, lParam1, lParam2)
<Result> = API(<DLL Name> , <Function Name> [, <Parameter 1> [, <Parameter 2> [, ...]]])
Código 34 é um erro de DLL
http://help.windev.com/en-US/?2425&name=ERR_NO_DLLEXE
Unable to load the <DLL_NAME> DLL. ERR_NO_DLLEXE (34)
http://help.windev.com/en-US/?2526&name=ERR_BAD_DLLEXE
The <DLL_NAME> DLL is not compatible with this version of WEBDEV. ERR_BAD_DLLEXE
--
Adriano Jose Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
______________________________________________
Nenhum comentário:
Postar um comentário