Página 1 de 1

Como acessar uma dll

Enviado: 17 Dez 2017 20:53
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.

Como acessar uma dll

Enviado: 18 Dez 2017 12:40
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.

Como acessar uma dll

Enviado: 18 Dez 2017 19:04
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

Como acessar uma dll

Enviado: 18 Dez 2017 23:42
por sygecom
Jair,
Talvez o link abaixo pode lhe ajudar:
https://www.projetoacbr.com.br/forum/to ... e-capicom/

Como acessar uma dll

Enviado: 20 Dez 2017 04:54
por MARCELOG
viewtopic.php?f=4&t=11215
Veja hb_libload, etc.

Como acessar uma dll

Enviado: 20 Dez 2017 20:36
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

Como acessar uma dll

Enviado: 10 Jan 2018 11:20
por pauloa1
Olá Jair!
Vc conseguiu usar a dll pra assinar o xml do esocial com A1 com xHB ?

PAulo

Como acessar uma dll

Enviado: 10 Jan 2018 12:44
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.