Utilizar métodos de uma DLL de terceiros.

120 views
Skip to first unread message

Vinicius Ville

unread,
Feb 20, 2014, 1:56:17 PM2/20/14
to dug...@googlegroups.com

Estou precisando utilizar métodos de uma DLL que foi desenvolvida por terceiros. Tenho somente o arquivo ".DLL".

A documentação da DLL é escassa... existe um exemplo de execução do método que preciso em VB

Private Const TamMsgErro As Long = 1000
Dim oTED As New clsGeraMidiaTed
Dim lResult As Long
Dim sMsgErroTED As String * TamMsgErro

'Chamada no Projeto
Set oTED = CreateObject("PRGerarMidiaTED.clsGeraMidiaTED")

lResult = oTED.Gerar_MidiaTEDDat(sListaArqEntrada, _
                                 sArqSaida, _
                                 sTipoDoc, _
                                 sMsgErroTED, _
                                 TamMsgErro)
If lResult <> 0 Then
  MsgBox sMsgErroTED
Else
  MsgBox "Arquivo [" & sArqSaida & "] gerado com sucesso !"
End If 

Preciso desenvolver em Delphi, e o problema que estou tendo é que o método "Gerar_MidiaTEDDat" não é exportado pela DLL. Este método está em uma classe na DLL.

Utilizando o PE Explorer consegui obter os seguintes dados da DLL:

//PRGerarMidiaTED
//Version: 1.0
PRGerarMidiaTED;
GUID = {DA0AA6B5-73AC-41B7-BBA5-DF03D6367C63};

Dispatch _clsGeraMidiaTed;
  GUID = {EEF15A9A-5C3E-45A0-B876-4E10381C7D2E};
  function QueryInterface(riid: ^GUID; out ppvObj: ^^VOID); stdcall;
  function AddRef: UI4; stdcall;
  function Release: UI4; stdcall;
  function GetTypeInfoCount(out pctinfo: ^UINT); stdcall;
  function GetTypeInfo(itinfo: UINT; lcid: UI4; out pptinfo: ^^VOID); stdcall;
  function GetIDsOfNames(riid: ^GUID; rgszNames: ^^I1; cNames: UINT; lcid: UI4; out     rgdispid: ^I4); stdcall;
  function Invoke(dispidMember: I4; riid: ^GUID; lcid: UI4; wFlags: UI2; pdispparams: ^DISPPARAMS; out pvarResult: ^Variant; out pexcepinfo: ^EXCEPINFO; out puArgErr: ^UINT); stdcall;
  function Gerar_MidiaTEDDat(sListaArqEntrada: BSTR; sArqSaida: BSTR; sTipoDoc: BSTR; out sMsgErro: ^BSTR; lTamMsgErro: I4): I4; stdcall;
  function Verificar_VersaoGerarMidiaTED(out sVersaoGerarMidia: ^BSTR; out sMsgErro: ^BSTR; lTamMsgErro: I4): Bool; stdcall;

CoClass clsGeraMidiaTed;
GUID = {664BF784-A2D6-477B-8022-1F32FDD90FD6};

Nas funções exportadas o PE Explorer me indicou que existe a função DllGetClassObject que deve ser utilizada para obter a instancia da classe, porém não encontrei exemplos de como fazer isto.

Alguma sugestão ?

Newton Michel De Oliveira

unread,
Feb 20, 2014, 3:16:34 PM2/20/14
to dug...@googlegroups.com
Que dll é esta? Compartilha que dai a ajuda pode ser mais produtiva

Enviado via iPhone
--
--
Você recebeu esta mensagem porque está inscrito no "DUG-RS -
Delphi Users Group Rio Grande do Sul" em Grupos do Google.
Acesse o nosso BLOG em http://www.dug-rs.org e contribua com a comunidade Delphi do Rio Grande do Sul
Para postar neste grupo, envie um e-mail para dug...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para
dug-rs-un...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com.br/group/dug-rs?hl=pt-BR
 
Twitter: @dugrs
http://www.facebook.com/groups/dugrs/
http://www.Vimeo.com/dugrs
 
---
You received this message because you are subscribed to the Google Groups "DUG-RS - Delphi Users Group Rio Grande do Sul" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dug-rs+un...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Vinicius Ville

unread,
Feb 20, 2014, 3:28:24 PM2/20/14
to dug...@googlegroups.com
Em anexo a DLL, e o manual que está disponível no site do sefaz-rs,

Ela serve para gerar arquivos no formato identificado pelo TED.
Basicamente você passa o caminho do txt (e alguns outros parâmetros) para ela, e ela gera o arquivo no formato TED.


--
Vinicius Ville
PRGerarMidiaTED.dll
DescricaoDaDLLPRGerarMidiaTED.PDF

Daniel Franzini

unread,
Feb 20, 2014, 3:19:48 PM2/20/14
to dug...@googlegroups.com
Parece que essa DLL é um servidor COM (pelo jeito como o VB6 está usando ela).

O jeito de usar é diferente. Você tem que instanciar um objeto COM com o mesmo GUID e o Windows faz uma mágica.

Procura algo sobre usar COM em Delphi no google que você consegue a reposta. Eu fiz isso faz tempo em Delphi 5 e funcionava bastante bem.
--
Daniel

"Let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do." (Donald Knuth)

"Yes, technogeeks can be funny, even if only to each other." (http://www.boogieonline.com/revolution/science/humor/)"

"Man is driven to create; I know I really love to create things. And while I'm not good at painting, drawing, or music, I can write software." (Yukihiro Matsumoto, a.k.a. ``Matz'')

Vinicius Ville

unread,
Feb 20, 2014, 7:44:51 PM2/20/14
to dug...@googlegroups.com

Acho que é por aí mesmo Daniel. Vou dar uma pesquisada. Valeu!!!

Reply all
Reply to author
Forward
0 new messages