Ir para conteúdo
  • Cadastre-se

dev botao

ACBRConsultaCNPJ


Ver Solução Respondido por Sandro Felipe Adad,
  • Este tópico foi criado há 331 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado
3 minutos atrás, Antonio Gomes disse:

@Victor H. Gonzales - Panda e @Sandro Felipe Adad

Dá uma olhada?

cnpj_consulta_14 09 2023.zip 154.37 kB · 0 downloads

A dll costuma o delphi criar uma pasta chamada debug, cola junto do exe.

Problema nisso: Precisa instalar o Edge, logo, windows7 Up. E familia de server mais novas, que o edge aceitar instalar.

Existe um projeto, que tem um navegador, que talvez possa ser incorporado: https://github.com/salvadordf/WebView4Delphi/tree/main

 

Postado

Boa Tarde, nos aqui da minha empresa conseguimos contornar o problema de uma forma diferente, nao tem como eu mandar o projeto pois ja esta dentro do nosso projeto oficial, nao por fora. Mas irei passar os códigos que usamos.

Resumindo, usamos o TChromiun e conectamos na pagina diretamente, porem para ficar visivelmente mais bonito, colocamos um codigo para retirar da pagina tudo que não é preciso.

if frame.IsMain then
  begin
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript('document.getElementById("barra-brasil").remove();', '', 0);
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByTagName("' + 'header' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByTagName("' + 'ul' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'footer-wrapper' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );

      // ajuste css do elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'col-md-8 form-group' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].className = "col-md-10 form-group";' +
      '}',
      '', 0
      );

      // remove elemento
      JavaScriptAux := 'var divElement = document.querySelector(".col-md-12");' +
                                      'if (divElement) {' +
                                      '   var h4Element = divElement.querySelector("h4");' +
                                      '   if (h4Element) {' +
                                      '       h4Element.remove();' +
                                      '   }' +
                                      '   var pElements = divElement.querySelectorAll("p");' +
                                      '   if (pElements.length > 0) {' +
                                      '       pElements[0].remove();' +
                                      '   }' +
                                      '}';
      Chromium1.Browser.MainFrame.ExecuteJavaScript(JavaScriptAux, '', 0);

      JavaScriptAux := 'var bodyElement = document.body;' +
                                      'if (bodyElement) {' +
                                      '   bodyElement.style.paddingTop = "30px";' + // Substitua "10px" pelo valor desejado
                                      '}';

      // Execute o código JavaScript no TChromium
      Chromium1.Browser.MainFrame.ExecuteJavaScript(JavaScriptAux, '', 0);


      // bloqueia edicao do cnpj
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'document.getElementById("' + 'cnpj' + '").readOnly = true;'
      ,
      '', 0
      );

      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'btn btn-secondary' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );

      CEFWindowParent1.Visible := true;

      // lê o html da pagina e obtem o dados
      if (Chromium1.Browser.MainFrame.Url = 'https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Comprovante.asp') then
      begin
          Chromium1.RetrieveHTML();
          Pesquisou := true;
          PanelNavegador.Visible := false;

      end;

  end;
-------------
Chromium1LoadEnd

Abaixo uma imagem de como ficou...

beeimgtmp-20230914-141905.png

  • Curtir 2
Postado
2 horas atrás, Antonio Gomes disse:

@Victor H. Gonzales - Panda e @Sandro Felipe Adad

Dá uma olhada?

cnpj_consulta_14 09 2023.zip 154.37 kB · 13 downloads

A dll costuma o delphi criar uma pasta chamada debug, cola junto do exe.

Pra mim não deu certo este exemplo, ele não invoca a rotina NavegarEdge, ao clicar no botão "Com ACBR" só exibe a mensagem: 'Erro na consulta, atulize o captcha".

image.png.3e1670f40e0eb9a8fede91a2a31ff72d.png

Postado
2 minutos atrás, Sandro Felipe Adad disse:

Pra mim não deu certo este exemplo, ele não invoca a rotina NavegarEdge, ao clicar no botão "Com ACBR" só exibe a mensagem: 'Erro na consulta, atulize o captcha".

image.png.3e1670f40e0eb9a8fede91a2a31ff72d.png

