डेल्फी में 'टीडब्लूबीजर' का उपयोग करके पॉपुलेट / सबमिट करें

TWebBrowser डेल्फी नियंत्रण आपके डेल्फी एप्लिकेशन से वेब ब्राउज़र कार्यक्षमता तक पहुंच प्रदान करता है - आपको एक अनुकूलित वेब बनाने की अनुमति देता है ब्राउज़िंग एप्लिकेशन या इंटरनेट, फ़ाइल और नेटवर्क ब्राउज़िंग, दस्तावेज़ देखने और अपने डेटा डाउनलोड करने की क्षमताओं को अपने साथ जोड़ने के लिए अनुप्रयोग।

वेब प्रपत्र

वेब फार्म या ए एक वेब पेज पर फार्म एक वेब पेज आगंतुक को डेटा दर्ज करने की अनुमति देता है, जो ज्यादातर मामलों में, प्रसंस्करण के लिए सर्वर को भेजा जाता है।

सबसे सरल वेब फ़ॉर्म में एक शामिल हो सकता है इनपुट तत्व (edit control) और ए प्रस्तुत बटन। अधिकांश वेब खोज इंजन (जैसे Google) आपको इंटरनेट पर खोज करने की अनुमति देने के लिए इस तरह के वेब फॉर्म का उपयोग करते हैं।

अधिक जटिल वेब रूपों में ड्रॉप-डाउन सूची, चेक बॉक्स, रेडियो बटन आदि शामिल होंगे। एक वेब फॉर्म बहुत हद तक टेक्स्ट इनपुट और चयन नियंत्रण के साथ एक मानक विंडो फॉर्म की तरह है।

हर फॉर्म में एक बटन शामिल होगा - एक सबमिट बटन - जो ब्राउज़र को वेब फॉर्म पर कार्रवाई करने के लिए कहता है (आमतौर पर इसे प्रसंस्करण के लिए वेब सर्वर पर भेजना होता है)।

instagram viewer

प्रोग्रामेटिक रूप से वेब फॉर्म को पॉप्युलेट करना

यदि आपके डेस्कटॉप एप्लिकेशन में आप वेब पेज प्रदर्शित करने के लिए TWebBrowser का उपयोग करते हैं, तो आप प्रोग्राम को वेब रूप से नियंत्रित कर सकते हैं: वेब फॉर्म के फ़ील्ड्स में हेरफेर, परिवर्तन, भरण, पॉप्युलेट करें और सबमिट करें।

यहां कस्टम डेल्फी फ़ंक्शंस का एक संग्रह है, जिसका उपयोग आप वेब पेज पर सभी वेब फ़ॉर्म को सूचीबद्ध करने के लिए कर सकते हैं, इनपुट तत्वों को प्राप्त करने के लिए, प्रोग्रामेटिक रूप से फ़ील्ड्स को पॉप्युलेट करने के लिए और अंत में फ़ॉर्म सबमिट करने के लिए।

उदाहरणों का अधिक आसानी से पालन करने के लिए, मान लीजिए कि डेल्फी (मानक विंडोज) फॉर्म पर "WebBrowser1" नाम का एक TWebBrowser नियंत्रण है।

नोट: आपको जोड़ना चाहिए mshtml यहाँ सूचीबद्ध विधियों को संकलित करने के लिए आपके उपयोग के लिए खंड।

सूची वेब नाम सूची, सूचकांक द्वारा एक वेब प्रपत्र प्राप्त करें

एक वेब पेज ज्यादातर मामलों में केवल एक वेब फॉर्म होगा, लेकिन कुछ वेब पेजों में एक से अधिक वेब फॉर्म हो सकते हैं। वेब पेज पर सभी वेब फ़ॉर्म के नाम कैसे प्राप्त करें:

