Poselite / pošljite obrazce z uporabo 'TWebBrowser' v Delphiju

The TWebBrowser Nadzor Delphi omogoča dostop do funkcij spletnega brskalnika iz vaših aplikacij Delphi - za ustvarjanje spletnih strani po meri brskalniško aplikacijo ali za dodajanje možnosti brskanja po internetu, datotekah in omrežju, pregledovanje dokumentov in prenos podatkov aplikacije.

Spletni obrazci

A spletni obrazec ali a obrazec na spletni strani omogoča obiskovalcu spletne strani, da vnese podatke, ki so v večini primerov poslani strežniku v obdelavo.

Najenostavnejši spletni obrazec bi lahko bil sestavljen iz enega vhodni element (urejanje nadzora) in a oddati gumb. Večina spletnih iskalnikov (kot je Google) uporablja takšen spletni obrazec za iskanje po internetu.

Bolj zapleteni spletni obrazci bi vključevali spustne sezname, potrditvena polja, izbirne gumbe itd. Spletni obrazec je podoben standardnemu okenskemu obrazcu z nadzorom vnosa in izbire besedila.

Vsak obrazec bi vseboval gumb - gumb za pošiljanje -, ki brskalniku sporoči, da mora ukrepati na spletnem obrazcu (običajno ga pošlje spletnemu strežniku v obdelavo).

instagram viewer

Programsko naseljevanje spletnih obrazcev

Če v namizni aplikaciji uporabljate TWebBrowser za prikaz spletnih strani, lahko programsko nadzirate spletne obrazce: manipulirate, spreminjate, zapolnjujete, polnite polja spletnega obrazca in jih oddate.

Tu je zbirka prilagojenih funkcij Delphi, ki jih lahko uporabite za seznam vseh spletnih obrazcev na spletni strani, za pridobivanje vhodnih elementov, za programiranje polj in končno oddajo obrazca.

Če želite lažje slediti primerom, recimo, da na obrazcu Delphi (standardni Windows) obstaja krmilnik TWebBrowser z imenom "WebBrowser1".

Opomba: dodajte mshtml klavzuli o uporabi, da sestavite tukaj navedene metode.

Navedite imena spletnih obrazcev, dobite spletni obrazec po indeksu

Spletna stran bi v večini primerov imela samo en spletni obrazec, nekatere spletne strani pa bi lahko imele več. Takole najdete imena vseh spletnih obrazcev na spletni strani:

funkcijo WebFormNames (konst dokument: IHTMLDocument2): TStringList; var obrazci: IHTMLElementCollection; oblika: IHTMLFormElement; idx: celo število; začeti obrazci: = dokument. Oblikuje kot IHTMLElementCollection; rezultat: = TStringList. Ustvari; za idx: = 0 do -1 + oblike.dolžina storizačeti oblika: = form.item (idx, 0) kot IHTMLFormElement; rezultat. Dodaj (ime obrazca); konec; konec; 

Preprosta uporaba za prikaz seznama imen spletnih obrazcev v TMemo:

var obrazci: TStringList; začeti obrazci: = WebFormNames (WebBrowser1.Document AS IHTMLDocument2); poskusi memo1.Lines. Dodelite (obrazci); končno obrazcev. Prost; konec; konec; 

Tukaj je, kako dobite primerek spletnega obrazca po indeksu. Za eno stran obrazca bi bil indeks 0 (nič).

funkcijo WebFormGet (konst formNumber: celo število; konst dokument: IHTMLDocument2): IHTMLFormElement; var obrazci: IHTMLElementCollection; začeti obrazci: = dokument. Obrazci kot IHTMLElementCollection; rezultat: = obrazci. Postavka (obrazec Število, '') kot IHTMLFormElement. konec; 

Ko imate spletni obrazec, lahko seznam vseh vhodnih elementov HTML glede na njihovo ime, ti lahko dobite ali nastavite vrednost za vsako od poljin končno lahko oddajte spletni obrazec.

Spletne strani lahko gostijo spletne obrazce z vhodnimi elementi, kot so polja za urejanje in spustne sezname, s katerimi lahko programsko nadzirate in upravljate iz kode Delphi.

