ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Jogar valores do edit no WebBrowser?
Ir à página 1, 2, 3, 4, 5, 6  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Ago 03, 2007 2:29 pm    Assunto: Jogar valores do edit no WebBrowser? Responder com Citação

Olah pessoal, eh o seguinte, fiz com que o componente WebBrowser do Delphi abra diretamente na pagina da Receita Federal neste link

https://www8.receita.fazenda.gov.br/SimplesNacional/controleacesso/autentica.aspx?id=5

Mais gostaria de preencher os campos CNPJ, CPF e nao sei se consigo tambem o codigo de acesso automaticamente cfe. esta no edit do form.

Bom o maximo que eu cosegui foi jogar o nr do cnpj mais no campo pesquisa do site da Receita.

Algeum tem alguma ideia de como fazer isso.

Sei que tem o anti-robo no site, mais o que eu gostaria era apenas preencher estes campos que citei.

No aguardo
Adriano
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree


Editado pela última vez por adriano_servitec em Sex Ago 03, 2007 11:08 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Ago 03, 2007 7:48 pm    Assunto: Responder com Citação

Soh joga o nº no quadro "Busca no Sitio" dentro do site da RF.
Alguem sabe como preencher os campos do site da Receita por edits?

To com esse codigo aqui
Código:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, MSHTML, StdCtrls,shellapi, Buttons;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    LabelCNPJ: TLabel;
    LabelCPF: TLabel;
    LabelNR_Proc: TLabel;
    EdtCNPJ: TEdit;
    EdtCPF: TEdit;
    EdtNr_Proc: TEdit;
    BtnEnviar: TButton;
    GroupBox2: TGroupBox;
    WebBrowser1: TWebBrowser;
    procedure BtnEnviarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean;
var
  win: IHTMLWindow2;
  Olelanguage: Olevariant;
begin
  if doc <> nil then
  begin
    try
      win := doc.parentWindow;
      if win <> nil then
      begin
        try
          Olelanguage := language;
          win.ExecScript(script, Olelanguage);
        finally
          win := nil;
      end;
  end;
  finally
  doc := nil;
  end;
end;
end;

procedure FillInGMXFormsCNPJ(WB: ShDocVW.IWebbrowser2; IDoc1: IHTMLDocument2;
Document: Variant; P_CNPJ : string);
const
IEFields: array[1..2] of string = ('INPUT', 'text');
var
  IEFieldsCounter: Integer;
  i: Integer;
  m: Integer;
  ovElements: OleVariant;
begin
  if Pos('Receita Federal', Document.Title) <> 0 then
   while WB.ReadyState <> READYSTATE_COMPLETE do
     Application.ProcessMessages;
     // contar os elementos e interagir por suas formas
     IEFieldsCounter := 0;
     for m := 0 to Document.forms.Length - 1 do
     begin
       ovElements := Document.forms.Item(m).elements;
       // interagir por elemento
     try
       // preencher os campos
       if (ovElements.item(0).tagName = IEFields[1]) and
          (ovElements.item(0).type = IEFields[2]) then
       begin
         ovElements.item(0).Value := P_CNPJ;
         Inc(IEFieldsCounter);
       end;
     except
     // falha...
     end;
  end;
  // se o campo estiver preenchido.
  if IEFieldsCounter = 3 then ExecuteScript(iDoc1,'','JavaScript');
end;

{procedure FillInGMXFormsCPF(WB: ShDocVW.IWebbrowser2; IDoc1: IHTMLDocument2;
Document: Variant; P_CPF : string);
const
IEFields: array[1..2] of string = ('INPUT', 'text');
var
  IEFieldsCounter: Integer;
  i: Integer;
  m: Integer;
  ovElements: OleVariant;
begin
  if Pos('Receita Federal', Document.Title) <> 0 then
   while WB.ReadyState <> READYSTATE_COMPLETE do
     Application.ProcessMessages;
     // contar os elementos e interagir por suas formas
     IEFieldsCounter := 0;
     for m := 0 to Document.forms.Length - 1 do
     begin
       ovElements := Document.forms.Item(m).elements;
       // interagir por elemento
     try
       // preencher os campos
       if (ovElements.item(0).tagName = IEFields[1]) and
          (ovElements.item(0).type = IEFields[2]) then
       begin
         ovElements.item(0).Value := P_CPF;
         Inc(IEFieldsCounter);
       end;
     except
     // falha...
     end;
  end;
  // se o campo estiver preenchido.
  if IEFieldsCounter = 3 then ExecuteScript(iDoc1,'','JavaScript');
end;}