समारोह WebFormNames (स्थिरांक दस्तावेज़: IHTMLDocument2): TStringList; वर रूपों: IHTMLElementCollection; फ़ॉर्म: IHTMLFormElement; idx: पूर्णांक; शुरू प्रपत्र: = दस्तावेज़। IHTMLElementCollection के रूप में फॉर्म; परिणाम: = TStringList। सृजन करना; के लिये idx: = 0 सेवा -1 + रूप करशुरू फॉर्म: = form.item (idx, 0) IHTMLFormElement के रूप में; परिणाम। जोड़ें (form.name); समाप्त; समाप्त; 

TMemo में वेब फ़ॉर्म नामों की सूची प्रदर्शित करने के लिए एक सरल उपयोग:

वर रूपों: TStringList; शुरू रूपों: = WebFormNames (WebBrowser1.Document जैसा IHTMLDocument2); प्रयत्न memo1.Lines। असाइन (रूप); आखिरकार रूपों। नि: शुल्क; समाप्त; समाप्त; 

यहाँ कैसे है सूचकांक द्वारा वेब प्रपत्र का उदाहरण प्राप्त करें. एकल फॉर्म पेज के लिए इंडेक्स 0 (शून्य) होगा।

समारोह WebFormGet (स्थिरांक formNumber: पूर्णांक; स्थिरांक दस्तावेज़: IHTMLDocument2): IHTMLFormElement; वर रूपों: IHTMLElementCollection; शुरू प्रपत्र: = दस्तावेज़। फार्म जैसा IHTMLElementCollection; परिणाम: = रूप। आइटम (फ़ॉर्मनंबर, '') जैसा IHTMLFormElement। समाप्त; 

एक बार आपके पास वेब फ़ॉर्म होने के बाद, आप कर सकते हैं सभी HTML इनपुट तत्वों को उनके नाम से सूचीबद्ध करें, आप ऐसा कर सकते हैं प्रत्येक फ़ील्ड के लिए मान प्राप्त करें या सेट करें, और अंत में, आप कर सकते हैं वेब फॉर्म सबमिट करें.

वेब पेज इनपुट तत्वों के साथ वेब फॉर्मों को होस्ट कर सकते हैं जैसे कि एडिट बॉक्स और ड्रॉप डाउन सूचियां जिन्हें आप नियंत्रित कर सकते हैं और डेल्फी कोड से प्रोग्राम में हेरफेर कर सकते हैं।

एक बार आपके पास वेब फ़ॉर्म होने के बाद, आप कर सकते हैं सभी HTML इनपुट तत्वों को उनके नाम से सूचीबद्ध करें:

समारोह WebFormFields (स्थिरांक दस्तावेज़: IHTMLDocument2; स्थिरांक फ़ार्म का नाम: तार): TStringList; वर फ़ॉर्म: IHTMLFormElement; फ़ील्ड: IHTMLElement; fName: स्ट्रिंग; idx: पूर्णांक; शुरू फ़ॉर्म: = WebFormGet (0, WebBrowser1.Document जैसा IHTMLDocument2); परिणाम: = TStringList। सृजन करना; के लिये idx: = 0 सेवा -1 + रूप कर आरंभ क्षेत्र: = form.item (idx, '') IHTMLElement के रूप में; अगर क्षेत्र = फिर नील जारी रखें; fName: = field.id; अगर field.tagName = 'INPUT' फिर fName: = (फ़ील्ड) जैसा IHTMLInputElement) .name; अगर field.tagName = 'चयन' फिर fName: = (फ़ील्ड) जैसा IHTMLSelectElement) .name; अगर field.tagName = 'TEXTAREA' फिर fName: = (फ़ील्ड) जैसा IHTMLTextAreaElement) .name; परिणाम। जोड़ें (fName); समाप्त; समाप्त;

जब आप किसी वेब फ़ॉर्म पर फ़ील्ड्स के नाम जानते हैं, तो आप प्रोग्राम कर सकते हैं मान प्राप्त करें एक HTML फ़ील्ड के लिए:

