Clipper On Line • Ver Tópico - Como acessar uma dll

Como acessar uma dll

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

Moderador: Moderadores

 

Como acessar uma dll

Mensagempor jairfab » 17 Dez 2017 19:53

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

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 de usuário

jairfab
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 243
Data de registro: 21 Mai 2007 09:43
Cidade/Estado: São Paulo, Região Leste - Suzano
Curtiu: 0 vez
Mens.Curtidas: 13 vezes

Como acessar uma dll

Mensagempor Itamar M. Lins Jr. » 18 Dez 2017 11:40

Ola!
Já procurou aqui no forum ?
http://www.pctoledo.com.br/forum/viewtopic.php?f=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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6960
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 313 vezes
Mens.Curtidas: 508 vezes

Como acessar uma dll

Mensagempor jairfab » 18 Dez 2017 18:04

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 de usuário

jairfab
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 243
Data de registro: 21 Mai 2007 09:43
Cidade/Estado: São Paulo, Região Leste - Suzano
Curtiu: 0 vez
Mens.Curtidas: 13 vezes

Como acessar uma dll

Mensagempor sygecom » 18 Dez 2017 22:42

Jair,
Talvez o link abaixo pode lhe ajudar:
https://www.projetoacbr.com.br/forum/to ... e-capicom/
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7023
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

Como acessar uma dll

Mensagempor MARCELOG » 20 Dez 2017 03:54

viewtopic.php?f=4&t=11215
Veja hb_libload, etc.
Água mole em pedra dura tanto bate que até espirra!
Avatar de usuário

MARCELOG
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 546
Data de registro: 15 Mar 2005 16:54
Cidade/Estado: Divinópolis/MG
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Como acessar uma dll

Mensagempor HASA » 20 Dez 2017 19:36

:))
Jair, você usa Minigui build 17.09 atualize para a 17.12 veja :
* 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
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

Como acessar uma dll

Mensagempor pauloa1 » 10 Jan 2018 10:20

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

PAulo
pauloa1
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 224
Data de registro: 25 Jun 2008 14:57
Cidade/Estado: Augusto Pestana-RS
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes

Como acessar uma dll

Mensagempor jairfab » 10 Jan 2018 11:44

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
Avatar de usuário

jairfab
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 243
Data de registro: 21 Mai 2007 09:43
Cidade/Estado: São Paulo, Região Leste - Suzano
Curtiu: 0 vez
Mens.Curtidas: 13 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google Adsense [Bot] e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro