Ir para conteúdo
Fórum Script Brasil
  • 0

Preencher dados Twebbrowser


Picuuai

Pergunta

Prezados amigos.

Primeiramente gostaria de pedir desculpas por posta este tópico que existe alguns semelhantes dentro do fórum, mas a questão é que não consegui resolver sozinho o os outros tópicos não são específicos..

Tenho o código abaixo do site da Fazenda...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head id="Head1"></head>
<body style="cursor: auto;">
<div id="initial" style="display:none"></div>
<div id="container">
<div id="logo"></div>
<div id="menu"></div>
<div id="areatrabalho">
<div id="pFrameEmpresa" class="peq"></div>
<div id="pFramePA" class="pFrame">
<div class="pFrameTitulo"></div>
<div class="pFrameConteudo">
<input class="pa" type="text" autocomplete="off"></input> <--preencher este campo automaticamente.
<div class="obs"></div>
</div>
<div class="pFrameButton">
<a class="pButton" href="#"></a>
<a class="pButton" href="#"></a>
</div>
</div>
</div>
<div id="caminho"></div>
<div id="rodape"></div>
<div id="mensagens" style="text-align:center"></div>
</div>
<div id="carregando" class="carregando" style="display: none;"></div>
<div id="carregandotxt" style="display: none;"></div>
<div id="help" title="PGDAS-D"></div>
</body>
</html>
A questão é não consigo fazer o preenchimento do campo INPUT pa, já tentei de tudo..
estou usando um Código postado já anteriormente como segue a abaixo... mas não consiguo resolve o erro...
procedure SetFieldValue(theForm: IHTMLFormElement;
const fieldName: string; const newValue: string;
const instance: integer=0);
var
field: IHTMLElement;
inputField: IHTMLInputElement;
selectField: IHTMLSelectElement;
textField: IHTMLTextAreaElement;
begin
field := theForm.Item(fieldName,instance) as IHTMLElement; \\erro aqui.......
if Assigned(field) then
begin
if field.tagName = 'INPUT' then
begin
inputField := field as IHTMLInputElement;
if (inputField.type_ <> 'radio') and
(inputField.type_ <> 'checkbox')
then
inputField.value := newValue
else
inputField.checked := (newValue = 'checked');
end
else if field.tagName = 'SELECT' then
begin
selectField := field as IHTMLSelectElement;
selectField.value := newValue;
end
else if field.tagName = 'TEXTAREA' then
begin
textField := field as IHTMLTextAreaElement;
textField.value := newValue;
end;
end;
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
document : IHTMLDocument2;
theForm : IHTMLFormElement;
begin
try
document := WebBrowser1.Document as IHTMLDocument2;
theForm := GetFormByNumber(document,0);
SetFieldValue(theForm,'pa', '032010'); //--- Onde pa é o campo e o 032010 o seu valor.
theForm.submit;
except
end;
end;
Se alguém puder me ajudar, agradeço muito pois já estou nesta luta a algum tempo.
Abraços.
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

amigo, se voce esta usando frames, a maneira de preencher os dados do twebbrowser é parecida com esse exemplo

http://blog.fullsig.com.br/?p=25

esse exemplo tambem funciona

http://www.planetadelphi.com.br/dica/7498/-twebbrowser-como-preencher-campo-text-do-html-

nesse link vai encontrar uma explicação mais facil para executar esse procedmento

http://robsonmagno.wordpress.com/2011/12/16/manipular-web-forms-usando-o-twebbrowser/

Faça algumas comparações de códigos e tente fazer alguns testes para ver o resultado

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

JHonas, agradeço o esforco por me ajudar....

Peguei o codigo abaixo...

