Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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; 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); win: IHTMLWindow2;
Olelanguage: Olevariant; 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;[]'s
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.
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
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?
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
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...
Pessoal encontrei uma documentação sobre o assunto
http://www.delphidabbler.com/articles?article=21
Porem ainda assim não consegui desenvolver a questão citado no Tópico Acima, mas poda clareara as idéias de alguem.