een html pagina openen met visual basic.

Plaats reactie
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

ik ben ietsje aan het maken. niet heel moeilijk maar met mijn beperkte kennis kom ik er weer niet uit.

ik wil een tekst "open de pagina" en als ik daarop klik moet een html pagina geladen worden. (het word later wss op een cd'tje gebrand)

kan je dan een form laden met daarin een html pagina? en hoe?
of kan je enkel een internet browser laten openen met daarin de html pagina?

de html-pagina staat nu op de harde schijf, maar word later mee op het cd'tje gebrand.
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
Gebruikersavatar
The_Borg
Elite Poster
Elite Poster
Berichten: 1759
Lid geworden op: 22 dec 2003, 20:25

Herm, vba, VB5, VB6, VB.net 2002, VB.net 2003? :)
"We are the Borg. Lower your shields and surrender your ships. We will add your biological and technological distinctiveness to our own. Your culture will adapt to service us. Resistance is futile."
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

vb6
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
Lukse
Premium Member
Premium Member
Berichten: 662
Lid geworden op: 28 okt 2003, 20:51

Er bestaat een webbrowser control die ge gewoon op uw form kunt zetten.
Ma vraag mij nie waar die precies zit, is iets te lang geleden :wink:
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

Foxxy girl,

Dit zal waarschijnlijk een beetje Chinees zijn, maar via een API functie kan je dit in 2 regeltjes code oplossen.
API functies zijn functies die in standaard DLL's van Windows zitten.
Ik heb de code voor jou uitgeschreven zodat http://www.userbase.be wordt geopend met de default browser (hoeft dus niet IE te zijn).

Code: Selecteer alles

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
    ShellExecute Me.hwnd, "open", "http://www.userbase.be", vbNullString, vbNullString, 1
End Sub
Gebruikersavatar
008
Member
Member
Berichten: 68
Lid geworden op: 26 jun 2003, 08:03
Locatie: Ophasselt
Contacteer:

Het voor- of nadeel (net hoe ge het bekijkt) van de API-calls is dat de standaard ingestelde browser op een gebruikers machine wordt geopend. Is die er niet dan wordt er niets getoond (zal tegenwoordig wel nie snel gebeuren). Met de webbrowser control van VB hou je alles binnen je eigen programma wat voordelen kan hebben.
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

Indien een extensie niet gekend is, kan je ook vrij eenvoudig de 'Open With..."-dialog openen zodat de gebruiker zelf een programma kan kiezen om het bestand te openen.

VB6 is gericht op de Windows-markt, en gezien Internet Explorer standaard in Windows zit, lijkt me dit in dit geval eigenlijk totaal geen probleem.

Nadeel van die webbrowser control is dan weer dat je alle navigatie-knoppen nog zelf moet voorzien (address-bar, next, previous, ...).
Hangt allemaal een beetje af van wat de gevraagde functionaliteiten zijn, beide hebben ze hun voor- en nadelen.


Foxxy,

Wens je gebruik te maken van deze control, ga dan naar Project > Components.
Selecteer in dit venster 'Microsoft Internet Controls' en klik op OK.
Nu heb je de webbrowser control in je toolbox staan. Zet deze op je form in de gewenste grootte en voeg volgende code toe:

Code: Selecteer alles

Private Sub Form_Load()
    WebBrowser1.Navigate2 "http://www.userbase.be"
End Sub


Dan kan je zelf kiezen welk van de twee je wil gebruiken.
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

hey bedankt, dat is wat ik zocht.

ik heb nog wel een vraagje.
ik heb al gezegt dat ik het op een cd'tje ga branden.
moet ik dan om de html pagina van de cd te openen typen ../fotos/pagina.html ?

want als ik het op een cd brand en ik typ f:/fotos/pagina.html of g:/fotos/pagina.html.
dan weet ik niet of het lukt om dat niet bij iedereen het schijfstation de zelfde naam heeft.
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

Op zich hoeft dit geen probleem te zijn. Op het moment dat het programma draait, kan je gewoon via App.Path vragen in welke directory het staat.

