Täytä / lähetä lomakkeita käyttämällä 'TWebBrowser' Delphissä

click fraud protection

TWebBrowser Delphi-ohjaus tarjoaa pääsyn Web-selaimen toimintoihin Delphi-sovelluksistasi - jotta voit luoda räätälöityä verkkoa selaussovellus tai lisätäksesi Internet-, tiedosto- ja verkkoselaamista, asiakirjojen katselua ja tietojen lataamista sovellukset.

Verkkolomakkeet

verkkolomake tai a muodostaa verkkosivun sallii verkkosivun kävijän kirjoittaa tietoja, jotka useimmissa tapauksissa lähetetään palvelimelle käsittelyä varten.

Yksinkertaisin web-muoto voi koostua yhdestä syöttöelementti (muokkaa ohjausta) ja a Lähetä painiketta. Useimmat web-hakukoneet (kuten Google) käyttävät sellaista verkkolomaketta, jonka avulla voit tehdä hakuja Internetistä.

Monimutkaisempia verkkolomakkeita ovat avattavat luettelot, valintaruudut, valintanappi jne. Verkkolomake on paljon kuin tavallinen Windows-lomake, jossa on tekstinsyöttö ja valinta.

Jokaiseen lomakkeeseen sisältyy painike - lähetä-painike -, joka kehottaa selainta toimimaan verkkolomakkeessa (yleensä lähettämään sen web-palvelimelle käsittelyä varten).

instagram viewer

Ohjelmallisesti Web-lomakkeet

Jos käytät työpöytäsovelluksessa TWebBrowser-sovellusta verkkosivujen näyttämiseen, voit ohjelmallisesti hallita web-lomakkeita: manipuloida, muuttaa, täyttää, täyttää web-lomakkeen kenttiä ja lähettää ne.

Tässä on kokoelma mukautettuja Delphi-toimintoja, joiden avulla voit listata kaikki verkkosivun Web-lomakkeet, hakea syöttöelementtejä, täyttää ohjelmallisesti kentät ja lopulta toimittaa lomake.

Jos haluat seurata esimerkkejä helpommin, sanotaan, että Delphi (Windows-standardi) -lomakkeessa on TWebBrowser-hallintalaite nimeltä "WebBrowser1".

Huomaa: sinun pitäisi lisätä MSHTML käyttölausekkeesi tässä lueteltujen menetelmien kääntämiseksi.

Lista Web-lomakkeiden nimet, hanki Web-lomake hakemiston mukaan

Verkkosivulla olisi useimmissa tapauksissa vain yksi verkkolomake, mutta joillakin verkkosivuilla voi olla useampia kuin yksi verkkosivulomake. Näin haet kaikkien verkkosivujen Web-lomakkeiden nimet:

toimia WebFormNames (const asiakirja: IHTMLDocument2): TStringList; var lomakkeet: IHTMLElementCollection; muoto: IHTMLFormElement; idx: kokonaisluku; alkaa lomakkeet: = asiakirja. Lomakkeet nimellä IHTMLElementCollection; tulos: = TStringList. Luoda; varten idx: = 0 että -1 + muodot.pituus tehdäalkaa muoto: = forms.item (idx, 0) nimellä IHTMLFormElement; tulos. Lisää (muoto.nimi); pää; pää; 

Yksinkertainen käyttö Web-lomakkeiden nimiluettelon näyttämiseen TMemossa:

var lomakkeet: TStringList; alkaa lomakkeet: = WebFormNames (WebBrowser1.Document KUTEN IHTMLDocument2); yrittää memo1.Lines. Antaa (lomakkeet); vihdoin muotoja. Vapaa; pää; pää; 

Tässä on miten hanki verkkolomakkeen esimerkki hakemiston perusteella. Yhden lomakesivun hakemisto olisi 0 (nolla).

toimia WebFormGet (const formNumber: kokonaisluku; const asiakirja: IHTMLDocument2): IHTMLFormElement; var lomakkeet: IHTMLElementCollection; alkaa lomakkeet: = asiakirja. Lomakkeet kuten IHTMLElementCollection; tulos: = lomakkeet. Tuote (muotoNumero, '') kuten IHTMLFormElement. pää; 

Kun sinulla on verkkolomake, voit luettele kaikki HTML-syöttöelementit nimensä mukaan, sinä pystyt Hanki tai aseta arvo jokaiselle kentälleja lopulta voit lähetä verkkolomake.

Verkkosivut voivat isännöidä verkkolomakkeita, joissa on syöttöelementtejä, kuten muokkausruudut ja avattavat luettelot, joita voit hallita ja muokata ohjelmallisesti Delphi-koodista.

