vyplnovani formularu ve webbrowseru v delphi (vyřešeno) 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

Drs
Level 1
Level 1
Příspěvky: 74
Registrován: červenec 07
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod Drs » 07 srp 2007 12:04

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.

Reklama
menginio
nováček
Příspěvky: 2
Registrován: září 07
Pohlaví: Nespecifikováno
Stav:
Offline
Kontakt:

Příspěvekod menginio » 03 zář 2007 17:47

: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: červenec 07
Pohlaví: Nespecifikováno
Stav:
Offline

Příspěvekod Drs » 06 zář 2007 18:50

parada, diky moc, uz to facha....


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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů