Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pulley

[Resolvido] Inserir Dados TWebBroser

Recommended Posts

Srs Talvez alguem já postou essa dúvida, mas, assim mesmo não a encontrei aqui no forum, é o seguite:

 

Queria inserir dados em um formlário HTML que foi aberto por um programa no DELPHI usando o COmponente TWebBrowser, fiquei sabendo que tem como por JavaScript mas como seria?

 

Por exemplo um código como este:

 


WebBrowser1.Navigate(WideString('http://www.hotmail.com.br'));

dassa maneira o componente abre o site do hotmail, daí como por exemplo colocar dentro dos campos do formulário o LOGIN e a SENHA.

 

Alguem Pode me ajudar.

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para fazer isso você teria que saber onde exatamente iria jogar seus dados e montar uma rotina um pouco chata, pois teria que encontrar onde exatamente iria jogar sua informação na página para preenche-la.

 

procedure TfrmMain.trataPagina;
Var
  Document : IHTMLDocument2;
  FormItem: Variant;
  Field: Variant;
  FieldName: String;
  I,J: Integer;
begin
  Document := Browser.Document as IHTMLDocument2;

  if browser.OleObject.Document.all.tags('FORM').Length = 0 then
	Exit;

  for I := 0 to browser.OleObject.Document.forms.Length - 1 do
  begin
	FormItem := browser.OleObject.Document.forms.Item(I);
	for j := 0 to FormItem.Length - 1 do
	  try
		//Identifica o campo e seu nome no formulário
		Field := FormItem.Item(j);
		FieldName := Field.Name;

		if FieldName = 'c_senha' then
		   Field.Value := edit1.text;

		if FieldName = 'c_usuario' then
		   Field.Value := edit2.text;

	  except
	  end;
  end;

  if not tbtnAssistido.Down then
  begin
	inicio := now;
	timer1.enabled := true;
	//Executou todas os scripts de página antes de chamar a rotina que pode contar erros ou não
	bContabilizaErro := true;
	ExecuteScript(Document, 'mudarPagina(''parcelamento'')', 'JavaScript');
  end;
end;

procedure TfrmMain.ExecuteScript(doc: IHTMLDocument2; script: string; language:string);
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;

O problema desse tipo de programa é que se você não souber como a tela está montada, quais as tags utilizadas e tals, você não vai conseguir jogar os dados no lugar correto.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi Chrnos, mas assim sempre tenho q ter o JAVASCRIPT já incluso na página é isso?

 

será q tem como por exemplo acessar uma página qualquer da internet e mesmo que não tenho o javascript inserido nele eu consiga inserir os dados dentro da

página?

 

tambem nbão consegui identificar os campos com esse método pois ao tentar chamá-lo o delphi não compila

 

FormItem := browser.OleObject.Document.forms.Item(I);

ATt.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até onde sei, os scripts devem estar associados a página que está manipulando, ou não vai conseguir executá-los.

 

O browser é o meu TWebBrowser;

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saquei.... Vai ser bem dificil Meu projetinHo.... mas VOu tentar....

 

tenho q fazer uma espécie de Login Automático ... em Páginas WEB...

 

e que possa ordenar os links e objetos do Formulário que o programa irá selecionar...

 

mas minha maior dúvida nesse caso tb vai ser de que como usar os métodos da TAG FORM?

 

como o SUBMIT?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há, uma coisa que eu esqueci de mencionar antes.... a procedure de tratamento da página que coloquei antes é chamada dentro do evento OnDocumentComplete do TWebBrownser.

 

Quanto a suas outras dúvidas, nunca fiz nada neste sentido... o aplicativo que trabalhei enviava dados para uma página de um banco e lá ele só preenchia os campos disponibilizados na página e executava os scripts de validação e mudança de página.

 

Mas se você olhar bem, vai ver que o laço de repetição que eu tenho na rotina de tratamento de página varre os elementos da tag FORM e manipula os itens existentes nele.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Axei Muito Legal ajudou muito o probela é documentação para esse componente é muito pouca mesmo.

 

se tivesse alguma documentação das propriedades do Objeto TAG aí iria ser legal.

 

mas pbrigaodo Chrnos Clareou Muito... daqui sigo na Labuta.

 

 

 

Vlws, ah mas se tiver alguma documentação aceito Tb...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.