procedure TForm1.BtnEnviarClick(Sender: TObject);
var
  IDoc1: IHTMLDocument2;
  Web: ShDocVW.IWebBrowser2;
  VEdtCNPJ, VEdtCPF : String;
begin
  Webbrowser1.Navigate('https://www8.receita.fazenda.gov.br/SimplesNacional/controleacesso/autentica.aspx?id=5');
  while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
    Application.ProcessMessages;
    Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc1);
    Web := WebBrowser1.ControlInterface;
    vEdtCNPJ := EdtCNPJ.Text;
    FillInGMXFormsCNPJ(Web, iDoc1, Webbrowser1.Document, vEdtCNPJ);//transporta o nr do edit CNPJ para o site da RF
    //vEdtCPF := EdtCPF.Text;
    //FillInGMXFormsCPF(Web, iDoc1, Webbrowser1.Document, vEdtCPF);//transporta o nr do edit CPF para o site da RF
end;

end.

Mais as variaves estao soh indo parar no "Busca no Sitio" e preciso que fiquem no quadro do CNPJ, CPF, e Arquivo de Acesso, os valores que eu digitar nos edits.

No aguardo
Adriano
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Ago 05, 2007 4:20 pm    Assunto: Responder com Citação

Olá adriano isto deve ser por causa dos vários imputs que tem no código...

tem-se de analisar o código fonte da página para ver... tava olhando e realmente o primeiro imput era da pesquisa, mas preciso conhecer este código melhor... para dar uma opinião mais precisa...


PS.: meu amigo para que vc quer fazer algo assim???

bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Dom Ago 05, 2007 4:31 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Olá adriano isto deve ser por causa dos vários imputs que tem no código...

tem-se de analisar o código fonte da página para ver... tava olhando e realmente o primeiro imput era da pesquisa, mas preciso conhecer este código melhor... para dar uma opinião mais precisa...


PS.: meu amigo para que vc quer fazer algo assim???

bye
Para o preenchimento do novo DARF - Eh o seguinte Johnny, a ideia aqui eh criar um programa de cadastro de empresas, com seus campos ja gravados em banco, pois vamos ter os controles de vendas pelo programa, ai para faciliar em vez de ficar indo no navegador e preenchendo aqueles dados a ideia seria ja enviar esses dados atravez do webbrowser do delphi diretamente para o sitio da receita. Ficaria mais pratico, vendo que temos mais de 300 empresas para fazer isso mensalmente agora com este novo simples federal.

Entao eu uso este programa para abrir a pagina de CNPJ e CPJ da Receita. Mais este novo nao funcionou ainda. Very Happy
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Ago 05, 2007 4:52 pm    Assunto: Responder com Citação

Interessante a idéia, hoje eu postei uma resposta aqui para validar email por um webservice... o dia hoje somente para internet...


Estou olhando no seu com o componente idHttp e tb com WebBrowser vou testar os dois... o foda é que aquela PIC não estou conseguindo baixar ela... para postar a mensagem...
esta porcaria deste script -> https://www8.receita.fazenda.gov.br/Scripts/srf/intercepta/captcha.aspx?opt=image
dá um erro de EIdInterceptPropInvalid

se não conseguir carregá-lo num stream posso tentar carregar no proprio webbrowser... não é minha intenção... queria postar tudo de uma vez...


continuo pesquisando... pode ser util no futuro.... quem sabe...


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I


Editado pela última vez por johnny-walker em Seg Ago 06, 2007 1:22 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Dom Ago 05, 2007 5:03 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Interessante a idéia, hoje eu postei uma resposta aqui para validar email por um webservice... o dia hoje somente para internet...


Estou olhando no seu com o componente idHttp e tb com WebBrowser vou testar os dois... o foda é que aquela PIC não estou conseguindo baixar ela... para postar a mensagem...
esta porcaria deste script -> https://www8.receita.fazenda.gov.br/Scripts/srf/intercepta/captcha.aspx?opt=image
dá um erro de EIdInterceptPropInvalid