समारोह WebFormFieldValue ( स्थिरांक दस्तावेज़: IHTMLDocument2; स्थिरांक formNumber: पूर्णांक; स्थिरांक क्षेत्र का नाम: तार): तार; वर फ़ॉर्म: IHTMLFormElement; फ़ील्ड: IHTMLElement; शुरू फ़ॉर्म: = WebFormGet (formNumber, WebBrowser1.Document) जैसा IHTMLDocument2); फ़ील्ड: = फ़ॉर्म। IHTMLElement के रूप में आइटम (फ़ील्डनाम, ''); अगर क्षेत्र = फिर नील बाहर जाएं; अगर field.tagName = 'INPUT' फिर परिणाम: = (क्षेत्र जैसा IHTMLInputElement) .Value; अगर field.tagName = 'चयन' फिर परिणाम: = (क्षेत्र जैसा IHTMLSelectElement) .Value; अगर field.tagName = 'TEXTAREA' फिर परिणाम: = (क्षेत्र जैसा IHTMLTextAreaElement) .Value; समाप्त;

"URL" नामक इनपुट फ़ील्ड का मान प्राप्त करने के लिए उपयोग का एक उदाहरण:

स्थिरांक FIELDNAME = 'url'; वर doc: IHTMLDocument2; fieldValue: तार; शुरू doc: = WebBrowser1.Document जैसा IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines। जोड़ें ('फ़ील्ड: "URL", मान:' + fieldValue);समाप्त;

यदि आप नहीं कर पाएंगे तो पूरे विचार का कोई मूल्य नहीं होगा वेब फ़ॉर्म तत्वों को भरें:

प्रक्रिया WebFormSetFieldValue (स्थिरांक दस्तावेज़: IHTMLDocument2; स्थिरांक formNumber: पूर्णांक; स्थिरांक फ़ील्डनाम, नया संस्करण: तार); वर फ़ॉर्म: IHTMLFormElement; फ़ील्ड: IHTMLElement; शुरू फ़ॉर्म: = WebFormGet (formNumber, WebBrowser1.Document) जैसा IHTMLDocument2); फ़ील्ड: = फ़ॉर्म। आइटम (फ़ील्डनाम, '') जैसा IHTMLElement; अगर क्षेत्र = फिर नील बाहर जाएं; अगर field.tagName = 'INPUT' फिर (खेत जैसा IHTMLInputElement) .value: = newValue; अगर field.tagName = 'चयन' फिर (खेत जैसा IHTMLSelectElement): = newValue; अगर field.tagName = 'TEXTAREA' फिर (खेत जैसा IHTMLTextAreaElement): = newValue; समाप्त;

एक वेब फॉर्म जमा करें

अंत में, जब सभी क्षेत्रों में हेरफेर किया जाता है, तो आप शायद डेल्फी कोड से वेब फॉर्म सबमिट करना चाहेंगे। ऐसे:

प्रक्रिया WebFormSubmit ( स्थिरांक दस्तावेज़: IHTMLDocument2; स्थिरांक formNumber: पूर्णांक); वर फ़ॉर्म: IHTMLFormElement; फ़ील्ड: IHTMLElement; शुरू फ़ॉर्म: = WebFormGet (formNumber, WebBrowser1.Document) जैसा IHTMLDocument2); form.submit; समाप्त;

सभी वेब फॉर्म "ओपन माइंडेड" नहीं हैं

कुछ वेब प्रपत्र वेब पेजों को प्रोग्रामेटिक रूप से हेरफेर करने से रोकने के लिए कैप्चा इमेज होस्ट कर सकते हैं।

जब आप "सबमिट बटन पर क्लिक करते हैं तो कुछ वेब फ़ॉर्म सबमिट नहीं किए जा सकते हैं।" कुछ वेब प्रपत्र जावास्क्रिप्ट को निष्पादित करते हैं या कुछ अन्य प्रक्रिया वेब फॉर्म के "ऑनसुबमिट" घटना द्वारा नियंत्रित की जाती हैं।

किसी भी घटना में, वेब पेजों को प्रोग्रामेटिक रूप से नियंत्रित किया जा सकता है, एकमात्र सवाल "आप कितनी दूर जाने के लिए तैयार हैं?"

instagram story viewer