Gezien ik niet weet welke van de 2 systemen je hebt gekozen, heb ik in beide samengezet in onderstaand voorbeeld:

Code: Selecteer alles

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Form_Load()
    Dim strDrive As String
    strDrive = Left(App.Path, 3)
    WebBrowser1.Navigate2 strDrive & "Fotos/Pagina.html"
    ShellExecute Me.hwnd, "open", "Pagina.html", vbNullString, strDrive & "Fotos", 1
End Sub
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

ik heb de tweede gebruikt. voor mij leek dat het gemakkelijkste.

bedankt voor de hulp en als het niet lukt dan mogen jullie nog wat helpen.

thanks :kiss:
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

hey,
ben het aan het uittesten, maar er zit toch nog een foutje in.
als ik deze code gebruik.

Code: Selecteer alles

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Form_Load()
    Dim strDrive As String
    strDrive = Left(App.Path, 3)
    WebBrowser1.Navigate2 strDrive & "Fotos/slideshow.htm"

End Sub



waaruit ik dus de regel

Code: Selecteer alles

    ShellExecute Me.hwnd, "open", "Pagina.html", vbNullString, strDrive & "Fotos", 1

heb gewist.
krijg ik steeds de foutmelding dat hij de pagina niet kan vinden.
welke gegevens moet ik veranderen.

de map waarin het project staat is ook de map waarin de map "fotos" staat, dus het zou allemaal moeten kloppen.
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
Lukse
Premium Member
Premium Member
Berichten: 662
Lid geworden op: 28 okt 2003, 20:51

foxxy girl schreef:WebBrowser1.Navigate2 strDrive & "Fotos/slideshow.htm"

Probeer eens: "Fotos\slideshow.htm"
tis maar een gedacht, mss werkt het ook nie
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

dat maakt geen verschil.
ik heb al wel gemerkt dat als ik

Code: Selecteer alles

strDrive = Left(App.Path, 3) 

verander in

Code: Selecteer alles

strDrive = Left(App.Path, 2) 

ik een foutmeliding krijg met de tekst "kan c:/fotos/slideshow.html niet vinden"
en als ik

Code: Selecteer alles

strDrive = Left(App.Path, 1) 

gebruik. dan krijg ik de form met de melding "getaway timeout"

dus ik denk dat het daar wel iets mee te maken heeft
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

Deze code was bedoeld om rechtstreeks onder de root van een schijf (bijvoorbeeld CD-rom) te draaien.

Als je dit wil testen vanop je C-schijf, dan moet je er voor zorgen dat de folder Fotos met het bestand Slideshow.html zich onder de root bevindt.
Dus C:\Fotos\Slideshow.html moet bestaan.
Dit omdat ik van de veronderstelling was uitgegaan dat de map Fotos onder de root van de CD ging staan (bijv: E:\Fotos).

Indien de folder Fotos een subfolder zal zijn van de folder van de applicatie zelf, kan je de code aanpassen als volgt:

Code: Selecteer alles

Private Sub Form_Load()
    Dim strDrive As String
    strDrive = App.Path
    If Right(strDrive, 1) <> "\" Then strDrive = strDrive & "\"
    WebBrowser1.Navigate2 strDrive & "Fotos\Pagina.html"
End Sub


Note: De slash stond inderdaad in de verkeerde richting in de vorige code, maar de web-control maakt hier, net als IE, geen probleem van.
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

bedankt, hij doet het weer.
ik dacht dat het zo gemaakt was dat hij de pagina zocht vanuit de map waarin het project zelf stond.
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

ik heb weer een vraagje, maar ik denk dat het deze keer niet mogelijk is.
het gaat verder over deze topic daarom dat ik het hier post.

ik heb enkele html-pagina's die in zo'n browser control geladen worden.
nu is mijn vraag of het mogelijk is om de grote van een html pagina (normaal gewoon het scherm op resolutie 1024*768 helemaal gevuld)
aan te passen zodat ze juist in de control past.