procedure PreencheCampos(var WebBrowserx:TWebBrowser; campo,dados:string);
var doc,FormItem: Variant; Field: Variant; FieldName: String; H,I,J: Integer;
begin
try
showmessage(inttostr(WebBrowserx.OleObject.Document.Frames.Length ));
for H := 0 to WebBrowserx.OleObject.Document.Frames.Length -1 do
begin
doc:=WebBrowserx.OleObject.Document.Frames.item(H).document;
for I := 0 to doc.forms.Length - 1 do
begin
FormItem := doc.forms.Item(I);
for j := 0 to FormItem.Length - 1 do
begin
Field := FormItem.Item(j);
FieldName := Field.Name;
if FieldName = campo then
Field.Value := dados;
end;
end;
end;
except
MessageDlg('Erro ao preencher o campo: '+campo+#13+' com os dados '+dados, mtError, [mbOK],0);
end;
end;
PreencheCampos(WebBrowser1,'PA','02/2014');
Fiz o debug passo a passo no delphi e na linha for H := 0 to WebBrowserx.OleObject.Document.Frames.Length -1 do ele não processa, ele retorna o valor -1 dai não entra no processos abaixo...o que quer dizer que ele não reconhece nenhum frame...
O que esta errado ?
Obrigado...
Link para o comentário
Compartilhar em outros sites

  • 0

PreencheCampos(WebBrowser1,'PA','02/2014');

ok amigo ... veja que para preencher os campos com esses dados, deve estar aparecendo no TWebbrowser a pagina do site

me passe o endereço da pagina, para verificar o seu conteudo

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, Jhonas,

No processo de debuginng estava na pagina onde esta o campo que dever ser preenchido com o mes '02/2014'..

O site é http://www8.receita.fazenda.gov.br/SimplesNacional/controleAcesso/Autentica.aspx?id=6

Tem que logar com os dados e o conteúdo do campo a ser preenchido esta na área interna do sistema.

Só que não tenho como lhe passar as informações de login por se tratarem de informações sigilosas de clientes.....

Espero que mesmo assim possa ajudar....

Obs. O login inicial consigo fazer normalmente, onde se preenche o cnpj, cpf e codigo de acesso que é um form conforme codigo.

WebBrowser1.OleObject.Document.All.Item('ctl00$ContentPlaceHolder$txtCNPJ', 0).value := simples.Table2cgc.Value;
WebBrowser1.OleObject.Document.All.Item('ctl00$ContentPlaceHolder$txtCPFResponsavel', 0).value := simples.Table2documento.Value;
WebBrowser1.OleObject.Document.All.Item('ctl00$ContentPlaceHolder$txtCodigoAcesso', 0).value := simples.Table5xcodigo_acesso.Value;

o problema é dentro do sistema conforme segue abaixo código de inspeção de elemento do campo da pagina.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head id="Head1"></head>
<body style="cursor: auto;">
<div id="initial" style="display:none"></div>
<div id="container">
<div id="logo"></div>
<div id="menu"></div>
<div id="areatrabalho">
<div id="pFrameEmpresa" class="peq"></div>
<div id="pFramePA" class="pFrame">
<div class="pFrameTitulo"></div>
<div class="pFrameConteudo">
<input class="pa" type="text" autocomplete="off"></input>
<div class="obs"></div>
</div>
<div class="pFrameButton"></div>
</div>
</div>
<div id="caminho"></div>
<div id="rodape"></div>
<div id="mensagens" style="text-align:center"></div>
</div>
<div id="carregando" class="carregando" style="display: none;"></div>
<div id="carregandotxt" style="display: none;"></div>
<div id="help" title="PGDAS-D"></div>
</body>
</html>
Obrigado mais uma vez....
Abraços.
Link para o comentário
Compartilhar em outros sites

  • 0

Obs. O login inicial consigo fazer normalmente, onde se preenche o cnpj, cpf e codigo de acesso que é um form conforme codigo.

ou seja ... voce consegue preencer os campos da pagina do login e senha mas não da pagina seguinte ... é isso ?

preciso ver o código da pagina após ter feito o login e senha .... no menu < Exibir > clique na opção < Código Fonte >

OBS: algumas paginas da receita possuem um bloqueador de scripts, justamente para não permitir o uso de programas desse tipo ... justamente por questão de segurança

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, é isso mesmo, não consigo preencher os dados depois da tela de login...onde são feitos os cálculos dos impostos.

com relação ao bloqueio da receita...já vi outros softwares preencher estes campos...então é possível....

obrigado novamente.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

então Picuuai, não tenho como acessar a pagina seguinte do site para poder fazer alguns testes... se voce puder fazer isso, faça como lhe falei ... veja o código fonte da pagina e compare os campos da pagina do login e senha com os campos da pagina seguinte ..

veja se existe algum comando em php ou algum comando de redirecionamento para outra parte do código

já vi outros softwares preencher estes campos...então é possível....

a qual software voce se refere ?

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, beleza.

já vi o Sistemas Ledware, Dominio preencher estes campos, são softwares contábeis....

Segue o codigo fonte da tela onde esta o campo a ser preenchido.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head id="Head1"><title>
PGDAS-D
</title><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /><meta http-equiv="Cache-Control" content="no-cache" /><meta http-equiv="Pragma" content="no-cache" /><meta http-equiv="Expires" content="-1" /><link rel="stylesheet" type="text/css" href="./css/pgdasd.css" /><link rel="stylesheet" type="text/css" href="./css/custom-theme/jquery-ui.css" /><link rel="stylesheet" type="text/css" href="./css/smoke.css" />
<script type="text/javascript" src="./js/lib/jquery.min.js"></script>
<script type="text/javascript" src="./js/lib/jquery-ui.js"></script>
<!-- smoke.js - Implementação alternativa de alert, confirm e prompt. -->
<script type="text/javascript" src="./js/lib/smoke.min.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/lib/jquery.serializexml.js"></script>
<!-- BASICOS -->
<script charset="iso-8859-1" type="text/javascript" src="./js/utils.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/pgdasd.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/pgdasd.util.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/pgdasd.data.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/pgdasd.fwk.core.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/pgdasd.fwk.input.js"></script>
<!-- FRAMES -->
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.menu.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.empresa.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.pa.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.ano.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.rbt.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.rbtie.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.rpa.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.impfixo.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.abas.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.at.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.resumo.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.po.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.adsn.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.acp.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.dsn.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.ra.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.filial.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.treeview.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.receita.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.folha.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.exigibilidade.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.isencao.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.reducao.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.apuracao.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.vd.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.processo.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.das.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.darfcprb.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.vencimento.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.recalculardata.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.sa.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.cobranca.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/frame/pgdasd.frame.transmitida.js"></script>
<!-- Casos de uso devem ser inseridos na ordem em que devem aparecer no menu -->
<!-- APURACAO -->
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.CalcularValorDevido.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.ConsultarApuracoesTransmitidas.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.ConsultarApuracaoNaoTransmitidas.js"></script>
<!-- DAS -->
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.GerarDas.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.ConsultarExtrato.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.ImprimirCopiaDas.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.ConsultarDasCobranca.js"></script>
<!-- DADOS ANTERIORES A OPCAO -->
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.ConsultarDadosAnteriores.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.RetificarDadosAnteriores.js"></script>
<!-- INFORMACOES SOCIOECONOMICAS -->
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.DeclararSocioeconomica.js"></script>
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.ConsultarSocioeconomica.js"></script>
<!-- CONSULTAR DEBITOS DO SIMPLES -->
<script charset="iso-8859-1" type="text/javascript" src="./js/uc/pgdasd.uc.ConsultarDebitos.js"></script>
<body>
<div id="initial" style="display:none">
<span id="cnpj8">38668257</span>
<span id="transacao">386592390</span>
<span id="idDeclaracao"></span>
<span id="tipoDeclaracao"></span>
<span id="declaracaoAcao"></span>
<span id="declaracaoURL"></span>
</div>
<div id="container">
<div id="logo">
<img id="dir" src="./images/topo2_D.jpg" alt=""/>
<img id="esq" src="./images/topo2_E.jpg" alt=""/>
<span>PGDAS-D</span>
<span id="sombra">PGDAS-D</span>
</div>
<div id="menu"></div>
<div id="areatrabalho">
..... aqui esta oculto o código que te passei acima, so aparece o código quando clico no firefox ou chorme com o botão direito do mouse e em inspecionar elemento.
<div id="pFrameEmpresa" class="peq"></div>
<div id="pFramePA" class="pFrame">
<div class="pFrameTitulo"></div>
<div class="pFrameConteudo">
<input class="pa" type="text" autocomplete="off"></input>
<div class="obs"></div>
</div>
<div class="pFrameButton"></div>
</div>
</div>
</div>
<div id="caminho"><span></span><span></span></div>
<div id="rodape">Versão: 1.5.1</div>
<div id="mensagens" style="text-align:center">
<br />
<div style="font-size:12px"><strong><span id="lblAviso"></span></strong></div>
<br />
<div><span id="lblMensagem"></span></div>
<br />
<br />
<br />
<div id="divIntMsg" style="text-align:center">
<div style="font-size:12px"><strong></strong></div>
</div>
</div>
</div>
<div id="carregando" class="carregando"></div>
<div id="carregandotxt">Carregando<span></span></div>
<div id="help" title="PGDAS-D">
<h1>ATENÇÃO</h1>
<p>As informações prestadas no PGDAS-D têm caráter declaratório, constituindo confissão de dívida e instrumento hábil e suficiente para a exigência dos tributos.</p>
<p>Roteiro para gerar e imprimir o DAS:</p>
<ol>
<li>Preencher as informações no PGDAS-D.<br />
Caminho: PGDAS-D > Apuração > Calcular Valor Devido.</li>
<li>Salvar as informações.<br />
Após preencher as informações, clicar no botão "Calcular" e, na tela seguinte, no botão "Salvar".</li>
<li>Transmitir as informações.<br />
Caminho: clicar no botão "Transmitir".</li>
<li>Gerar e imprimir o DAS.
<ul>
<li>Não é possível gerar o DAS antes de transmitir as informações.</li>
<li>Caminho: acessar a opção de menu "DAS" > "Gerar DAS" > informar o período de apuração e clicar em "Continuar" > será mostrado o resumo da apuração e do valor devido > clicar no botão "Gerar DAS" > será mostrado o DAS que poderá ser salvo ou impresso pelo usuário.</li>
<li>Não é possível consultar o extrato antes de gerar o DAS.</li>
</ul>
</li>
</ol>
<p>Para visualizar a qualquer momento esta mensagem, clique em "Ajuda" > "Informações".</p>
</div>
</body>
</html>
Obrigado....mais uma vez...vamos tentando....
Link para o comentário
Compartilhar em outros sites

  • 0

creio que esse código vai ajuda-lo

...executar uma função Javascript no Webbrowser Author: Thomas Stutz

uses
MSHTML_TLB, SHDocVw, ShellAPI;

// function to execute a script function

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;

// 2 Examples how to login to gmx homepage

procedure FillInGMXForms(WB: ShDocVW_TLB.IWebbrowser2; IDoc1: IHTMLDocument2;
Document: Variant; AKennung, APasswort: string);
const
IEFields: array[1..4] of string = ('INPUT', 'text', 'INPUT', 'password');
var
IEFieldsCounter: Integer;
i: Integer;
m: Integer;
ovElements: OleVariant;
begin
if
Pos('GMX - Homepage', Document.Title) <> 0 then

while
WB.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;

// count forms on document and iterate through its forms
IEFieldsCounter := 0;
for m := 0 to Document.forms.Length - 1 do
begin
ovElements := Document.forms.Item(m).elements;

// iterate through elements
for i := ovElements.Length - 1 downto 0 do
begin
try
// if input fields found, try to fill them out
if (ovElements.item(i).tagName = IEFields[1]) and
(ovElements.item(i).type = IEFields[2]) then
begin
ovElements.item(i).Value := AKennung;
Inc(IEFieldsCounter);
end;

if (ovElements.item(i).tagName = IEFields[3]) and
(ovElements.item(i).type = IEFields[4]) then
begin
ovElements.item(i).Value := APasswort;
Inc(IEFieldsCounter);
end;
except
// failed...
end;
end; { for i...}
end; { for m }
// if the fields are filled in, submit.
if IEFieldsCounter = 3 then ExecuteScript(iDoc1, 'document.login.submit()',
'JavaScript');
end;

function LoginGMX_IE(AKennung, APasswort: string): Boolean;
var
ShellWindow: IShellWindows;
WB: ShDocVW_TLB.IWebbrowser2;
spDisp: IDispatch;
IDoc1: IHTMLDocument2;
Document: Variant;
k: Integer;
begin
ShellWindow := CoShellWindows.Create;
// get the running instance of Internet Explorer
for k := 0 to ShellWindow.Count do
begin
spDisp := ShellWindow.Item(k);
if spDisp = nil then Continue;
// QueryInterface determines if an interface can be used with an object
spDisp.QueryInterface(iWebBrowser2, WB);
if WB <> nil then
begin
WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
if iDoc1 <> nil then
begin
WB := ShellWindow.Item(k) as ShDocVW_TLB.IWebbrowser2;
Document := WB.Document;
// if GMX page...
FillInGMXForms(WB, IDoc1, Document, AKennung, APasswort);
end; { idoc <> nil }
end; { wb <> nil }
end; { for k }
end;

// Example 1: Navigate to the gmx homepage in the IE browser an login
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle,
'open',
'http://www.gmx.ch'
nil,
nil,
SW_SHOW);
Sleep(2000);
LoginGMX_IE('user@gmx.net', 'pswd');
end;


// Example 2: navigate to the gmx homepage in the Webbrowser an login
procedure TForm1.Button2Click(Sender: TObject);
var
IDoc1: IHTMLDocument2;
Web: ShDocVW_TLB.IWebBrowser2;
begin
Webbrowser1.Navigate('http://www.gmx.ch');
while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc1);
Web := WebBrowser1.ControlInterface;
FillInGMXForms(Web, iDoc1, Webbrowser1.Document, 'user@gmx.net', 'pswd');
end;

==================================================================================

segue um código testado e funcionando do Forum DevMedia

unit Unit1;

interface

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

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure Button1Click(Sender: TObject);

private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
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 FillInGMXForms(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 Fazendaria', 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 TForm1.Button1Click(Sender: TObject);
var
IDoc1: IHTMLDocument2;
Web: ShDocVW.IWebBrowser2;
begin
Webbrowser1.Navigate('http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CertInter/NICertidao.asp?tipo=1');
while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc1);
Web := WebBrowser1.ControlInterface;
FillInGMXForms(Web, iDoc1, Webbrowser1.Document, '05.247.421/0001-35');
end;
end.
_________________
obrigado
att
Emerson

===================================================================================

faça os testes para ver se resolve o seu problema

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...