Delphi - Web oldalak megnyitása

forráskód letöltése
Ebben a példában egymás után megnyitunk több web oldalt. A megnyitást kétféle módon végezzük el, az Internet Explorer segítségével, és nélküle. Mindkét esetben az oldalak címét egy ListBox-ban helyezzük el, majd sorban, egymás után megnyitjuk őket. Amikor az Explorer-t használjuk, akkor csak abban az esetben nyitjuk meg az új oldalt, ha az előzőt már bezártuk.
Ha a ListBox-ban felsorolt URL címeket az Internet Explorer segítségével akarjuk megnyitni, akkor ugyanúgy, mint az Office programoknál, a kapcsolat felépítéséhez OleVariant típusú változókat kell használnunk.
Az OleVariant típus használatához, a uses kulcsszó után fel kell sorolnunk a COMOBJ unit nevét is.
A ListBox elemein egy for ciklus segítségével könnyedén végigmehetünk.
Először meg kell nyitnunk az Explorer-t.
IE:=CreateOleObject('InternetExplorer.Application');
IE.Visible:=True;
Az Explorer-be az aktuális oldalt a Navigate2 metódus segítségével töltjük be.
IE.Navigate2(ListBox1.Items[i]);
A következő címet csak akkor töltjük be, ha a felhasználó már bezárta az előző ablakot. Ehhez felhasználhatjuk az Explorer Visible property-jét. Ha a Visible értéke hamisra vált, akkor a felhasználó bezárta az általunk megnyitott Explorer ablakot. Mindaddig míg ez meg nem történik, várakoznunk kell egy ciklus segítségével.
while IE.Visible do
  Application.ProcessMessages;
A ciklust egy try – except blokkban kell elhelyeznünk. Ha a felhasználó nem várja meg az oldal betöltődését, és közben bezárja az Explorer-t, akkor programunknak ezen a pontján hibaüzenetbe ütközhetünk.
Lehetőségünk van arra is, hogy egy web oldalt API függvények segítségével nyissunk meg. Ehhez szükség van a wininet unit használatára.
Az InternetOpen függvény használatával megnyithatunk egy új kapcsolatot.
hSession:=InternetOpen('Microsoft Internet Explorer',INTERNET_OPEN_TYPE_PRECONFIG,Nil,Nil,0);
Egy oldal letöltését az InternetOpenUrl függvénnyel kérhetjük.
hURL:=InternetOpenUrl(hSession,PChar(List[i]),Nil,0,0,0);
A példaprogramban csak jelezzük a letöltést. A letöltött lapot sokféle módon feldolgozhatjuk.
Az URL hozzáférést az InternetCloseHandle függvénnyel zárhatjuk le.
InternetCloseHandle(hURL);
Az Internet kapcsolatot az alábbi függvénnyel szüntethetjük meg.
InternetCloseHandle(hSession);
InternetOpen
function InternetOpen(
lpszAgent: PChar;
dwAccessType: DWORD;
lpszProxy,
lpszProxyBypass: PChar;
dwFlags: DWORD
): HINTERNET;
Az Internetet használó függvények inicializálására szolgál. Létrehoz egy új kapcsolat szálat.
Paraméterek
lpszAgent: PChar
A kapcsolatot létrehozó alkalmazás neve.
dwAccessType: DWORD
A hozzáférés típusa. A következő konstansokat használhatjuk: INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PRECONFIG, INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, INTERNET_OPEN_TYPE_PROXY.
lpszProxy
Ha a kapcsolathoz proxy szervert akarunk használni, akkor ebben a paraméterben adhatjuk meg annak nevét. Ha nem használunk proxy szervert, akkor Nil értéket kell megadnunk.
lpszProxyBypass: PChar
Ebben a paraméterben IP címeket adhatunk meg. Ha a dwAccessType paraméterben INTERNET_OPEN_TYPE_PROXY értéket adunk meg, akkor itt olyan címeket sorolhatunk fel, amelyeket le akarunk tiltani. Ha nem használunk proxy szervert, akkor értékét állítsuk Nil-re.
dwFlags: DWORD
A kapcsolat típusának befolyásolására szolgál. A következő konstansok kombinációját használhatjuk: INTERNET_FLAG_ASYNC, INTERNET_FLAG_FROM_CACHE, INTERNET_FLAG_OFFLINE.
Visszatérési érték
Ha a kapcsolat létrehozása sikeresen megtörtént, akkor a visszatérési érték a kapcsolat azonosítója, ellenkező esetben Nil.
InternetOpenUrl
function InternetOpenUrl(
hInet: HINTERNET;
lpszUrl: PChar;
lpszHeaders: PChar;
dwHeadersLength: DWORD;
dwFlags: DWORD;
dwContext: DWORD
): HINTERNET;
Egy megadott web oldal letöltésére szolgál.
Paraméterek
hInet: HINTERNET
Az Internet kapcsolat azonosítója.
lpszUrl: PChar
A letöltendő cím, szabályos URL címzéssel.
lpszHeaders: PChar
A http szervernek küldendő fejléc. Ha nem akarunk ilyet megadni, akkor használhatjuk a Nil paramétert.
dwHeadersLength: DWORD
Az előző paraméterben megadott fejléc hossza, karakterekben számolva.
dwFlags: DWORD
A végrehajtandó műveletet azonosítja. Az itt használható konstansok megtalálhatóak a wininet unitban.
dwContext: DWORD
Itt 0-t kell megadnunk.
Visszatérési érték
Ha a lap letöltése sikeres volt, akkor egy azonosítóval tér vissza, ellenkező esetben Nil értékkel.