Article View: be.comp.programming
Article #17199Re: visual basic, html & java
From: Rudi Breedenraedt
Date: Tue, 25 Jan 2000 00:00
Date: Tue, 25 Jan 2000 00:00
124 lines
5795 bytes
5795 bytes
Hallo Steven,
>ik wil voor mezelf een programmaatje maken (in visual basic) dat een
website
>aanstuurt :
>- het moet invulvelden in een website invullen met bepaalde waarden
>- het moet uit een keuzelijst iets kunnen selecteren
>- het moet op een verzenden-knop kunnen drukken (dit moet ook gebeuren, om
>door de "onclick"- actie van de button een javascript te lanceren)
Als ik het goed voor heb, heb je een venster van je webbrowser openstaan op
een formulier, en wil je nu een VB programma opstarten dat dat formulier
gaat invullen. Dus in plaats van zelf te typen in dat formulier wil je dat
automatisch laten gebeuren.
Het doet me sterk denken aan een van de kraaktechnieken van RedAttack; ik
hoop dat je er betere bedoelingen mee hebt ! :-)
Straks stel ik je drie mogelijke oplossingen voor, maar laat ik eerst het
belangrijkst te overkomen probleem omschrijven: je zit met een webpagina
waarin invulvelden zijn opgenomen, en die webpagina wordt in een webbrowser
getoond; vanuit een VB programma wil je nu toegang krijgen tot de inhoud van
de webpagina, je wil de inhoud aanpassen, �n het formulier kunnen versturen.
Maar hoe krijgt je VB programma toegang tot de inhoud van je webbrowser, en
hoe kan je VB programma die inhoud wijzigen ?
De drie mogelijke technieken die ik kan bedenken zijn de volgende:
1. Internet Explorer (als je voor die browser kiest, wat ik je aanraad, want
met NNAV werkt het niet...) is als OLE (lees tegenwoordig: COM) component te
gebruiken; daardoor kun je binnen in je VB programma een
Ga als volgt tewerk:
- Start VB op en maar een nieuwe applicatie aan
- In het Project menu, kies References, en kruis 'Microsoft Internet
Controls' aan
Als je het niet vindt, kijk of je een bestand SHDOCVW.OCA in je Systems
folder hebt, zo ja, kies dat
bestand met de Browse knop; zo nee, moet je iets installeren, misschien
upgraden naar IE5...
- Als je dat hebt gedaan, zie je in de toolbar (waar de icoontjes voor
tekstvelden, labels, cmdbuttons,...
staan) een wereldbolletje, dat is de WebBrowser control. Plaats die
control op het formulier.
De control heet standaard WebBrowser1.
- Plaats ook twee CommandButtons op je formulier (Command1 & Command2)
- Plaats in het formulier de volgende code:
Private Sub Command1_Click()
WebBrowser1.Navigate "http://www.upc.be/finschr2.htm"
End Sub
Private Sub Command2_Click()
WebBrowser1.Document.Forms(0).Naam.Value = "Steven Wuyts"
WebBrowser1.Document.Forms(0).Land.SelectedIndex = 1
'WebBrowser1.Document.Forms(0).Submit
End Sub
De regel in de Command1_Click event zorgt ervoor dat een bepaalde pagina in
de browser wordt getoond, terwijl de regels in Command2_Click daarvan het
formulier invullen (naam op 'Steven Wuyts' zetten en land op Nederland (zo
zie je dat het verandert)) en verzenden (dit laatste heb ik gecommentarieerd
opdat je me niet massa's testversies van het formulier zou toesturen,
probeer dit aub met je eigen formulieren uit).
2. De tweede mogelijkheid heeft performantievoordelen. Als je bv. probeert
een code te kraken, dan heeft het geen zin de gehele pagina met images en
alles in te laden. In plaats daarvan kunnen je meteen 'inbreken' in het HTTP
protocol door een GET of POST request door te sturen met als parameters de
veldnamen met hun gewenste waarden. Nadeel: een stuk moeilijker te
programmeren in VB tenzij je een Winsock component hebt die dat makkelijk
maakt... Ik ga hier niet dieper op in.
3. De derde mogelijkheid is ook leuk, zei het zonder VB. Maar je kunt VB er
desgewenst bij betrekken. De 3de mogelijkheid is een volledige web
oplossing. Maak volgende drie HTML bestanden aan:
index.htm :
<HTML>
<FRAMESET ROWS="80%,*">
<FRAME SRC="form.htm">
<FRAME SRC="fillin.htm">
</FRAMESET>
</HTML>
form.htm :
<HTML>
<BODY>
<FORM>
Naam : <INPUT TYPE=TEXT NAME="NAAM">
</FORM>
</BODY>
</HTML>
fillin.htm :
<html>
<body>
<input type=button value="Invullen" onClick="
top.frames[0].document.forms[0].NAAM.value = 'Steven Wuyts';">
</body>
</html>
form.htm bevat het formulier, fillin.htm bevat de code om het formulier in
te vullen.
In principe zou dit ook moeten werken met Netscape, maar ik merk wel dat met
IE een beveiliging aanstaat welke aan fillin.htm belet een formulier in te
vullen van een adere server. Dat maakt deze oplossing bijgevolg enkel
bruikbaar voor formulieren op je eigen server, of onder eigen beheer.
Wil je daar nu VB aan koppelen, dan kun je met VB een COM component opnemen
(een ActiveX control) die je dan kunt opnemen in de HTML pagina fillin.htm.
Die COM component kan dan gebruikt worden om te bepalen wat moet worden
ingevuld.
Zo, dat waren mijn mogelijke oplossingen. Ik hoop dat je er iets aan hebt !
Groetjes,
Rudi Breedenraedt
===============================================
United Programmers Club VZW
http://www.upc.be/
http://upc.webhostme.com/
upc@POBoxes.com
===============================================
Technical Details
Message-ID:
<86jfr6$qi8$1@rivage.news.be.easynet.net>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<NK5f4.6946$SC2.51243@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: fcea4,bb0165c3f771ece2 X-Google-Attributes: gidfcea4,public From: "Rudi Breedenraedt" <r.b@POBoxes.com> Subject: Re: visual basic, html & java Date: 2000/01/25 Message-ID: <86jfr6$qi8$1@rivage.news.be.easynet.net> X-Deja-AN: 577258499 References: <NK5f4.6946$SC2.51243@afrodite.telenet-ops.be> X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4 X-Complaints-To: abuse@easynet.be X-Trace: rivage.news.be.easynet.net 948781734 27208 212.100.172.37 (25 Jan 2000 06:28:54 GMT) Organization: [ posted via Easynet Belgium ] NNTP-Posting-Date: 25 Jan 2000 06:28:54 GMT Newsgroups: be.comp.programming