ด้วยการพัฒนาอย่างรวดเร็วของอินเทอร์เน็ต การเขียนโปรแกรมในปัจจุบันมักต้องใช้เครือข่ายโดยตรงในโปรแกรมเพื่อจัดการเรื่องบางอย่าง เช่น การลงทะเบียนออนไลน์และความช่วยเหลือออนไลน์ ซึ่งกำหนดให้เราต้องสร้างการเชื่อมต่อบางอย่างในโปรแกรม ซอฟต์แวร์จำนวนมากเริ่มเบราว์เซอร์เพื่อค้นหา URL โดยไม่รู้ว่าผู้ใช้เชื่อมต่อกับอินเทอร์เน็ตหรือไม่ หลังจากพยายามอย่างหนัก พวกเขาสามารถพบเพียงหน้าข้อผิดพลาดเท่านั้น (แน่นอนว่าไม่มีผลลัพธ์ที่ดี) หากเราสามารถระบุได้โดยอัตโนมัติว่าผู้ใช้เชื่อมต่อกับอินเทอร์เน็ตหรือไม่เมื่อเขียนโปรแกรม และหากเป็นเช่นนั้น ให้เปิดการเชื่อมต่อ และหากไม่ ให้เริ่มการเชื่อมต่อผ่านสายโทรศัพท์เริ่มต้น จะทำให้ผู้คนรู้สึกว่าซอฟต์แวร์ของคุณดีกว่าผู้อื่นหรือไม่ ? การพิจารณาว่าคุณเชื่อมต่อกับอินเทอร์เน็ตหรือไม่นั้นถูกนำมาใช้ในหลายๆ แห่ง ในที่นี้ เราจะแนะนำเฉพาะวิธีการเริ่มการเชื่อมต่อผ่านสายโทรศัพท์เริ่มต้นเท่านั้น
----ก่อนที่จะแนะนำเรามาดูวิธีการเปิดเครือข่ายผ่านสายโทรศัพท์กันก่อน เนื่องจาก Dial-Up Networking ไม่ใช่ไฟล์ปฏิบัติการ จึงไม่สามารถเปิดได้โดยใช้วิธี "ไฟล์ปฏิบัติการ Shell" เพื่อเริ่มการเชื่อมต่อเครือข่ายผ่านสายโทรศัพท์ คุณต้องใช้ Explorer วิธีการดังต่อไปนี้:
เชลล์ "นักสำรวจ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/"&"::{992CFFA0-F557-101A-88EC-00DD010CCC48}",vbNormalFocus
----แต่ถ้าคุณต้องการเริ่มการเชื่อมต่อในเครือข่ายการเรียกผ่านสายโทรศัพท์ คุณต้องใช้ rundll.exe และ rnaui.dll เพื่อเริ่มการเชื่อมต่อ วิธีการมีดังนี้ (สมมติว่าชื่อการเชื่อมต่อคือ 163):
เชลล์ "rundllrnaui.dll, RnaDial163", vbNormalFocus
----หมายเหตุ: ในคำอธิบายข้างต้น อย่าใส่ช่องว่างเพิ่มเติมในส่วน ",RnaDial163" และอย่าเปลี่ยนตัวพิมพ์โดยพลการ
---- ข้างต้นถือว่าชื่อการเชื่อมต่อเท่านั้น แต่ในการเขียนโปรแกรมจริงเราไม่ทราบชื่อการเชื่อมต่อเริ่มต้นและเริ่มต้นได้อย่างไร ที่นี่เราสามารถใช้รีจิสทรีเพื่อให้บรรลุเป้าหมายของเรา ขั้นตอนที่สมบูรณ์มีดังนี้:
----วางปุ่มคำสั่ง (ชื่อ cmdCallConnect) บนแบบฟอร์มต่อไปนี้คือส่วนของโค้ด:
ตัวเลือกที่ชัดเจน
'คำสั่ง API เกี่ยวกับการลงทะเบียน
PRivateDeclareFunctionRegOpenKeyExLib "advapi32" Alias "RegOpenKeyExA" (ByValhKeyAsLong, ByVallpSubKeyAsString, ByValulOptionsAsLong, ByValsamDesiredAsLong, phkResultAsLong) AsLong
PrivateDeclareFunctionRegQueryValueExLib "advapi32" Alias "RegQueryValueExA" (ByValhKeyAsLong, ByVallpValueNameAsString, ByValpReservedAsLong, ByReflpTypeAsLong, ByValszDataAsString, ByReflpcbDataAsLong) AsLong
PrivateDeclareFunctionRegCloseKeyLib "advapi32" (ByValhKeyAsLong) AsLong
'คงที่
ConstHKEY_CURRENT_USER=&H80000001
ConstERROR_SUCCESS=0&
PrivateSubcmdCallConnect_คลิก()
'เริ่มการเชื่อมต่อผ่านสายโทรศัพท์เริ่มต้น
เชลล์ "rundllrnaui.dll, RnaDial" GetConnect, vbNormalFocus
สิ้นสุดย่อย
PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
hKey=HKEY_CURRENT_USER'คีย์หลัก
SubKey = "การเข้าถึงระยะไกล" 'คีย์ย่อย
'รับชื่อการเชื่อมต่อเริ่มต้น
GetConnect=GetRegValue(hKey,SubKey,"ค่าเริ่มต้น")
EndFunction
PublicFunctionGetRegValue (hKeyAsLong, lpszSubKeyAsString, szKeyAsString) AsVariant
OnErrorGoToErrorRoutineErr:
Dimphkผลลัพธ์AsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong
'สร้างบัฟเฟอร์
szBuffer=ช่องว่าง(255)
lBuffSize=เลน(szBuffer)
'เปิดรหัสลงทะเบียน'
RegOpenKeyExhKey,lpszSubKey,0,1,phkResult
'ผลลัพธ์การค้นหา
lResult=RegQueryValueEx(phkResult,szKey,0,0,szBuffer,lBuffSize)
'ปิดการลงทะเบียนคีย์'
RegCloseKeyphkผลลัพธ์
'ผลลัพธ์กลับมา.
IflResult=ERROR_SUCCESSแล้ว
GetRegValue=ซ้าย(szBuffer,lBuffSize-1)
อื่น
รับ RegValue = ""
สิ้นสุดถ้า
ออกจากฟังก์ชั่น
ข้อผิดพลาดประจำข้อผิดพลาด:
รับ RegValue = ""
EndFunction
โปรแกรมข้างต้นได้รับการดีบั๊กภายใต้ WIN98 และ VB6.0 -