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

Como fazer isso funcionar


FodasticC

Pergunta

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

CODE

function post(wb:TEmbeddedWB; n:integer; s:string = 'submit'):boolean;

Depois declare a função:
CODE

function 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.

CODE

procedure TForm2.Button1Click(Sender: TObject);

begin

EmbeddedWB1.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.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
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 embeddedwb

Na 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á nada

Voce deve abrir a pagina do orkut pelo componente TWebBrowser onde Urls.Text é o caminho para a pagina do Orkut

WebBrowser1.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

EmbeddedWB1

Alias para quem se interessar por esses componentes pode acha-los para download neste endereço

http://pt.softpicks.net/software/Programac...er_pt-31671.htm

Servem 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 usando

Outro exemplo de uso:

http://delphi.about.com/od/twebbrowser/a/submit_web_form.htm

http://delphi.about.com/od/twebbrowser/a/s..._web_form_2.htm

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

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, rsrsr

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

douglas, aki tambem dava isso mais paro, manualmente tambem vai xD. so não sei dizer porque paro husauhas

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); <-----~----~~ Aki esta dando ERRO

begin

EmbeddedWB1.FillForm('Email','xxxx');

EmbeddedWB1.FillForm('senha','xxxx');

post(EmbeddedWB1,0);

end;

end.

e como eu terminaria com o codigo que você coloco.

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Douglas_Soares
Link para o comentário
Compartilhar em outros sites

  • 0

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!, ehehehe

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
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 ERRO

Como eu falei, sem o WebBrowser o componente EmbeddedWB não mostrará nada

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

no codigo do mininu ai ta faltando 1 ;

function tform1.post(wb:TEmbeddedWB; n:integer; s:string = 'submit'): boolean;

var

ovElements: OleVariant;

i: Integer;

{ 1 }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

{1}begin

ovElements.item(i).Click;

result:=true;

{1}end;

procedure TForm1.Button1Click(Sender: TObject); <-----~----~~ Aki esta dando ERRO

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...