Kun sinulla on verkkolomake, voit luettele kaikki HTML-syöttöelementit nimensä mukaan:

toimia WebFormFields (const asiakirja: IHTMLDocument2; const formName: jono): TStringList; var muoto: IHTMLFormElement; kenttä: IHTMLElement; fName: merkkijono; idx: kokonaisluku; alkaa muoto: = WebFormGet (0, WebBrowser1.Document KUTEN IHTMLDocument2); tulos: = TStringList. Luoda; varten idx: = 0 että -1 + muodon pituus tehdä aloituskenttä: = form.item (idx, '') nimellä IHTMLElement; jos kenttä = nolla sitten Jatkaa; fName: = kenttä.id; jos field.tagName = 'INPUT' sitten fName: = (kenttä kuten IHTMLInputElement) .name; jos field.tagName = 'SELECT' sitten fName: = (kenttä kuten IHTMLSelectElement) .name; jos field.tagName = 'TEXTAREA' sitten fName: = (kenttä kuten IHTMLTextAreaElement) .name; tulos. Lisää (fName); pää; pää;

Kun tiedät verkkolomakkeen kenttien nimet, voit ohjelmoida saada arvo yhdelle HTML-kentälle:

toimia WebFormFieldValue ( const asiakirja: IHTMLDocument2; const formNumber: kokonaisluku; const kenttä nimi: jono): jono; var muoto: IHTMLFormElement; kenttä: IHTMLElement; alkaa muoto: = WebFormGet (muotoNumero, WebBrowser1.Document KUTEN IHTMLDocument2); kenttä: = muoto. Kohde (kentän nimi, '') nimellä IHTMLElement; jos kenttä = nolla sitten exit; jos field.tagName = 'INPUT' sitten tulos: = (kenttä kuten IHTMLInputElement) .value; jos field.tagName = 'SELECT' sitten tulos: = (kenttä kuten IHTMLSelectElement) .value; jos field.tagName = 'TEXTAREA' sitten tulos: = (kenttä kuten IHTMLTextAreaElement) .value; pää;

Esimerkki käytöstä URL-nimisen syöttökentän arvon saamiseksi:

const FIELDNAME = 'URL'; var doc: IHTMLDocument2; fieldValue: jono; alkaa doc: = WebBrowser1.Document KUTEN IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Lisää ('Kenttä: "URL", arvo:' + fieldValue);pää;

Koko idealla ei olisi arvoa, jos et pystyisi Täytä web-lomakeelementit:

menettely WebFormSetFieldValue (const asiakirja: IHTMLDocument2; const formNumber: kokonaisluku; const fieldName, newValue: jono); var muoto: IHTMLFormElement; kenttä: IHTMLElement; alkaa muoto: = WebFormGet (muotoNumero, WebBrowser1.Document KUTEN IHTMLDocument2); kenttä: = muoto. Kohde (kentän nimi, '') kuten IHTMLElement; jos kenttä = nolla sitten exit; jos field.tagName = 'INPUT' sitten (ala kuten IHTMLInputElement) .value: = newValue; jos field.tagName = 'SELECT' sitten (ala kuten IHTMLSelectElement): = newValue; jos field.tagName = 'TEXTAREA' sitten (ala kuten IHTMLTextAreaElement): = newValue; pää;

Lähetä verkkolomake

Viimeinkin, kun kaikkia kenttiä käsitellään, haluat todennäköisesti lähettää verkkosivun Delphi-koodista. Näin:

menettely WebFormSubmit ( const asiakirja: IHTMLDocument2; const muotoNumero: kokonaisluku); var muoto: IHTMLFormElement; kenttä: IHTMLElement; alkaa muoto: = WebFormGet (muotoNumero, WebBrowser1.Document KUTEN IHTMLDocument2); form.submit; pää;

Kaikki Web-lomakkeet eivät ole "avoimia"

Jotkin verkkosivut saattavat isännöidä captcha-kuvaa estääksesi verkkosivujen manipuloinnin ohjelmallisesti.

Joitakin verkkolomakkeita ei ehkä lähetetä, kun "napsautat lähetä-painiketta." Jotkut verkkolomakkeet suorittavat JavaScriptin tai jokin muu menettely suoritetaan verkkolomakkeen "lähetä" -tapahtumassa.

Joka tapauksessa verkkosivuja voidaan hallita ohjelmallisesti, ainoa kysymys on "kuinka pitkälle olet valmis menemään?"

instagram story viewer