Töltse ki / küldje el az űrlapokat a 'TWebBrowser' használatával a Delphi-ben

click fraud protection

Az TWebBrowser A Delphi vezérlés hozzáférést biztosít a böngésző funkcióihoz a Delphi alkalmazásokból - testreszabott web létrehozásához böngésző alkalmazás, vagy Internet, fájl- és hálózati böngészés, dokumentummegtekintés és adatletöltési lehetőségek hozzáadása az Ön böngészőjéhez alkalmazásokat.

Internetes űrlapok

A webes űrlap vagy a űrlap egy weboldalon lehetővé teszi egy weboldal látogató számára az adatok bevitelét, amelyeket a legtöbb esetben a szervernek küldnek feldolgozásra.

A legegyszerűbb internetes forma egyből állhat bemeneti elem (vezérlés szerkesztése) és a Beküldés gomb. A legtöbb internetes keresőmotor (például a Google) ilyen webes űrlapot használ, hogy lehetővé tegye az interneten való keresést.

A bonyolultabb internetes űrlapok közé tartoznak a legördülő listák, a jelölőnégyzetek, a választógombok stb. A webes űrlap nagyjából hasonlít egy szokásos Windows űrlaphoz, szövegbeviteli és kiválasztási vezérlőkkel.

Minden űrlapnak tartalmaznia kell egy gombot - egy elküldés gombot -, amely arra szólítja fel a böngészőt, hogy tegyen lépéseket az internetes űrlapon (általában küldje el egy webkiszolgálóra feldolgozás céljából).

instagram viewer

Programozottan feltöltő webes űrlapok

Ha az asztali alkalmazásban a TWebBrowser programot használja weboldalak megjelenítéséhez, akkor programozhatóan ellenőrizheti a webes űrlapokat: manipulálhatja, megváltoztathatja, kitöltheti, kitöltheti a webes űrlap mezőit, és elküldheti azt.

Az alábbiakban bemutatjuk az egyéni Delphi funkciók gyűjteményét, amelyek segítségével felsorolhatja az összes webes űrlapot a weboldalon, beviteli elemeket tölthet be, programozottan kitöltheti a mezőket és végül elküldheti az űrlapot.

A példák könnyebb követése érdekében mondjuk, hogy van egy „WebBrowser1” elnevezésű TWebBrowser vezérlő Delphi (szabványos Windows) űrlapon.

Megjegyzés: hozzá kell adnia MSHTML az Ön felhasználási záradékához az itt felsorolt ​​módszerek összeállítása érdekében.

Sorolja fel a webes űrlapneveket, szerezzen egy webes űrlapot index szerint

A weboldalaknak a legtöbb esetben csak egy webes űrlapja lenne, ám egyes weblapoknak több weblap is lehet. Így szerezheti be az összes webes űrlap nevét:

funkció WebFormNames (const dokumentum: IHTMLDocument2): TStringList; var formák: IHTMLElementCollection; forma: IHTMLFormElement; idx: egész szám; kezdődik űrlapok: = dokumentum. Az űrlapok IHTMLElementCollection; eredmény: = TStringList. létrehozása; mert idx: = 0 nak nek -1 + formákhossz csinálkezdődik forma: = forms.item (idx, 0) mint IHTMLFormElement; eredmény. Add (form.név); vég; vég; 

Egy egyszerű használat a webes űrlapnevek listájának megjelenítéséhez a TMemo-ban:

var formák: TStringList; kezdődik űrlapok: = WebFormNames (WebBrowser1.Document MINT IHTMLDocument2); próbáld ki memo1.Lines. Feladat (űrlapok); végül formákat. Ingyenes; vég; vég; 

Itt van, hogyan kell beszerezheti a webes űrlap példányát index alapján. Egyetlen űrlapoldalon az index 0 (nulla) lenne.

funkció WebFormGet (const formNumber: egész szám; const dokumentum: IHTMLDocument2): IHTMLFormElement; var formák: IHTMLElementCollection; kezdődik űrlapok: = dokumentum. Forms mint IHTMLElementCollection; eredmény: = formák. Cikk (képernyőszám, '') mint IHTMLFormElement. vég; 

Miután megszerezte az internetes űrlapot, megteheti sorolja fel az összes HTML bemeneti elemet a neve alapján, tudsz szerezzen vagy állítsa be az egyes mezők értékétés végül megteheted nyújtsa be az internetes űrlapot.

