vyplnovani formularu ve webbrowseru v delphi (vyřešeno)

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Odpovědět
Drs
Level 1
Level 1
Příspěvky: 74
Registrován: 20 črc 2007 21:14

vyplnovani formularu ve webbrowseru v delphi (vyřešeno)

Příspěvek od Drs »

Zdravim, potřeboval bych pomoct s jednim kódem, získal jsem ho z offline seriálu tipy a triky v Delphi od Jana Šindeláře. Tady je ten kód:

Kód: Vybrat vše

procedure TForm1.Button2Click(Sender: TObject);
var
  ShellWindow: IShellWindows;
  WB: IWebbrowser2;
  spDisp: IDispatch;
  IDoc1: IHTMLDocument2;
  Document: Variant;
  k, m: Integer;
  ovElements: OleVariant;
  i: Integer;
begin
  ShellWindow := CoShellWindows.Create;
  for k := 0 to ShellWindow.Count do
  begin
    spDisp := ShellWindow.Item(k);
    if spDisp = nil then Continue;
    spDisp.QueryInterface(iWebBrowser2, WB);
    if WB <> nil then
    begin
      WB.Document.QueryInterface(IHTMLDocument2, iDoc1);
      if iDoc1 <> nil then
      begin
        WB := ShellWindow.Item(k) as IWebbrowser2;
        begin
          Document := WB.Document;
          for m := 0 to Document.forms.Length - 1 do
          begin
            ovElements := Document.forms.Item(m).elements;
            for i := 0 to ovElements.Length - 1 do
            begin
              try
                if (CompareText(ovElements.item(i).tagName, 'input') = 0) and (CompareText(ovElements.item(i).type, 'text') = 0) then
                  ovElements.item(i).Value := 'Delphi';
              except
              end;
              try
                if (CompareText(ovElements.item(i).tagName, 'input') = 0) and (CompareText(ovElements.item(i).type, 'submit') = 0) and (ovElements.item(i).Value = 'Vyhledat Googlem') then
                  ovElements.item(i).Click;
              except
              end;
            end;
          end;
        end;
      end;
    end;
  end;


end;



kdyz mam spustene jine okno exploreru jde to v pohode, sice musim nastavit rucne adresu ale jde to. Kdyz ale dam vlastnost webbrowseru na tom formulari register as browser na true, vyhodi mi to chybu acces violation at adress atd. Označený je pak tento řádek :

Kód: Vybrat vše

  WB.Document.QueryInterface(IHTMLDocument2, iDoc1);  


Nevíte někdo, kde by mohla být chyba? předem díky za odpovědi....
Naposledy upravil(a) Drs dne 06 zář 2007 18:51, celkem upraveno 1 x.
menginio
nováček
Příspěvky: 2
Registrován: 03 zář 2007 17:38
Kontaktovat uživatele:

Příspěvek od menginio »

:idea:

Kód: Vybrat vše

if WB <> nil then

Tento řádek stačí zaměnit za:

Kód: Vybrat vše

if WB.Document <> nil then

Právě vyvíjím jako začátečník aplikaci kde jsem použil stejný kód. Scháním někoho pro pomoc přes ICQ, jelikož si právě lámu hlavu nad tím samým kódem o kus níže. :D
Drs
Level 1
Level 1
Příspěvky: 74
Registrován: 20 črc 2007 21:14

Příspěvek od Drs »

parada, diky moc, uz to facha....
Odpovědět

Zpět na „Programování a tvorba webu“