dit om er voor te zorgen dat je met een schermresolutie van 800*600 de pagina ook in één keer kan bekijken.

thank u
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

Als het een HTML-pagina is waar je zelf geen toegang tot de source hebt, dan zal het moeilijk gaan.
Is het een eigen pagina, dan zal je in de HTML-code moeten duiken zodat alles op de gewenste resolutie past.
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

khsw schreef:Als het een HTML-pagina is waar je zelf geen toegang tot de source hebt, dan zal het moeilijk gaan.
Is het een eigen pagina, dan zal je in de HTML-code moeten duiken zodat alles op de gewenste resolutie past.


ik kan zelf aan de source, maar wat bedoel je met duiken?
het zen wel een stuk of vijftig pagina's.
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
khsw
Elite Poster
Elite Poster
Berichten: 1158
Lid geworden op: 03 maa 2004, 09:04
Uitgedeelde bedankjes: 18 keer
Bedankt: 16 keer

Gewoon, dat je de HTML-code zult moeten aanpassen. Desnoods via een editor zoals Frontpage of Dreamweaver om er voor te zorgen dat alles past op 800x600.

50 pagina's is wel veel. Is 800x600 echt een vereiste? 1024x768 begint langzamerhand een beetje de standaard te worden...
Gebruikersavatar
Snakehit
Elite Poster
Elite Poster
Berichten: 806
Lid geworden op: 05 mei 2004, 15:37
Locatie: Izegem, Belgie
Contacteer:

of te wel moet je een functie inbouwen die zelf de resolutie kan bepalen veel gemakkelijker gewoon uw sites op verschillende resoluties bouwen. Zodat alles kan gebruikt worden.?
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

Snakehit schreef:of te wel moet je een functie inbouwen die zelf de resolutie kan bepalen veel gemakkelijker gewoon uw sites op verschillende resoluties bouwen. Zodat alles kan gebruikt worden.?

kan je hier iets meer uitleg over geven? mss dat dit nog de beste oplossing is.
en khsw: het is wel vrij noodzakkelijk om dat ik het aan een groepje mensen moet geven, en ik weet dat die nog een resolutie hebben van 800*600. en ik denk de meeste laptob's (niet voor profesionele mensen dan) ook nog een scherm hebben waar je het beste 800*600 kan kiezen.
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
Sensei Zeon
Administrator
Administrator
Berichten: 4143
Lid geworden op: 15 sep 2002, 09:08
Locatie: Belgium, Haacht
Contacteer:

de laptops van tegenwoordig hebben minimum 1024*xxx de meesten zelfse 1240*xxx
Your Sensei sends his greetz, SeNsEi Ze0n

Afbeelding
Gebruikersavatar
foxxy girl
Pro Member
Pro Member
Berichten: 322
Lid geworden op: 05 jun 2004, 20:59
Locatie: geel

SeNsEi Ze0n schreef:de laptops van tegenwoordig hebben minimum 1024*xxx de meesten zelfse 1240*xxx


ja, dat kan wel zijn. weet ik zelf eigenlijk niet zo goed, maar maakt niet uit want ik wil ze toch op 800*600 zetten. toch bedankt
groetjes foxxy
:banana: :kiss: :kiss: :kiss: :banana:
Vieten
Premium Member
Premium Member
Berichten: 725
Lid geworden op: 26 apr 2004, 10:39
Locatie: Neerpelt
Uitgedeelde bedankjes: 16 keer
Bedankt: 6 keer
Contacteer:

Hallo, ik zou hier een vervolg aan willen breien...
In VB6 ben ik een menu aan't maken, dat via shellexecute ofwel een programma kan openen, ofwel de browser opent en naar een url gaat.

Dat werkt allemaal.
Maar... ik zou graag bij het aanklikken van een knop van dat menu eerst controleren of dat window nog open staat van een vorige keer, en als dat zo is dat 'oude' window de focus geven en naar voor halen ipv opnieuw openen.
Plaats reactie

Terug naar “Development”