se não conseguir carregá-lo num stream posso tentar carregar no proprio webbrowser... não é minha intenção... quria postar tudo de uma vez...


continuo pesquisando... pode ser util no futuro.... quem sabe...


bye
Obrigado amigo, vai vendo ai, vc tem muita experiencia com esses codigos, eu ja percebi isso, eu sou uma negação com os mesmos :
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Ago 05, 2007 5:33 pm    Assunto: Responder com Citação

hehehe... adriano.... já descobri que tem uma maneira de baixar pelo flashget, agora tenho de pensar numa maneira de baixar pelo idHttp, quando baixo pelo flashget obtenho um arquivo chamado captcha.aspx que é o próprio gif... basta renomear a extensão...

então tenho de baixar o script...

olhei tb que o script esta encriptado... dificultando a obtenção do arquivo... mas nada que não se consiga contornar por outros meios, afinal tem-se de mostrar o gif no navegador...

este script abaixo:


<DOCTYPE>

<html>
<head><title>
CAPTCHA
</title></head>
<body>
<form>
<div>
<input>
</div>

<div>

</div>
</form>
</body>
</html>



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Dom Ago 05, 2007 6:16 pm    Assunto: Responder com Citação

Mais Johnny, eu nao estou entendendo? Vc que decodificar o anti-robo?

O que eu preciso eh preencher apenas os tres campos

CNPJ
CPF
Nr. do Processo com os dados do form.

O anti-robo nao tem como. Eu acho, pois a cada vez que abre a pagina ele cria um novo.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Ago 05, 2007 6:34 pm    Assunto: Responder com Citação

Para isto estou quase... quero jogar ele num stream... mas isto não é importante para o momento, sei que é possível, so me resta saber como descer este script, mais alguns estudos e chego lá...


a outra maneira com webbrowser estou pesquisando agora, comecei a pouco...



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Ago 06, 2007 1:13 am    Assunto: Responder com Citação

Eh meu caro amigo adriano, finalmente, após tantas horas consegui ter uma luz no fim do túnel... e como dizem por ai... FIAT LUX - fez-se a luz... consegui preencher o CNPJ...

ufa... coisinha difícil... aquela função que os rapazes tiraram aquele modelo e não souberam adaptar adequadamente foi da http://www.swissdelphicenter.ch/torry/showcode.php?id=1732


sem ela não conseguiria, pois não saberia interagir entre os forms, o que é necessário para vc achar as item.tagname e item.name e item.type, tive que modificar a função para que achasse corretamente o CNPJ... tive que estudar o código html tb... eis ai um pedaço dele...
Código:

<input name="txtCNPJ" type="text" maxlength="14" id="txtCNPJ" tabindex="1" class="caixaTexto" onfocus="mostraTip('TiptxtCNPJ');



cara pensei que não ia conseguir, até que vi que tinha iteragir com os forms e que nem sempre o codigo somente contém apenas um form que no caso da funçào estava estava 0 (zero) e por isso o único que esta no form zero é caixa de texto de pesquisa...


usei isto para saber em qual form estava...
Código:

                  Form1.Memo1.Lines.Add('Elemento: <Nº>  '+IntToStr(I));
                  Form1.Memo1.Lines.Add('Elemento: <Name>  '+ovElements.Item(I).name);
                  Form1.Memo1.Lines.Add('Elemento: <Type>  '+ovElements.Item(I).type);
                  Form1.Memo1.Lines.Add('Elemento: <Id>    '+ovElements.Item(I).id);


veja uma função para mostrar os forms..

function GetFormByNumber(document: IHTMLDocument2;
formNumber: integer): IHTMLFormElement;
var
forms: IHTMLElementCollection;
begin
forms := document.Forms as IHTMLElementCollection;
if formNumber < forms.Length then
result := forms.Item(formNumber,'') as IHTMLFormElement
else
result := nil;
end;


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I


Editado pela última vez por johnny-walker em Seg Ago 06, 2007 1:20 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Ago 06, 2007 1:19 am    Assunto: Responder com Citação

Essa porcaria, oh dureza... ao postar mascara o código...


Gostaria que alguém desse um jeito nisto...