ficou tela cinza só? bota a dll junto.

Postado
24 minutos atrás, Douglas Conceição disse:

Boa Tarde, nos aqui da minha empresa conseguimos contornar o problema de uma forma diferente, nao tem como eu mandar o projeto pois ja esta dentro do nosso projeto oficial, nao por fora. Mas irei passar os códigos que usamos.

Resumindo, usamos o TChromiun e conectamos na pagina diretamente, porem para ficar visivelmente mais bonito, colocamos um codigo para retirar da pagina tudo que não é preciso.

if frame.IsMain then
  begin
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript('document.getElementById("barra-brasil").remove();', '', 0);
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByTagName("' + 'header' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByTagName("' + 'ul' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'footer-wrapper' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );

      // ajuste css do elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'col-md-8 form-group' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].className = "col-md-10 form-group";' +
      '}',
      '', 0
      );

      // remove elemento
      JavaScriptAux := 'var divElement = document.querySelector(".col-md-12");' +
                                      'if (divElement) {' +
                                      '   var h4Element = divElement.querySelector("h4");' +
                                      '   if (h4Element) {' +
                                      '       h4Element.remove();' +
                                      '   }' +
                                      '   var pElements = divElement.querySelectorAll("p");' +
                                      '   if (pElements.length > 0) {' +
                                      '       pElements[0].remove();' +
                                      '   }' +
                                      '}';
      Chromium1.Browser.MainFrame.ExecuteJavaScript(JavaScriptAux, '', 0);

      JavaScriptAux := 'var bodyElement = document.body;' +
                                      'if (bodyElement) {' +
                                      '   bodyElement.style.paddingTop = "30px";' + // Substitua "10px" pelo valor desejado
                                      '}';

      // Execute o código JavaScript no TChromium
      Chromium1.Browser.MainFrame.ExecuteJavaScript(JavaScriptAux, '', 0);


      // bloqueia edicao do cnpj
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'document.getElementById("' + 'cnpj' + '").readOnly = true;'
      ,
      '', 0
      );

      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'btn btn-secondary' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );

      CEFWindowParent1.Visible := true;

      // lê o html da pagina e obtem o dados
      if (Chromium1.Browser.MainFrame.Url = 'https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Comprovante.asp') then
      begin
          Chromium1.RetrieveHTML();
          Pesquisou := true;
          PanelNavegador.Visible := false;

      end;

  end;
-------------
Chromium1LoadEnd

Abaixo uma imagem de como ficou...

beeimgtmp-20230914-141905.png

o seu ficou file, cromiun...

Postado
30 minutos atrás, Antonio Gomes disse:

ficou tela cinza só? bota a dll junto.

sim, copiei a dll (webView2Loader.dll) pra basta Debug, mas a tela navegar ficava cinza sem nada sendo exibido....

O problema é que copiei a dll que veio no seu zip e no meu delphi a versão é diferente... kkk

Copiei a dll que veio na minha instalação do delphi (C:\Users\Sandro\Documents\Embarcadero\Studio\21.0\CatalogRepository\EdgeView2SDK-0.9.488\Bin\x86 ) no meu caso e funcionou.. ai abriu a tela do navegador. Deu um erro de carga no endereço eletronico(email) com o cnpj padrão desse exemplo... depois verifico.

Creio que ficou bem legal a sua idéia. Com relação a navegador acho melhor usar o edge que o chromium pois ja vem com o delphi.

Agora olha isso:

image.thumb.png.0c06c380fcfd5571eb7339bfac45625c.png

de repente solicitou outro tipo de captcha... Será que estão mexendo no serviço ainda?

Postado
4 minutos atrás, wilmar disse:

Boa tarde!! ficou top!! mas onde vai esse código, onde colocar o link

No evento ChromiumLoadEnd do componente, e o link vai no evento AfterCreated...

No Create do Form vc cria o Chromium...
 

Chromium1.CreateBrowser(CEFWindowParent1);

E no afterCreated faz o seguinte...
 

procedure Chromium1AfterCreated(Sender: TObject;const browser: ICefBrowser);
begin
  inherited;
  ///PostMessage(Handle, CEF_AFTERCREATED, 0, 0);
  Chromium1.LoadURL('https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Solicitacao.asp?cnpj=' +cxMaskEditCPF.Text);
