Delphi - Az Internet Explorer proxy szerverének beállítása és tiltása programból

forráskód letöltése
A most bemutatásra kerülő cikkben azt mutatjuk be, miként tudjuk az Internet Explorer proxy szerverét engedélyezni, különböző beállításokat végezni rajta, illetve letiltani azt Delphi programból. Mindezt úgy tesszük meg, hogy a böngészőt még csak meg sem kell nyitni hozzá.
Ügyeljünk arra, hogy a példaprogramban nem valós proxy adatokat adtunk meg, így amennyiben azokat engedélyezzük, előfordulhat, hogy az Internet nem fog működni. Ekkor le kell tiltani a proxy használatát. Amennyiben eleve használunk proxy-t, számolnunk kell azzal, hogy az eredeti beállításaink felülíródnak a példaprogramban beállított értékekkel.
A feladat megoldásához a Registry-t és az InternetSetOption függvényt használjuk fel, mely utóbbit a WinInet unit-ban találhatjuk. Ennek segítségével az Internetes kapcsolat különböző beállításait végezhetjük el. Nézzük meg a felépítését.
InternetSetOption
BOOL InternetSetOption(
HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength );
Paraméterek
HINTERNET hInternet
Annak az eszköznek a handle-je, melyen a beállításokat el szeretnénk végezni.
DWORD dwOption
Egy, az Option Flags struktúra által meghatározott opció neve. Esetünkben ez az INTERNET_OPTION_SETTINGS_CHANGED lesz, mivel az Internetes beállítások megváltozását szeretnénk figyelni.
LPVOID lpBuffer
Egy buffer-re mutató pointer, mely tartalmazza a változtatásokat.
DWORD dwBufferLength
Az lpBuffer által meghatározott buffer mérete.
)
Visszatérési érték
Sikeres futtatás esetén igaz értékkel tér vissza, ellenkező esetben hamis lesz az eredmény.
A példaprogramunkban két részre bontottuk a feladatot. Készítünk két eljárást, ahol az egyik a proxy szerver engedélyezését és beállítását, míg a másik a tiltását fogja elvégezni. Lássuk őket:
Procedure EnableProxy(const Server: String);
var
  Reg : TRegistry;
begin
A proxy engedélyezését a Registry-ben fogjuk elvégezni. Megkeressük az Internetes beállításokat, majd azon belül a ProxyServer kulcsot. Ennek értékül átadjuk a Server nevű változóban paraméterként kapott sztringet. Ebben megfelelő szintaktika szerint felépítettük a proxy-beállításokat, melyek akkor lépnek érvénybe, ha a ProxyEnable kulcsot igazra állítjuk.
  Reg := TRegistry.Create;
  Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings',False);
  Reg.WriteString('ProxyServer',Server);
  Reg.WriteBool('ProxyEnable',True);
  Reg.CloseKey;
  Reg.Free;
Ha az Internetes beállítások sikeresen megtörténtek, az InternetSetOption függvény érzékeli azt, és igaz értékkel tér vissza.
  if InternetSetOption(NIL, INTERNET_OPTION_SETTINGS_CHANGED, NIL, 0) then
    ShowMessage('A proxy szerver engedélyezése/beállítása befejeződött!')
  else
    ShowMessage('A proxy szerver engedélyezése/beállítása nem sikerült!');
end;
Mivel a művelet a Registry segítségével zajlott, nincs szükség arra, hogy az Internet Explorer-t megnyissuk, csupán akkor, ha a változtatásokat meg szeretnénk nézni. Ezt megtehetjük az Eszközök -> Internetbeállítások -> Kapcsolatok -> Hálózati beállítások menüpontjában. Itt a részleteknél leellenőrizhetjük a beállításokat, amennyiben a proxy szervert engedélyeztük.

A proxy szerver tiltása hasonlóképpen történik, azzal a különbséggel, hogy a ProxyEnable kulcsot hamisra kell állítani.
  Reg.WriteBool('ProxyEnable',False);
Az EnableProxy függvénynek nem kell az összes beállítást átadnunk, tetszés szerint kihagyható bármelyik. Így a következő formákban is meghívhatjuk azt.
  EnableProxy('proxyserver:8080');
  EnableProxy('ftp=ftpproxyserver:2121;gopher=goproxyserver:3333;http=httpproxyserver:8080;https=httpsproxyserver:8080');