 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Ago 03, 2007 7:48 pm Assunto: |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Ago 05, 2007 4:20 pm Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Dom Ago 05, 2007 4:31 pm Assunto: |
|
|
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.  _________________ 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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Ago 05, 2007 4:52 pm Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Ago 05, 2007 5:33 pm Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Ago 05, 2007 6:34 pm Assunto: |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Seg Ago 06, 2007 1:13 am Assunto: |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Seg Ago 06, 2007 1:19 am Assunto: |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Seg Ago 06, 2007 2:31 am Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Seg Ago 06, 2007 9:47 am Assunto: |
|
|
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
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Seg Ago 06, 2007 10:32 am Assunto: |
|
|
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 |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|