A weboldalak tárolhatnak webes űrlapokat olyan bemeneti elemekkel, mint a szerkesztődobozok, és a legördülő listákkal, amelyeket a Delphi kódból programozva kezelhet és kezelhet.

Miután megszerezte az internetes űrlapot, megteheti sorolja fel az összes HTML bemeneti elemet a neve alapján:

funkció WebFormFields (const dokumentum: IHTMLDocument2; const formName: húr): TStringList; var forma: IHTMLFormElement; mező: IHTMLElement; fName: string; idx: egész szám; kezdődik forma: = WebFormGet (0, WebBrowser1.Document MINT IHTMLDocument2); eredmény: = TStringList. létrehozása; mert idx: = 0 nak nek -1 + alakhossz csinál kezdő mező: = form.item (idx, '') mint IHTMLElement; ha mező = akkor nulla Folytatni; fName: = field.id; ha field.tagName = 'INPUT' azután fName: = (mező mint IHTMLInputElement) .name; ha field.tagName = 'SELECT' azután fName: = (mező mint IHTMLSelectElement) .name; ha field.tagName = 'TEXTAREA' azután fName: = (mező mint IHTMLTextAreaElement) .name; eredmény. Add (fName); vég; vég;

Ha ismeri a webes űrlap mezőinek nevét, programozhat szerezzen értéket egyetlen HTML mezőhöz:

funkció WebFormFieldValue ( const dokumentum: IHTMLDocument2; const formNumber: egész szám; const mező neve: húr): húr; var forma: IHTMLFormElement; mező: IHTMLElement; kezdődik forma: = WebFormGet (formNumber, WebBrowser1.Document MINT IHTMLDocument2); mező: = forma. Elem (mezőnév, '') mint IHTMLElement; ha mező = akkor nulla Kijárat; ha field.tagName = 'INPUT' azután eredmény: = (mező mint IHTMLInputElement) .Value; ha field.tagName = 'SELECT' azután eredmény: = (mező mint IHTMLSelectElement) .Value; ha field.tagName = 'TEXTAREA' azután eredmény: = (mező mint IHTMLTextAreaElement) .Value; vég;

Példa az „URL” nevű beviteli mező értékének megszerzésére:

const FIELDNAME = 'url'; var doc: IHTMLDocument2; fieldValue: húr; kezdődik doc: = WebBrowser1.Document MINT IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Add ('Mező: "URL", érték:' + fieldValue);vég;

Az egész ötletnek nem lenne értéke, ha nem lenne képes töltse ki a webes űrlapelemeket:

eljárás WebFormSetFieldValue (const dokumentum: IHTMLDocument2; const formNumber: egész szám; const fieldName, newValue: húr); var forma: IHTMLFormElement; mező: IHTMLElement; kezdődik forma: = WebFormGet (formNumber, WebBrowser1.Document MINT IHTMLDocument2); mező: = forma. Elem (fieldName, '') mint IHTMLElement; ha mező = akkor nulla Kijárat; ha field.tagName = 'INPUT' azután (terület mint IHTMLInputElement) .value: = newValue; ha field.tagName = 'SELECT' azután (terület mint IHTMLSelectElement): = newValue; ha field.tagName = 'TEXTAREA' azután (terület mint IHTMLTextAreaElement): = newValue; vég;

Nyújtson be webes űrlapot

Végül, ha az összes mezőt manipulálják, akkor valószínűleg el szeretné küldeni a webes űrlapot a Delphi kódból. Itt van, hogyan:

eljárás WebFormSubmit ( const dokumentum: IHTMLDocument2; const formNumber: egész); var forma: IHTMLFormElement; mező: IHTMLElement; kezdődik forma: = WebFormGet (formNumber, WebBrowser1.Document MINT IHTMLDocument2); form.submit; vég;

Nem minden webes űrlap nyitott

Előfordulhat, hogy egyes webes űrlapok egy captcha-képet tartalmaznak, hogy megakadályozzák a weboldalak programozását.

Előfordulhat, hogy egyes webes űrlapok nem kerülnek benyújtásra, ha "kattint a beküldés gombra". Néhány webes űrlap végrehajtja a JavaScriptet, vagy más eljárást a webes űrlap "onsubmit" eseménye kezeli.

Mindenesetre a weboldalak programozhatóan vezérelhetők, az egyetlen kérdés az, hogy "milyen messzire készülsz menni?"

instagram story viewer