Programsal olarak sorgulayabilir ve altında ınternet Explorer proxy ayarlarını nasıl ayarlanacağı

Makale çevirileri Makale çevirileri
Makale numarası: 226473 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Makaleyi programsal olarak sorgulamak ve ınternet Explorer proxy ayarı bilgilerini ayarlamak için adımlar gerekli açıklar.

Internet Explorer 4.x ve önceki sürümlerinde, ınternetsetoption ve InternetQueryOption Apı INTERNET_OPTION_PROXY bayrağıyla kullanılır. Bu seçenek ınternet Explorer 5'ın altında çalışmaya devam eder, ancak birden çok bağlantı seçenekleri yeni sürümde ortaya. Bu verilen, INTERNET_OPTION_PROXY bayrağının ayarını "statik" proxy sunucusu döndürecektir. Proxy sunucu bilgileri altında <a2>HKEY_CURRENT_USER</a2> kovanı, ınternet Explorer 4.0 altında olduğu çok şekilde saklanan statik seçenektir

Not INTERNET_OPTION_PROXY ayarları kalıcı olarak değiştirmez. Yalnızca NULL bir tanıtıcı kullanıldığında, bu işlem için geçerli yapar. Ancak, bir geçerli oturumu tanıtıcısını (tanıtıcı InternetOpen() API kullanarak elde edilen oturumda) gönderilirse her oturum için ayrı ayrı ayarlarını da değiştirebilirsiniz.

Internet Explorer 5'altında (örneğin, çevirmeli ağ bağlantısı) bir farklı bağlantı seçeneği varsayılan olarak belirttiğiniz, olası bayrak, INTERNET_OPTION_PROXY kullanarak elde proxy bilgisi, ınternet Explorer geçerli oturum için yanlış olabilir. Bu nedenle, ınternet Explorer 5 altında INTERNET_OPTION_PER_CONNECTION_OPTION kullanılması önerilir.

Not INTERNET_OPTION_PER_CONNECTION_OPTION BOş tanıtıcı kullanıldığında, bir sisteme özel olarak değiştirilecek ayarları neden olur. Genel proxy ayarları doğru olarak yansıtması için <a0></a0>, INTERNET_OPTION_REFRESH seçeneği bayrağıyla <a2>ınternetsetoption</a2> işlevini çağırmalısınız. Veya, geçerli oturum tanıtıcı her oturum için ayrı ayrı ayarlar için kullanılabilir.

Not Internet Explorer 5 ve sonraki sürümlerinde genel makine ayarlarını etkilemeden whgke işlemi için proxy bilgisi değiştirmek yine de olanaklıdır. Bunu yapmak için ınternetsetoption işlevini INTERNET_OPTION_PER_CONNECTION_OPTION seçeneğini kullanarak InternetOpen işlevi tarafından döndürülen tanıtıcıyı çağırmalısınız. Aşağıdaki kod örneği, hInternet tanıtıcı kapatıldı ve gerçek bir istek için kullanılan olsa bile proxy için tüm işlem değiştirir.
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

Daha fazla bilgi

Internet Explorer 4.x altında proxy bilgileri sorgulamak için tipik bir düzenek, şöyle bir şey görünecektir:
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());
				
ınternet Explorer 5'altında önerilen yöntem aşağıda benzer bir kod kullanmaktır:
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);
				
INTERNET_PER_CONN_OPTION_LIST yapısında pszConnection dizesi ayarlayarak, bağlantının yukarıdaki kodu belirtir. Bu dize NULL olarak ayarlayarak, yapılandırma bilgileri varsayılan (veya yerel Ağ için) türetileceğini ayarlar.

Ilk seçeneği ([0] INTERNET_PER_CONN_AUTOCONFIG_URL seçenek) proxy sunucusunun otomatik yapılandırma için belirtilen URL döndürecektir. Ikinci seçenek ([1] INTERNET_PER_CONN_AUTODISCOVERY_FLAG seçenek) otomatik algıla seçeneği etkin veya değil belirtilen bağlantı için gerekli olduğunu algılar. Üçüncü seçenek, hangi bayrak birleşimi ayarladınız bu belirli bir bağlantı için belirler. Son iki seçenek, alınan whe INTERNET_OPTION_PROXY, ınternet Explorer 4.x'te kullanılan gibi aynı bilgilere karşılık gelir.

Ayrıca bkz: gibi dize değerleri döndürmek seçenekleri GlobalFree() kullanarak serbest. Bunun nedeni, dize arabellekleri, WININET kitaplığı tarafından ayrılır ve için Programcı kullandıktan sonra arabellek kadar boş alan olmasıdır.

Farklı bir bağlantı için bilgi edinmek için <a0></a0>, yalnızca Dial-up ayarını girişe işaret edecek biçimde List.pszConnection dize yaptığınız değişiklik, ilgileniyor.

Benzer şekilde, proxy bilgilerini ayarlamak için <a0></a0>, aynı tekniği kullanabilirsiniz ancak ınternetsetoption() ile bunun yerine, örneğin:
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());

				
Yukarıdaki örnek varsayılan (veya yerel Ağ) tek bir yeniden değiştirecek ayarları (List.pszConnection NULL ==). Örnek, bağlantı noktası 8080'adresindeki "http://myproxy" için "statik" proxy sunucusu bilgilerini değiştirilir. Benzer şekilde, aynı zamanda otomatik yapılandırma URL'SI değiştirebilirsiniz:
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());
				
için HTTP proxy sunucusu kullanın ve diğer iletişim kuralları için doğrudan gitmek için ınternet Explorer'ı yapılandırmak için kod izlemek için kullanın.

Not INTERNET_PER_CONN_PROXY_SERVER için geçirilen arabellek (Bu kod yalnızca HTTP ve diğer tüm iletişim kuralları kullanımı doğrudan bağlantı ayarlar) her iletişim kuralı ayarları vardır.

Not INTERNET_PER_CONN_FLAGS her iki proxy türü için (doğrudan ve proxy üzerinden) seçenek listesi dizinin bir öğesinde aşağıdaki kodu gibi ayarlar.

Not Istediğiniz VEYA bu bayraklar tek bir yerde. Bu bayraklar, başka bir liste öğesi koyarsanız, bunlar doğru görüntüler (ınternet Explorer OPTIONS), ancak yalnızca (ayarlanan ilk) bayrakların bir çalışır.
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; 

}
				
(Yeniden varsayılan veya yerel Ağ ayar) yukarıdaki örnekte, otomatik proxy yapılandırması belirleyin ve otomatik proxy yapılandırması'nı etkinleştirmek için seçenek bayrağını ayarlamak gerekir.

Referanslar

MSDN Winınet APı'SINI belgeleri, Nisan 1999

Özellikler

Makale numarası: 226473 - Last Review: 10 Nisan 2007 Salı - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 5.0
  • Microsoft Windows Internet Services (WinInet)
Anahtar Kelimeler: 
kbmt kbhowto KB226473 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:226473
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

Geri Bildirim Ver

 

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