วิธีการสอบถามโดยทางโปรแกรม และการตั้งค่าการตั้งค่าพร็อกซีภายใต้ Internet Explorer

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 226473 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

สรุป

บทความนี้อธิบาย neccessary ขั้นตอนในการสอบถามโดยทางโปรแกรม และการตั้งค่าข้อมูลการตั้งค่าพร็อกซีสำหรับ Internet Explorer

ภาย ใต้ Internet Explorer 4.x และรุ่นก่อนหน้า นี้ InternetSetOption และ APIs InternetQueryOption จะใช้กับการตั้งค่าสถานะ INTERNET_OPTION_PROXY ในขณะที่ตัวเลือกนี้จะยังคงทำงานภายใต้ Internet Explorer 5 หลายตัวเลือกการเชื่อมต่อมีการแนะนำในรุ่นที่ใหม่ กำหนด สถานะ INTERNET_OPTION_PROXY จะกลับเฉพาะพร็อกซี "คง" เซิร์ฟเวอร์การตั้งค่า ตัวเลือกแบบคงที่อยู่พร็อกซีเซิร์ฟเวอร์ข้อมูลเก็บอยู่ภายใต้ไฮฟ์ HKEY_CURRENT_USER มากวิธีการเดียวกันภายใต้ Internet Explorer 4.0

หมายเหตุ:INTERNET_OPTION_PROXY ไม่มีเปลี่ยนการตั้งค่าอย่างถาวร ได้บ้างนี้สำหรับกระบวนการปัจจุบันเท่านั้นเมื่อมีใช้ค่าแฮนเดิลของค่า NULL อย่างไรก็ตาม มันยังสามารถเปลี่ยนการตั้งค่าในเซสชันต่อถ้ามีส่งค่าแฮนเดิลของเซสชันที่ถูกต้องใน (เซสชันที่จับจะได้รับการใช้ InternetOpen() API)

ถ้าภายใต้ 5 Explorer อินเทอร์เน็ต คุณระบุตัวเลือกการเชื่อมต่ออื่น (เช่นเรียกค่าการเชื่อมต่อ) เป็นค่าเริ่มต้น เป็นไปได้ว่า ข้อมูลของพร็อกซีที่คุณได้รับการใช้ INTERNET_OPTION_PROXY การตั้งค่าสถานะอาจจะไม่ถูกต้องสำหรับเซสชันปัจจุบันของ Internet Explorer ด้วยเหตุนี้ ภายใต้ 5 Explorer อินเทอร์เน็ต ขอแนะนำว่า INTERNET_OPTION_PER_CONNECTION_OPTION ที่จะใช้แทน

หมายเหตุ:INTERNET_OPTION_PER_CONNECTION_OPTION ทำให้การตั้งค่าที่ถูกเปลี่ยนแปลงในทั้งระบบเมื่อมีใช้ค่าแฮนเดิลของค่า NULL เพื่อสะท้อนถึงการตั้งค่าพร็อกซีสากล อย่างถูกต้องคุณต้องเรียกใช้การInternetSetOptionฟังก์ชันที่ มีค่าสถานะตัวเลือกของ INTERNET_OPTION_REFRESH หรือ การตั้งค่าการตั้งค่าในเซสชันต่อ สามารถใช้ค่าแฮนเดิลของเซสชันที่ถูกต้อง

หมายเหตุ:จะยังคงสามารถเปลี่ยนรายละเอียดของพร็อกซีสำหรับกระบวนการ whgke โดยไม่มีผลกระทบต่อการตั้งค่าเครื่องจักรทั้งหมดใน Internet Explorer 5 และรุ่นที่ใหม่กว่า เมื่อต้องการทำเช่นนี้ คุณต้องเรียกใช้การInternetSetOptionฟังก์ชันบนหมายเลขอ้างอิงที่มีการส่งคืนโดยInternetOpenฟังก์ชัน โดยการใช้ตัวเลือก INTERNET_OPTION_PER_CONNECTION_OPTION ตัวอย่างรหัสต่อไปนี้เปลี่ยนพร็อกซีสำหรับกระบวนการทั้งหมดแม้แต่การhInternetหมายเลขอ้างอิงถูกปิดแล้ว และไม่ได้ถูกใช้สำหรับการร้องขอที่แท้จริง
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

ข้อมูลเพิ่มเติม

ภายใต้ Internet Explorer 4.x กลไกที่โดยปกติการสอบถามข้อมูลพร็อกซีต้องมองบางสิ่งดังนี้:
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());
				