Até hoje não entendo o por quê disto...



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Ago 06, 2007 2:31 am    Assunto: Responder com Citação

Preenchi todos os campos, inclusive código de acesso, agora somente ficou faltando executar o java script... mas depois de descobrir um modo de verificar o anti-roubo, ainda merece estudo...

ufa, agora mereço um bom descanso... um bom sono para recuperar as forças e descansar a mente agitada, isto é se eu conseguir...



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Ago 06, 2007 9:47 am    Assunto: Responder com Citação

johnny-walker escreveu:
Eh meu caro amigo adriano, finalmente, após tantas horas consegui ter uma luz no fim do túnel... e como dizem por ai... FIAT LUX - fez-se a luz... consegui preencher o CNPJ...

ufa... coisinha difícil... aquela função que os rapazes tiraram aquele modelo e não souberam adaptar adequadamente foi da http://www.swissdelphicenter.ch/torry/showcode.php?id=1732


sem ela não conseguiria, pois não saberia interagir entre os forms, o que é necessário para vc achar as item.tagname e item.name e item.type, tive que modificar a função para que achasse corretamente o CNPJ... tive que estudar o código html tb... eis ai um pedaço dele...
Código:

<input name="txtCNPJ" type="text" maxlength="14" id="txtCNPJ" tabindex="1" class="caixaTexto" onfocus="mostraTip('TiptxtCNPJ');



cara pensei que não ia conseguir, até que vi que tinha iteragir com os forms e que nem sempre o codigo somente contém apenas um form que no caso da funçào estava estava 0 (zero) e por isso o único que esta no form zero é caixa de texto de pesquisa...


usei isto para saber em qual form estava...
Código:

                  Form1.Memo1.Lines.Add('Elemento: <Nº>  '+IntToStr(I));
                  Form1.Memo1.Lines.Add('Elemento: <Name>  '+ovElements.Item(I).name);
                  Form1.Memo1.Lines.Add('Elemento: <Type>  '+ovElements.Item(I).type);
                  Form1.Memo1.Lines.Add('Elemento: <Id>    '+ovElements.Item(I).id);


veja uma função para mostrar os forms..

function GetFormByNumber(document: IHTMLDocument2;
formNumber: integer): IHTMLFormElement;
var
forms: IHTMLElementCollection;
begin
forms := document.Forms as IHTMLElementCollection;
if formNumber < forms.Length then
result := forms.Item(formNumber,'') as IHTMLFormElement
else
result := nil;
end;


bye
Olah Johnny, poxa amigo, procurei feito doido esta funçao e nao achava, nem tinha ideia que estava na Torry's Very Happy

Eh isso ai amigo.

Pow vc ficou ateh as 2:30 vendo isso?

Tem que descansar mesmo.

Mais eh assim a gente sempre vai ateh os limites, faz parte mesmo.

Abraços
Adriano
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Ago 06, 2007 10:32 am    Assunto: Responder com Citação

Quando vc pega um código feito por alguém que não entendeu o mesmo, é igual cochichar no ouvido, cada um conta seu conto e inventa um ponto... demorei muito a decifrar como o mesmo funcionava, entre pesquisa e teste... mas finalmente domei o bicho e entendi como funcionanva... ainda tenho de comprrender como se da com checkboxes e listboxes quando vc clica para escolher uma opção... com os edits foi até fácil...


mas no mais está funcionando perfeitamente... eliminei algumas redundâncias e que até o código original tinha.... falta a parte do java script mas este teria de ser com o anti-roubo, ai dava para postar direto sem mesmo utilizar webbrowser... somente utilizaria ele para ver os resultados...


poderia me dizer se estes campos tem máscara ou é apenas números???

vou te mandar o executável para vc analisar se é isto que vc quer... estou mandando no seu ultimo email que me passou....


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Ago 06, 2007 10:39 am    Assunto: Responder com Citação

Nao Johnny, eles sao sem mascaras, apenas o campo Nº do Processo que contem a mascara de * (estilo senha), mais nao tem mascaras.

Valeu amigo.

Obrigado pelo esforço ai, nem sei como agradeçer.

Muito obrigado mesmo.

adrianoservitec@uol.com.br
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2, 3, 4, 5, 6  Próximo
Página 1 de 6

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB