Ako programovo dotaz a nastaviť nastavenia servera proxy v programe Internet Explorer

Preklady článku Preklady článku
ID článku: 226473 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

SUHRN

Článok vysvetľuje kroky potrebné na programovo dotaz a nastavenie proxy nastavenia informácie pre program Internet Explorer.

V programe Internet Explorer 4.x a staršie, InternetSetOption a InternetQueryOption API sa používajú s INTERNET_OPTION_PROXY vlajkou. Zatiaľ čo táto možnosť bude aj naďalej pracovať v programe Internet Explorer 5, zaviedli sa viaceré možnosti pripojenia v novej verzii. Vzhľadom k tomu, INTERNET_OPTION_PROXY vlajkou sa vráti iba na "statické" proxy server nastavenie. Statické možnosť je proxy server informácie uložené pod podregister HKEY_CURRENT_USER oveľa rovnakým spôsobom bol pod Internet Explorer 4.0

Poznámka: INTERNET_OPTION_PROXY natrvalo nemení nastavenia. Je to za súčasného procesu iba vtedy, ak sa používa popisovač NULL. Však to môžete tiež zmeniť nastavenie na základe za reláciu ak platnú reláciu rukoväť je odoslaná v (relácia kľučky sú získané pomocou InternetOpen() API).

Ak v programe Internet Explorer 5 možnosť iné pripojenie (napríklad telefonické pripojenie) určené ako predvolené, možná, že proxy informácie môžete získať pomocou INTERNET_OPTION_PROXY vlajky môže byť nesprávne pre aktuálnu reláciu programu Internet Explorer. Z tohto dôvodu, podľa programu Internet Explorer 5, odporúča sa, že INTERNET_OPTION_PER_CONNECTION_OPTION namiesto toho použiť.

Poznámka: INTERNET_OPTION_PER_CONNECTION_OPTION spôsobuje nastavenia potrebné zmeniť na základe systém-široký keď používa popisovač NULL. Správne odrážali globálnym proxy nastavenia, musíte zavolať InternetSetOption Funkcia INTERNET_OPTION_REFRESH možnosť príznakom. Alebo nastaviť nastavenie na základe za reláciu, možno použiť popisovač platnú reláciu.

Poznámka: Je stále možné zmeniť informácie o serveri proxy pre proces whgke bez ovplyvnenia globálnej stroj nastavenia v programe Internet Explorer 5 a novších verziách. Chcete urobiť, musíte zavolať InternetSetOption Funkcia na rukoväť, ktorý vráti InternetOpen Funkcia pomocou možnosti INTERNET_OPTION_PER_CONNECTION_OPTION. Nasledujúci kód príklad zmení proxy pre celý proces hoci hInternet rukoväť je uzavretá a nie je používaný pre skutočné žiadosť.
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

DALSIE INFORMACIE

V programe Internet Explorer 4.x, typické mechanizmus pre dotazy proxy informácie by vyzerať nejako takto:
unsigned long        nSize = 4096;
char                 szBuf[4096] = { 0 };
INTERNET_PROXY_INFO* pInfo = (INTERNET_PROXY_INFO*)szBuf;

if(!InternetQueryOption(NULL, INTERNET_OPTION_PROXY, pInfo, &nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
				
V programe Internet Explorer 5 odporúčaný spôsob je použiť podobný kód do nižšie:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[5];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL;
Option[1].dwOption = INTERNET_PER_CONN_AUTODISCOVERY_FLAGS;
Option[2].dwOption = INTERNET_PER_CONN_FLAGS;
Option[3].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
Option[4].dwOption = INTERNET_PER_CONN_PROXY_SERVER;

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 5;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetQueryOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, &nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
   if(Option[0].Value.pszValue != NULL)
   printf("%s\n", Option[0].Value.pszValue);

if((Option[2].Value.dwValue & PROXY_TYPE_AUTO_PROXY_URL) == PROXY_TYPE_AUTO_PROXY_URL)
  printf("PROXY_TYPE_AUTO_PROXY_URL\n");

if((Option[2].Value.dwValue & PROXY_TYPE_AUTO_DETECT) == PROXY_TYPE_AUTO_DETECT)
   printf("PROXY_TYPE_AUTO_DETECT\n");

INTERNET_VERSION_INFO      Version;
nSize = sizeof(INTERNET_VERSION_INFO);

InternetQueryOption(NULL, INTERNET_OPTION_VERSION, &Version, &nSize);

if(Option[0].Value.pszValue != NULL)
   GlobalFree(Option[0].Value.pszValue);

if(Option[3].Value.pszValue != NULL)
   GlobalFree(Option[3].Value.pszValue);

if(Option[4].Value.pszValue != NULL)
   GlobalFree(Option[4].Value.pszValue);
				
Vyššie uvedený kód určuje pripojenie pomocou nastavenia pszConnection reťazec v štruktúre INTERNET_PER_CONN_OPTION_LIST. Nastavením tento reťazec na hodnotu NULL, sa načíta informácie o konfigurácii pre predvolené (alebo LAN) nastavenia.

Prvá možnosť (voľba [0] INTERNET_PER_CONN_AUTOCONFIG_URL) vráti URL určenú na automatickú konfiguráciu servera proxy. Druhá možnosť (voľba [1] INTERNET_PER_CONN_AUTODISCOVERY_FLAG) bude zistiť, či automatické zisťovanie je zapnutá alebo nie pre pripojenie špecifikované. Tretia možnosť určí, aké kombinácia príznakov boli stanovené pre toto konkrétne pripojenie. Posledné dve možnosti zodpovedajú rovnaké informácie ako načítanú whe INTERNET_OPTION_PROXY bola použitá v programe Internet Explorer 4.x.

Ako vidíte, možnosti, ktoré môže potenciálne vrátiť reťazec hodnoty vyslobodenia pomocou GlobalFree(). To je, pretože reťazec medzipamätí sú pridelené pre vás WININET knižnice, a je to na programátor uvoľniť medzipamäte po použití ho.

Získať informácie pre rôznych pripojenie, jednoducho zmeniť List.pszConnection reťazec ukážte na položku Nastavenie telefonického ste ste záujem ju.

Podobne, ak chcete nastaviť informácie o serveri proxy, použite rovnakou technikou, ale s InternetSetOption() namiesto, napríklad:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[1];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
Option[0].Value.pszValue = "http://myproxy:8080";

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 1;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());

				
Opäť vyššie vzorka bude meniť predvolené (alebo LAN) nastavenia (List.pszConnection == NULL). Vo vzorke sa informácie o serveri proxy "statické" sa zmení na "http://myproxy" na portu 8080. Podobne môžete zmeniť URL konfigurácie auto:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[2];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL;
Option[0].Value.pszValue = "http://myserver/get_proxy_info.dll";
Option[1].dwOption = INTERNET_PER_CONN_FLAGS;
Option[1].Value.dwValue = PROXY_TYPE_AUTO_PROXY_URL;

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 2;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
				
Keď konfigurujete Internet Explorer použiť proxy server pre HTTP a ísť priamo na iné protokoly, použite kód sledovať.

Poznámka: Medzipamäť, ktorá prechádza do INTERNET_PER_CONN_PROXY_SERVER obsahuje nastavenia pre každý protokol (tento zákonník uvádza iba HTTP a všetky ostatné protokoly použitie priame pripojenie).

Poznámka: INTERNET_PER_CONN_FLAGS nastaví hodnotu pre obidva typy Proxy (priame a cez server proxy) v jeden prvok poľa zoznamu možnosť, ako je uvedené nižšie v kóde.

Poznámka: Budete musieť alebo tieto príznaky v jednom mieste. Ak umiestnite tieto príznaky iný zoznam prvok, sa zobrazí správne (Internet Explorer OPTIONS), ale len jednu zo zástavok (prvý, ktorý je nastavený) bude fungovať.
int main(int argc, char * argv[]) 
{ 
char buff[256] = "http=http://<ProxyServerName>:80"; 
// To include server for FTP, HTTPS, and so on, use the string
// (ftp=http://<ProxyServerName>:80; https=https://<ProxyServerName>:80) 
INTERNET_PER_CONN_OPTION_LIST    List; 
INTERNET_PER_CONN_OPTION         Option[3]; 
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); 

Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; 
Option[0].Value.pszValue = buff; 

Option[1].dwOption = INTERNET_PER_CONN_FLAGS; 
Option[1].Value.dwValue = PROXY_TYPE_PROXY; 
Option[1].Value.dwValue |= PROXY_TYPE_DIRECT; 
// This option sets all the possible connection types for the client. 
// This case specifies that the proxy can be used or direct connection is possible.

Option[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS; 
Option[2].Value.pszValue = "<local>"; 

 

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); 
List.pszConnection = NULL; 
List.dwOptionCount = 3; 
List.dwOptionError = 0; 
List.pOptions = Option; 

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize)) 
printf("InternetSetOption failed! (%d)\n", GetLastError()); 

InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL,NULL); 
//The connection settings for other instances of Internet Explorer. 

return 0; 

}
				
Vo vzorke vyššie (opäť Predvolená alebo nastavenie siete LAN), budete musieť zadať URL konfigurácie servera proxy auto a nastaviť možnosť príznak chcete zapnúť automatickú konfiguráciu servera proxy.

ODKAZY

MSDN WinInet API dokumentáciu, apríl 1999

Vlastnosti

ID článku: 226473 - Posledná kontrola: 21. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Internet Explorer 4.01 Service Pack 1
Kľúčové slová: 
kbhowto kbmt KB226473 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:226473
Upozornenie na neaktuálny obsah článku databázy KB
Tento článok obsahuje informácie o produktoch, pre ktoré spoločnosť Microsoft už neposkytuje technickú podporu. Z tohto dôvodu je tento článok publikovaný ako nezmenený a už nebude aktualizovaný.

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com