FodasticC Postado Agosto 12, 2009 Denunciar Share Postado Agosto 12, 2009 Tipo um colega me mando o seguinte codigo:um exêmplo pra você, pro orkut.Só você criar um botão e um embeddedwbPrimeiro de tudo, declare essa função no TypeCODEfunction post(wb:TEmbeddedWB; n:integer; s:string = 'submit'):boolean;Depois declare a função:CODEfunction tform2.post(wb:TEmbeddedWB; n:integer; s:string = 'submit'): boolean;var ovElements: OleVariant; i: Integer;begin result:=false; ovElements := wb.OleObject.Document.forms.item(n).elements; for i := 0 to (ovElements.Length - 1) do if (SameText(ovElements.item(i).type, s) )then begin ovElements.item(i).Click; result:=true; end;end;agora vem a parte final, que é colocar login e senha, depois logar.CODEprocedure TForm2.Button1Click(Sender: TObject);beginEmbeddedWB1.FillForm('Email','Seu e-mail');EmbeddedWB1.FillForm('Passwd','Sua senha');post(EmbeddedWB1,0);end;eu estou tentando fazer 1 programa pra entrar já no orkut logado como fazer isso ai funcionar, eu tentei o programa rodo mais não apareceu nada. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 12, 2009 Denunciar Share Postado Agosto 12, 2009 eu estou tentando fazer 1 programa pra entrar já no orkut logado como fazer isso ai funcionar, eu tentei o programa rodo mais não apareceu nada.Só você criar um botão e um embeddedwbNa verdade não é só isso:Este código é pra funcionar em cima do TWebBrowser ... se voce não o usar em um form não verá nadaVoce deve abrir a pagina do orkut pelo componente TWebBrowser onde Urls.Text é o caminho para a pagina do OrkutWebBrowser1.Navigate(WideString(Urls.Text), 0, 0, 0, 0);depois que a pagina for carrega ai sim voce pode preencher os campos 'Email' e 'Passwd' e submete-los usando o EmbeddedWB1Alias para quem se interessar por esses componentes pode acha-los para download neste endereçohttp://pt.softpicks.net/software/Programac...er_pt-31671.htmServem para manipular as paginas WEB, as entradas dos elementos, escrever nos campos e finalmente submeter o form ... como no caso do código que voce esta usandoOutro exemplo de uso:http://delphi.about.com/od/twebbrowser/a/submit_web_form.htmhttp://delphi.about.com/od/twebbrowser/a/s..._web_form_2.htmabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Agosto 13, 2009 Denunciar Share Postado Agosto 13, 2009 Creio que não vai funcionar, pois o webbrowser tem um bug, mesmo se você navegar para a pagina do orkut usando ele, e digitar login e senha manualmente, quando clicar no botão logar, ele da um erro maluco 'Invalid Floating point operation' que até hoje não vi quem concertasse, rsrsrAbraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FodasticC Postado Agosto 14, 2009 Autor Denunciar Share Postado Agosto 14, 2009 douglas, aki tambem dava isso mais paro, manualmente tambem vai xD. so não sei dizer porque paro husauhasmais tipo o que estou fazendo de errado jhonas:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB;type TForm1 = class(TForm) Button1: TButton; EmbeddedWB1: TEmbeddedWB; procedure Button1Click(Sender: TObject); function post(wb:TEmbeddedWB; n:integer; s:string = 'submit'):boolean; private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}function tform1.post(wb:TEmbeddedWB; n:integer; s:string = 'submit'): boolean;var ovElements: OleVariant; i: Integer;begin result:=false; ovElements := wb.OleObject.Document.forms.item(n).elements; for i := 0 to (ovElements.Length - 1) do if (SameText(ovElements.item(i).type, s) )then begin ovElements.item(i).Click; result:=true; end;procedure TForm1.Button1Click(Sender: TObject); <-----~----~~ Aki esta dando ERRObeginEmbeddedWB1.FillForm('Email','xxxx');EmbeddedWB1.FillForm('senha','xxxx');post(EmbeddedWB1,0);end;end.e como eu terminaria com o codigo que você coloco. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Agosto 14, 2009 Denunciar Share Postado Agosto 14, 2009 (editado) cara, vou tentar aqui, se tiver parado esse erro, eu faço aqui para você, e te envio, eu já tinha começado, só tem o problema do erro mesmo, ehehe!Abraços______________________________________________________Omg, o erro parou... nossa, o orkut deve ter se adaptado, o unico erro é de segurança agora!, fala q não tem segurança, fora isso ta beleza, ehehe, vou fazer jaja te mando.Abraço Editado Agosto 14, 2009 por Douglas_Soares Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Agosto 14, 2009 Denunciar Share Postado Agosto 14, 2009 O négocio é o seguinte! ta meio complicado! eu fiz o processo porem quando incremento da o bendi erro "invalid floating point operation"esse codigo aqui funciona:insita um WebBrowser no form, 2 edits, um chama edt_usuario e outro chamado edt_senha. e um botão!depois use o código abaixo!Vai funcionar tranquilo!unit orkut; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, MSHTML, Buttons, ComObj, MOZILLACONTROLLib_TLB; type TForm1 = class(TForm) edt_usuario: TEdit; edt_senha: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; WebBrowser1: TWebBrowser; procedure WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} 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; 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; 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 WebBrowser1.OleObject.Document.All.Tags('input').item('email').value := edt_usuario.Text; WebBrowser1.OleObject.Document.All.Tags('input').item('passwd').value := edt_senha.Text; document := WebBrowser1.Document as IHTMLDocument2; theForm := GetFormByNumber(document,0); SetFieldValue(theForm,'gaia_loginform', 'signIn'); theForm.submit; except end; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_F5 then Begin WebBrowser1.Refresh; End; end; procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('https://www.google.com/accounts/ServiceLogin?service=orkut&hl=pt-BR&rm=false&continue=http%3A%2F%2Fwww.orkut.com%2FRedirLogin.aspx%3Fmsg%3D0%26page%3Dhttp%253A%252F%252Fwww.orkut.com.br%252FHome.aspx&cd=BR&passive=true&skipvpage=true&sendvemail=false'); end; end. Porem isso dai, toda vez q eu ir para uma pagina vai fazer o processo e ficar dando erro, dai eu quero incrementar com uma variavel assim: unit orkut; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, MSHTML, Buttons, ComObj, MOZILLACONTROLLib_TLB; type TForm1 = class(TForm) edt_usuario: TEdit; edt_senha: TEdit; Button1: TButton; Label1: TLabel; Label2: TLabel; WebBrowser1: TWebBrowser; procedure WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; entrar : integer; implementation {$R *.dfm} 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; 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; 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 if entrar = 1 then begin try WebBrowser1.OleObject.Document.All.Tags('input').item('email').value := edt_usuario.Text; WebBrowser1.OleObject.Document.All.Tags('input').item('passwd').value := edt_senha.Text; document := WebBrowser1.Document as IHTMLDocument2; theForm := GetFormByNumber(document,0); SetFieldValue(theForm,'gaia_loginform', 'signIn'); theForm.submit; except end; end; entrar := 0; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_F5 then Begin WebBrowser1.Refresh; End; end; procedure TForm1.Button1Click(Sender: TObject); begin entrar := 1; WebBrowser1.Navigate('https://www.google.com/accounts/ServiceLogin?service=orkut&hl=pt-BR&rm=false&continue=http%3A%2F%2Fwww.orkut.com%2FRedirLogin.aspx%3Fmsg%3D0%26page%3Dhttp%253A%252F%252Fwww.orkut.com.br%252FHome.aspx&cd=BR&passive=true&skipvpage=true&sendvemail=false'); end; procedure TForm1.FormCreate(Sender: TObject); begin entrar := 0; end; end.Só que desse jeito ai, da o bendito erro!, se puderem ver oque está ocorrendo agradeço!, eheheheAbraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Agosto 14, 2009 Denunciar Share Postado Agosto 14, 2009 mais tipo o que estou fazendo de errado jhonas:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB; type TForm1 = class(TForm) Button1: TButton; EmbeddedWB1: TEmbeddedWB; procedure Button1Click(Sender: TObject); function post(wb:TEmbeddedWB; n:integer; s:string = 'submit'):boolean; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function tform1.post(wb:TEmbeddedWB; n:integer; s:string = 'submit'): boolean; var ovElements: OleVariant; i: Integer; begin result:=false; ovElements := wb.OleObject.Document.forms.item(n).elements; for i := 0 to (ovElements.Length - 1) do if (SameText(ovElements.item(i).type, s) )then begin ovElements.item(i).Click; result:=true; end; procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('https://www.google.com/accounts/ServiceLogin?service=orkut&hl=pt-BR&rm=false&continue=http%3A%2F%2Fwww.orkut.com%2FRedirLogin.aspx%3Fmsg%3D0%26page%3Dhttp%253A%252F%252Fwww.orkut.com.br%252FHome.aspx%253Fhl%253Dpt-BR%2526tab%253Dw0&cd=BR&passive=true&skipvpage=true&sendvemail=false'); sleep(3000); // tempo para esperar a janela toda ser garregada, mas existem outras formas de se fazer isso EmbeddedWB1.FillForm('Email','xxxx'); EmbeddedWB1.FillForm('senha','xxxx'); post(EmbeddedWB1,0); end; end.e como eu terminaria com o codigo que você coloco.procedure TForm1.Button1Click(Sender: TObject); <-----~----~~ Aki esta dando ERROComo eu falei, sem o WebBrowser o componente EmbeddedWB não mostrará nadaabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 philberX Postado Janeiro 13, 2010 Denunciar Share Postado Janeiro 13, 2010 no codigo do mininu ai ta faltando 1 ;function tform1.post(wb:TEmbeddedWB; n:integer; s:string = 'submit'): boolean;varovElements: OleVariant;i: Integer;{ 1 }beginresult:=false;ovElements := wb.OleObject.Document.forms.item(n).elements;for i := 0 to (ovElements.Length - 1) doif (SameText(ovElements.item(i).type, s) )then{1}beginovElements.item(i).Click;result:=true;{1}end;procedure TForm1.Button1Click(Sender: TObject); <-----~----~~ Aki esta dando ERRO Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
FodasticC
Tipo um colega me mando o seguinte codigo:
um exêmplo pra você, pro orkut.
Só você criar um botão e um embeddedwb
Primeiro de tudo, declare essa função no Type
Depois declare a função:agora vem a parte final, que é colocar login e senha, depois logar.
eu estou tentando fazer 1 programa pra entrar já no orkut logado como fazer isso ai funcionar, eu tentei o programa rodo mais não apareceu nada.
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
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.