Ko imate spletni obrazec, lahko seznam vseh vhodnih elementov HTML glede na njihovo ime:

funkcijo WebFormFields (konst dokument: IHTMLDocument2; konst formName: vrvica): TStringList; var oblika: IHTMLFormElement; polje: IHTMLElement; fName: string; idx: celo število; začeti oblika: = WebFormGet (0, WebBrowser1.Document AS IHTMLDocument2); rezultat: = TStringList. Ustvari; za idx: = 0 do -1 + oblika.dolžina stori začetno polje: = form.item (idx, '') kot IHTMLElement; če polje = nič torej Nadaljujte; fName: = field.id; če field.tagName = 'INPUT' torej fName: = (polje kot IHTMLInputElement) .name; če field.tagName = 'IZBERI' torej fName: = (polje kot IHTMLSelectElement) .ime; če field.tagName = 'TEXTAREA' torej fName: = (polje kot IHTMLTextAreaElement) .ime; rezultat. Dodaj (fName); konec; konec;

Ko poznate imena polj na spletnem obrazcu, lahko programirate dobili vrednost za eno polje HTML:

funkcijo WebFormFieldValue ( konst dokument: IHTMLDocument2; konst formNumber: celo število; konst fieldName: vrvica): vrvica; var oblika: IHTMLFormElement; polje: IHTMLElement; začeti oblika: = WebFormGet (formNumber, WebBrowser1.Document AS IHTMLDocument2); polje: = obrazec. Element (poljeName, '') kot IHTMLElement; če polje = nič torej Izhod; če field.tagName = 'INPUT' torej rezultat: = (polje kot IHTMLInputElement). Vrednost; če field.tagName = 'IZBERI' torej rezultat: = (polje kot IHTMLSelectElement). Vrednost; če field.tagName = 'TEXTAREA' torej rezultat: = (polje kot IHTMLTextAreaElement). Vrednost; konec;

Primer uporabe za pridobitev vrednosti polja za vnos z imenom "URL":

konst FIELDNAME = 'URL'; var doc: IHTMLDocument2; fieldValue: vrvica; začeti doc: = WebBrowser1.Document AS IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Dodaj ('Polje: "URL", vrednost:' + poljeValue);konec;

Celotna ideja ne bi imela nobene vrednosti, če je ne bi mogli izpolnite elemente spletnega obrazca:

postopek WebFormSetFieldValue (konst dokument: IHTMLDocument2; konst formNumber: celo število; konst fieldName, newValue: vrvica); var oblika: IHTMLFormElement; polje: IHTMLElement; začeti oblika: = WebFormGet (formNumber, WebBrowser1.Document AS IHTMLDocument2); polje: = obrazec. Postavka (poljeName, '') kot IHTMLElement; če polje = nič torej Izhod; če field.tagName = 'INPUT' torej (polje kot IHTMLInputElement). Vrednost: = newValue; če field.tagName = 'IZBERI' torej (polje kot IHTMLSelectElement): = novaValue; če field.tagName = 'TEXTAREA' torej (polje kot IHTMLTextAreaElement): = nova vrednost; konec;

Predložite spletni obrazec

Ko končate z vsemi polji, boste verjetno želeli predložiti spletni obrazec iz kode Delphi. Takole:

postopek WebFormSubmit ( konst dokument: IHTMLDocument2; konst formNumber: celo število); var oblika: IHTMLFormElement; polje: IHTMLElement; začeti oblika: = WebFormGet (formNumber, WebBrowser1.Document AS IHTMLDocument2); obrazec.pošlje; konec;

Vsi spletni obrazci niso odprti

Nekateri spletni obrazci lahko gostijo sliko captcha, da preprečijo programsko manipulacijo s spletnimi stranmi.

Nekateri spletni obrazci morda ne bodo poslani, ko "kliknete gumb za pošiljanje". Nekateri spletni obrazci izvršijo JavaScript ali kakšen drug postopek se izvede v primeru "onsubmit" spletnega obrazca.

V vsakem primeru je mogoče spletne strani programsko nadzorovati, vprašanje je le, "kako daleč ste pripravljeni iti?"

instagram story viewer