ภายใต้ 5 Explorer อินเทอร์เน็ต คือวิธีแนะนำการ ใช้รหัสที่คล้ายกับด้านล่าง:
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);
				
รหัสข้างต้นระบุการเชื่อมต่อ โดยการตั้งค่าสตริงที่ pszConnection ในโครงสร้าง INTERNET_PER_CONN_OPTION_LIST โดยการตั้งค่าข้อความนี้จะเป็น NULL ข้อมูลการกำหนดค่าจะถูกเรียกสำหรับการเริ่มต้น (หรือ LAN) การตั้งค่า

ตัวเลือกแรก (ตัวเลือก INTERNET_PER_CONN_AUTOCONFIG_URL [0]) จะส่งกลับ URL ที่ระบุสำหรับการกำหนดค่าอัตโนมัติของพร็อกซีเซิร์ฟเวอร์ ตัวเลือกที่สอง (ตัวเลือก INTERNET_PER_CONN_AUTODISCOVERY_FLAG [1]) จะตรวจพบ ว่ามีการตรวจหาอัตโนมัติเปิดใช้งานตัวเลือก หรือ สำหรับการเชื่อมต่อที่ระบุไม่ ตัวเลือกที่สามจะกำหนดว่าชุดของค่าสถานะการตั้งค่าสำหรับการเชื่อมต่อนี้เฉพาะ ตัวเลือกสองครั้งสุดท้ายที่สอดคล้องกับข้อมูลเดียวกัน ตามที่ดึงข้อมูล whe INTERNET_OPTION_PROXY ถูกใช้ใน Internet Explorer 4.x

ตามที่คุณจะเห็น ตัวเลือกต่าง ๆ ที่อาจสามารถคืนค่าสตริงที่มีลงใช้ GlobalFree() นี่คือเนื่องจากบัฟเฟอร์สตริงถูกปันส่วนสำหรับคุณ โดยการในไลบรารี WININET และจะอัพโปรแกรมเมอร์เมื่อต้องเพิ่มบัฟเฟอร์หลังจากการใช้

การขอรับข้อมูลสำหรับการเชื่อมต่ออื่น เพียงแค่เปลี่ยนที่กำลังสตริงที่ List.pszConnection ให้ชี้ไปรายการการตั้งค่าการเรียกผ่านสายโทรศัพท์คุณสนใจได้

ในทำนองเดียวกัน การตั้งค่าพร็อกซีข้อมูล คุณจะใช้เทคนิคที่เหมือนกันแต่ มี InternetSetOption() แทน ตัวอย่างเช่น:
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());

				
หนึ่งครั้ง ตัวอย่างข้างต้นจะเปลี่ยนค่าเริ่มต้น (หรือ LAN) การตั้งค่า (List.pszConnection ==ค่า NULL) ในตัวอย่าง รายละเอียดของเซิร์ฟเวอร์พร็อกซี "คง" ถูกเปลี่ยนเป็น "http://myproxy" ที่พอร์ต 8080 ในทำนองเดียวกัน คุณยังสามารถเปลี่ยน URL การกำหนดค่าอัตโนมัติ:
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());
				
When you configure Internet Explorer to use a proxy server for HTTP and go direct for other protocols, use the code to follow.

หมายเหตุ:The buffer that is passed to INTERNET_PER_CONN_PROXY_SERVER has the settings for each protocol (this code sets only HTTP, and all other protocols use direct connection).

หมายเหตุ:The INTERNET_PER_CONN_FLAGS sets the value for both Proxy types (direct and through proxy) in one element of the Option List Array, as shown below in the code.

หมายเหตุ:You have to OR these flags in one place. If you place these flags in another List element, they will display correctly (Internet Explorer OPTIONS), but only one of the flags (the first that is set) will work.
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; 

}
				
In the sample above (again the default or LAN setting), you have to specify the auto proxy configuration URL and set the option flag to enable the auto proxy configuration.

ข้อมูลอ้างอิง

คุณสมบัติ

หมายเลขบทความ (Article ID): 226473 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft Internet Explorer 4.01 Service Pack 1
Keywords: 
kbhowto kbmt KB226473 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:226473
การปฏิเสธความรับผิดชอบในเนื้อหาของ KB ที่จะไม่มีการปรับปรุงอีกต่อไป
บทความนี้กล่าวถึงผลิตภัณฑ์ที่ Microsoft ไม่มีการสนับสนุนอีกต่อไป เนื้อหาของบทความจึงมีการนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก

ให้ข้อเสนอแนะ

 

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