end;


Foi pego os dados do html, igual o amigo do projeto mais acima.

  • Curtir 2
Postado
3 minutos atrás, Sandro Felipe Adad disse:

sim, copiei a dll (webView2Loader.dll) pra basta Debug, mas a tela navegar ficava cinza sem nada sendo exibido....

O problema é que copiei a dll que veio no seu zip e no meu delphi a versão é diferente... kkk

Copiei a dll que veio na minha instalação do delphi (C:\Users\Sandro\Documents\Embarcadero\Studio\21.0\CatalogRepository\EdgeView2SDK-0.9.488\Bin\x86 ) no meu caso e funcionou.. ai abriu a tela do navegador. Deu um erro de carga no endereço eletronico(email) com o cnpj padrão desse exemplo... depois verifico.

Creio que ficou bem legal a sua idéia. Com relação a navegador acho melhor usar o edge que o chromium pois ja vem com o delphi.

Agora olha isso:

image.thumb.png.0c06c380fcfd5571eb7339bfac45625c.png

de repente solicitou outro tipo de captcha... Será que estão mexendo no serviço ainda?

isso deu comigo, quando fiquei consultando repetidamente, deve ser alguma treta, mas, resolve certinho isso, so clicar, alias, comigo apareceu um de clicar na cabeça de uma tartaruga, trem para lá de engraçado... mas, deve ser para evitar maquina tambem...

 

 

Postado
47 minutos atrás, Douglas Conceição disse:

Boa Tarde, nos aqui da minha empresa conseguimos contornar o problema de uma forma diferente, nao tem como eu mandar o projeto pois ja esta dentro do nosso projeto oficial, nao por fora. Mas irei passar os códigos que usamos.

Resumindo, usamos o TChromiun e conectamos na pagina diretamente, porem para ficar visivelmente mais bonito, colocamos um codigo para retirar da pagina tudo que não é preciso.

if frame.IsMain then
  begin
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript('document.getElementById("barra-brasil").remove();', '', 0);
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByTagName("' + 'header' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByTagName("' + 'ul' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );
      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'footer-wrapper' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );

      // ajuste css do elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'col-md-8 form-group' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].className = "col-md-10 form-group";' +
      '}',
      '', 0
      );

      // remove elemento
      JavaScriptAux := 'var divElement = document.querySelector(".col-md-12");' +
                                      'if (divElement) {' +
                                      '   var h4Element = divElement.querySelector("h4");' +
                                      '   if (h4Element) {' +
                                      '       h4Element.remove();' +
                                      '   }' +
                                      '   var pElements = divElement.querySelectorAll("p");' +
                                      '   if (pElements.length > 0) {' +
                                      '       pElements[0].remove();' +
                                      '   }' +
                                      '}';
      Chromium1.Browser.MainFrame.ExecuteJavaScript(JavaScriptAux, '', 0);

      JavaScriptAux := 'var bodyElement = document.body;' +
                                      'if (bodyElement) {' +
                                      '   bodyElement.style.paddingTop = "30px";' + // Substitua "10px" pelo valor desejado
                                      '}';

      // Execute o código JavaScript no TChromium
      Chromium1.Browser.MainFrame.ExecuteJavaScript(JavaScriptAux, '', 0);


      // bloqueia edicao do cnpj
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'document.getElementById("' + 'cnpj' + '").readOnly = true;'
      ,
      '', 0
      );

      // remove elemento
      Chromium1.Browser.MainFrame.ExecuteJavaScript(
      'var elementos = document.getElementsByClassName("' + 'btn btn-secondary' + '");' +
      'for (var i = elementos.length - 1; i >= 0; i--) {' +
      '   elementos[i].parentNode.removeChild(elementos[i]);' +
      '}',
      '', 0
      );

      CEFWindowParent1.Visible := true;

      // lê o html da pagina e obtem o dados
      if (Chromium1.Browser.MainFrame.Url = 'https://solucoes.receita.fazenda.gov.br/Servicos/cnpjreva/Cnpjreva_Comprovante.asp') then
      begin
          Chromium1.RetrieveHTML();
          Pesquisou := true;
          PanelNavegador.Visible := false;

      end;

  end;
