Como acessar uma dll

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Como acessar uma dll

Mensagem por jairfab »

Eu gostaria de uma ajuda dos amigos para fazer uma função para acessar uma DLL.
Tenho um exemplo em Delphi e gostaria de fazer uma função em xharbour com a mesma funcionalidade.

Sei que aqui no fórum tem muitos colegas que com certeza saberia fazer esta função em xharbour.

A minha maior dificuldade está exatamente na função TCertfly.Assinar(.....)

Esta função foi escrita em cSharp e, tem o objetivo de assinar o xml com certificado digital tipo A3, a minha ideia e fazer a mesma funcionalidade também para o certificados A1 e poder utilizar no harbour e no xharbour, a parte mais difícil seria possibilitar a DLL ser utilizada em qualquer linguagem de programação e, a DLL já está com esta implementação, agora eu tenho apenas um exemplo de consumir está DLL em Delphi e gostaria de fazer isto também no xHarbour, conto com o apoio dos amigos.

Este é o código da função em DELPHI

Código: Selecionar todos

unit ExemploCertFly;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

uses StrUtils, Certfly;

procedure TForm2.Button1Click(Sender: TObject);
var
  Ret: Integer;

function ExtraiURI(const AXML: String): String;
var
  I, J: integer;
begin
  Result := '';
  I := PosEx('Id=', AXML, 6);
  if I = 0 then
    I := PosEx('id=', AXML, 6);
  if I = 0 then       // XML não tem URI
    exit ;

  I := PosEx('"', AXML, I + 2);
  J := PosEx('"', AXML, I + 1);

  Result := copy(AXML, I + 1, J - I - 1);
end;

var
  URI: string;
  Xml: TStringList;
begin
  Xml := TStringList.Create;
  try
    xml.LoadFromFile('C:\xml\R1000_N.xml');
    URI := ExtraiURI(xml.Text)
  finally
    Xml.Free
  end;

  * Faz a assinatura do xml 
  Ret := TCertfly.Assinar('C:\xml\R1000_N.xml',   'C:\xml\R1000_ASS.xml',  'MinhaTag','0', '1ce63d4dcefb45e9', '1234');
 if Ret = 0 then
   ShowMessage('Sucesso')
 else
   ShowMessage('False');
end;

end.
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Como acessar uma dll

Mensagem por Itamar M. Lins Jr. »

Ola!
Já procurou aqui no forum ?
https://pctoledo.org/forum/viewto ... =4&t=13884 Tem vários tópicos.
C# usa MSVC, Delphi 7 usa BCC... xHarbour usa BCC como padrão...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Como acessar uma dll

Mensagem por jairfab »

Itamar, fico grato pela sua resposta, mas não é isto, não funcionou a questão é fazer uma função semelhante a função delphi, pois a função delphi conseguiu acessar a dll, está dll vai ser muito importante pois vai conseguir assinar xml do esocial e da reinf sem utilizar o capicom.dll
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Como acessar uma dll

Mensagem por sygecom »

Jair,
Talvez o link abaixo pode lhe ajudar:
https://www.projetoacbr.com.br/forum/to ... e-capicom/
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Como acessar uma dll

Mensagem por MARCELOG »

viewtopic.php?f=4&t=11215
Veja hb_libload, etc.
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Como acessar uma dll

Mensagem por HASA »

:))
Jair, você usa Minigui build 17.09 atualize para a 17.12 veja :

Código: Selecionar todos

* New: Added a possibility to load the resources from an external DLL.
We may select an active resources DLL via the new command
SET RESOURCES TO <cDLL> and get freed unneeded resources DLL with
SET RESOURCES TO.
Sample code:
SET RESOURCES TO "resources.dll"
DEFINE WINDOW Win_1 WINDOWTYPE CHILD ;
CLIENTAREA 400, 300 TITLE 'Test'
...
END WINDOW
ACTIVATE WINDOW Win_1
SET RESOURCES TO
It is possible now to load the following resources from DLL:
the dialogs, menu with accelerators, icons, images, animates,
cursors and sounds.
Requested by Verchenko Andrey <verchenkoag@gmail.com>.
Contributed by Grigory Filatov <gfilatov@inbox.ru>
(see demo in folder \samples\Advanced\Resources_DLL)
:)Pos
BOAS FESTAS!
HASA
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

Como acessar uma dll

Mensagem por pauloa1 »

Olá Jair!
Vc conseguiu usar a dll pra assinar o xml do esocial com A1 com xHB ?

PAulo
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Como acessar uma dll

Mensagem por jairfab »

Conseguir Agora já estou assinando, validando, enviando, recebendo protocolo de entrega, consultando o resultado de processamento, porem eu fiz uma dll em csharp para fazer este processo, pois antes eu havia feito todo este processo com a dll CAPICOM.DLL ate um certo tempo funcionou tudo certinho depois de aunguns atras o resultado de processamento passou a retornar erro na assinaturo quando eu consulta o resultado de processamento, fique uns tres mes tentando acertar mas vi quer não ia rolar ai decidir fazer todo o processo de comunicaçõa em c#, ai passou a funcionar perfeitamente, agora estou ajustando para fazer tambem com certificado tipo A3 e poder consumir a DLL em qualquer linguagem de processamento.
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Responder