-------------
Chromium1LoadEnd

Abaixo uma imagem de como ficou...

beeimgtmp-20230914-141905.png

So que deixe essa tela redimensionavel, acabo de pegar um captcha diferente retornado pela receita.

Como é o deploy do projeto chromium, o que precisa ser distribuido junto a aplicação delphi?

Postado
4 minutos atrás, Sandro Felipe Adad disse:

So que deixe essa tela redimensionavel, acabo de pegar um captcha diferente retornado pela receita.

Como é o deploy do projeto chromium, o que precisa ser distribuido junto a aplicação delphi?

Na verdade, testamos com todos os tamanhos e encaixou certinho, como a tela ficou pequena acredito que ele identifica achando que é um celular e redmensiona ela conforme, sobre os arquivos nao sei ao certo pois nao precisamos de um para rodar, porque ja usamos um recurso de mensagens automaticas de whatsapp em nosso programa e ele usa o Chromium, o arquivo que ele solicitada era o CEF4Bin, que vinha junto com a instalação deste programa, mas acredito que todas as dll que o chromium precisa esta nele mesmo.

https://github.com/salvadordf/CEF4Delphi

Talvez este arquivo resolva, nao sei se é igual ao que tenho aqui, ate enviaria mas ele zipado é acima do limite de arquivo que da para enviar por aqui.

  • Curtir 1
Postado

Douglas estou com esse erro no Chromium identificador não declarado: 'ICefBrowser',
sabe me informa qual unit declarar. Meu delphi rio

Postado (editado)
30 minutos atrás, wilmar disse:

Douglas estou com esse erro no Chromium identificador não declarado: 'ICefBrowser',
sabe me informa qual unit declarar. Meu delphi rio

Voce instalou a biblioteca do CEF4Delphi ?
Aqui no meu quando coloquei este comando que me passou, verifiquei que fica na unit    uCEFInterfaces.

Editado por Douglas Conceição
Postado
3 horas atrás, wilmar disse:

Douglas por favor ver o que estou fazendo errado rs

cnpj teste.rar 898.57 kB · 6 downloads

O que esta faltando é o codigo que inicializa ele, voce ira colocar o codigo na raiz do projeto, na view source, abaixo como é para ficar...
 

program Teste;

uses
  Vcl.Forms,
  uTInject.ConfigCEF,
  UConsulta in 'UConsulta.pas' {FConsulta};

{$R *.res}

begin
  If not GlobalCEFApp.StartMainProcess then
     Exit;

  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TFConsulta, FConsulta);
  Application.Run;
end.

E esta faltando algumas dll tambem do CEF, irei disponibilizar a dll, coloque junto com o exe do projeto.
https://drive.google.com/file/d/1m4Wa69JqdMc1CkiY6gEVogoksj_KbDkH/view?usp=sharing

Ah, e sobre sua função de retornar dados, é de outro jeito, nao acho que deste jeito de certo.

ImagemTeste.png

Postado

basta colocar esse codigo no evento onshow

 

var
 Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 Try
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', False);
  If Reg.ValueExists(ExtractFileName(Application.ExeName)) then  //coloque aqui o nome do programa ou use extractfilename
  begin
  ShowMessage(ExtractFileName(Application.ExeName));
   exit;
  end
  Else
  begin
   Reg.WriteInteger(ExtractFileName(Application.ExeName), 11001); //isto é necessário para poder rodar no internet explorer 11
  end;
 Finally
  Reg.Free;
 end;

 

Postado
5 horas atrás, Dfox disse:

basta colocar esse codigo no evento onshow

 

var
 Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 Try
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey('SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', False);
  If Reg.ValueExists(ExtractFileName(Application.ExeName)) then  //coloque aqui o nome do programa ou use extractfilename
  begin
  ShowMessage(ExtractFileName(Application.ExeName));
   exit;
  end
  Else
  begin
   Reg.WriteInteger(ExtractFileName(Application.ExeName), 11001); //isto é necessário para poder rodar no internet explorer 11
  end;
 Finally
  Reg.Free;
 end;

 

Para poder usar o webbroser do delphi

  • Este tópico foi criado há 331 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.