การเข้าถึงอินเทอร์เน็ตแบบ Dial-up ผ่าน MODEM ยังคงเป็นวิธีที่ชาวเน็ตส่วนใหญ่เลือกเข้าถึงอินเทอร์เน็ต หากเราสามารถเปิดใช้งานการเชื่อมต่อแบบ dial-up ในแอปพลิเคชันของเรา (เช่นฟังก์ชัน dial-up อัตโนมัติในโปรแกรมเบราว์เซอร์ IE) จะสะดวกยิ่งขึ้นสำหรับผู้ใช้ซอฟต์แวร์ของเราอย่างไม่ต้องสงสัย (ไม่จำเป็นต้องสลับแอปพลิเคชันและเรียกใช้เครือข่าย dial-up) และปรับปรุงความเป็นมิตรของซอฟต์แวร์ของเรา ซึ่งจะช่วยปรับปรุงความสามารถในการแข่งขันของซอฟต์แวร์
ภายใต้ WIN9X หากมีการติดตั้งเครือข่ายแบบ dial-up จะมีไลบรารีการจัดการเครือข่ายแบบ dial-up สองไลบรารี ได้แก่ RasApi32.DLL และ RasApi16.DLL ภายใต้ไดเร็กทอรีระบบ System ของระบบ WINDOWS เราสามารถใช้ฟังก์ชันต่างๆ ในไลบรารีเหล่านี้เพื่อสร้างและ แก้ไขการเชื่อมต่อผ่านสายโทรศัพท์ และการเข้าถึงอินเทอร์เน็ตผ่านสายโทรศัพท์โดยใช้การเชื่อมต่อผ่านสายโทรศัพท์ที่กำหนด
1. สร้างการเชื่อมต่อผ่านสายโทรศัพท์ใหม่
เมื่อสร้างการเชื่อมต่อผ่านสายโทรศัพท์ในระบบ WIN9X แล้ว คุณจะสามารถใช้การเชื่อมต่อผ่านสายโทรศัพท์ที่มีอยู่ได้ หากไม่มีการเชื่อมต่อผ่านสายโทรศัพท์ คุณต้องสร้างการเชื่อมต่อผ่านสายโทรศัพท์ใหม่ ฟังก์ชันที่เกี่ยวข้องมีอยู่ใน RasAPI ชื่อฟังก์ชันคือ RasCreatePhonebookEntryA และต้นแบบฟังก์ชันคือ:
ฟังก์ชั่น RasCreatePhonebookEntryA( hwnd : THandle;lpszPhonebook: pchar ) : DWord;
stdcall; { อยู่ในส่วนอินเทอร์เฟซ}
ฟังก์ชั่น RasCreatePhonebookEntryA; ภายนอก 'Rasapi32.dll'; { อยู่ในส่วนการใช้งาน}
พารามิเตอร์:
hwnd (THandle): หมายเลขอ้างอิงของหน้าต่างหลักของหน้าต่างการเชื่อมต่อผ่านสายโทรศัพท์ใหม่ ซึ่งสามารถเป็นหมายเลขอ้างอิงของ TForm หรือตาราง NIL
lpszPhonebook (pchar): ชื่อสมุดโทรศัพท์ ไม่มีผลใดๆ ใน Win9X สามารถตั้งค่าเป็นสตริงว่างได้
ค่าส่งคืนฟังก์ชัน:
0 หมายถึงการดำเนินการสำเร็จ มิฉะนั้น จะเป็นข้อผิดพลาด
ด้านล่างนี้เป็นตัวอย่างของการสร้างการเชื่อมต่อผ่านสายโทรศัพท์ใหม่
{สร้างการเชื่อมต่อผ่านสายโทรศัพท์ใหม่}
ขั้นตอน TForm1.Button1Click (ผู้ส่ง: TObject);
var
dwผลลัพธ์: DWORD;
เริ่ม
//สร้างการเชื่อมต่อผ่านสายโทรศัพท์ใหม่ในหน้าต่างปัจจุบัน
dwResult := RasCreatePhonebookEntryA( หมายเลขอ้างอิง, '' );
ถ้า dwResult = 0 แล้ว
memo1.lines.add('การเชื่อมต่อผ่านสายโทรศัพท์ใหม่สำเร็จแล้ว!')
อื่น
memo1.lines.add ('การเชื่อมต่อผ่านสายโทรศัพท์ใหม่ล้มเหลว!')
จบ;
2. แก้ไขคุณสมบัติของการเชื่อมต่อผ่านสายโทรศัพท์ที่ระบุ
หากผู้ใช้จำเป็นต้องแก้ไขคุณลักษณะของการเชื่อมต่อผ่านสายโทรศัพท์ เช่น หมายเลขโทรศัพท์ รหัสประเทศและพื้นที่ วิธีการเชื่อมต่อ ประเภทเซิร์ฟเวอร์ ฯลฯ เขาสามารถใช้ฟังก์ชัน RasAPI เพื่อให้บรรลุเป้าหมายนี้ ชื่อฟังก์ชันคือ RasEditPhonebookEntryA และ ต้นแบบฟังก์ชันคือ:
ฟังก์ชั่น RasEditPhonebookEntryA (hwnd: THandle; lpszPhonebook: pchar;
lpszEntryName: pchar ) : DWORD;stdcall; { อยู่ในส่วนอินเทอร์เฟซ}
ฟังก์ชั่น RasEditPhonebookEntryA; ภายนอก 'Rasapi32.dll'; { อยู่ในส่วนการใช้งาน}
พารามิเตอร์:
hwnd (THandle): หมายเลขอ้างอิงของหน้าต่างหลักของหน้าต่างการเชื่อมต่อแบบ dial-up ใหม่ ซึ่งสามารถเป็นหมายเลขอ้างอิงของ TForm ซึ่งแสดงเป็น NIL
เดสก์ท็อป Windows (เดสก์ท็อป)
lpszPhonebook (pchar): ชื่อสมุดโทรศัพท์ ไม่มีผลใดๆ ใน Win9X สามารถตั้งค่าเป็นสตริงว่างได้
lpszEntryName: (pchar): ชื่อของการเชื่อมต่อผ่านสายโทรศัพท์ที่จะแก้ไข เช่น '163', '169' ฯลฯ
ค่าส่งคืนฟังก์ชัน:
0 หมายถึงการดำเนินการสำเร็จ มิฉะนั้น จะเป็นข้อผิดพลาด
ต่อไปนี้เป็นตัวอย่างของการแก้ไขคุณสมบัติของการเชื่อมต่อผ่านสายโทรศัพท์ที่ระบุ
{แก้ไขคุณสมบัติการเชื่อมต่อผ่านสายโทรศัพท์ที่ระบุ}
ขั้นตอน TForm1.Button2Click (ผู้ส่ง: TObject);
var
dwผลลัพธ์: DWORD;
strDialName : สตริง;
เริ่ม
strDialName := '163';//ตั้งชื่อการเชื่อมต่อผ่านสายโทรศัพท์เป็น 163
//ระบุและแก้ไขคุณสมบัติของการเชื่อมต่อผ่านสายโทรศัพท์ในหน้าต่างปัจจุบัน
dwResult := RasEditPhonebookEntryA( จัดการ, '', PChar( strDialName ) );
ถ้า dwResult = 0 แล้ว
memo1.lines.add('แก้ไขการเชื่อมต่อผ่านสายโทรศัพท์' + strDialName + 'สำเร็จ!')
อื่น
memo1.lines.add('แก้ไขการเชื่อมต่อผ่านสายโทรศัพท์' + strDialName + 'ล้มเหลว!')
จบ;
3. รับชื่อการเชื่อมต่อผ่านสายโทรศัพท์ที่มีอยู่ในระบบปัจจุบัน
เพื่อให้ผู้ใช้สามารถเลือกที่จะโทรโดยใช้การเชื่อมต่อแบบ dial-up เราจำเป็นต้องได้รับชื่อของการเชื่อมต่อแบบ dial-up ที่สร้างขึ้นในระบบ หลังจากสร้างการเชื่อมต่อผ่านสายโทรศัพท์แล้ว WIN9X จะเขียนชื่อและคุณลักษณะของการเชื่อมต่อผ่านสายโทรศัพท์ในรีจิสทรี เราสามารถรับชื่อการเชื่อมต่อผ่านสายโทรศัพท์ที่มีอยู่ในระบบปัจจุบันและชื่อการเชื่อมต่อเริ่มต้นที่ตั้งค่าใน Internet Explorer จากรีจิสทรี .
ภายใต้ HKEY_USERS.DefaultRemoteaccessAddresses ในรีจิสทรี ชื่อของการเชื่อมต่อแบบเรียกผ่านสายโทรศัพท์ที่ถูกสร้างขึ้นในเครือข่ายการเรียกผ่านสายโทรศัพท์และการตั้งค่าแอตทริบิวต์จะแสดงอยู่ในรายการ ชื่อของแต่ละรายการคือชื่อของการเชื่อมต่อแบบเรียกผ่านสายโทรศัพท์ที่พร้อมใช้งาน ของแต่ละรายการคือชื่อของการตั้งค่าคุณสมบัติการเชื่อมต่อผ่านสายโทรศัพท์ที่มีอยู่ เราจำเป็นต้องอ่านชื่อของแต่ละโครงการเพื่อรับชื่อการเชื่อมต่อผ่านสายโทรศัพท์ที่มีอยู่ในระบบปัจจุบันเท่านั้น
หากตั้งชื่อการเชื่อมต่อเริ่มต้นใน Internet Explorer (ดู => ตัวเลือกอินเทอร์เน็ต => การเชื่อมต่อ => การเชื่อมต่อ => การตั้งค่า => ใช้การเชื่อมต่อเครือข่ายแบบเรียกผ่านสายโทรศัพท์ต่อไปนี้) จากนั้นภายใต้ HKEY_USERS.DefaultRemoteAccess ในรีจิสทรี จะมีสตริง พิมพ์ค่าคีย์ ชื่อค่าคีย์คือ InternetProfile และค่าของมันคือชื่อการเชื่อมต่อเริ่มต้นที่ตั้งค่าใน Internet Explorer
ต่อไปนี้เป็นตัวอย่างของการได้รับชื่อของการเชื่อมต่อผ่านสายโทรศัพท์ที่มีอยู่ในระบบปัจจุบัน
{โปรดทราบว่าหน่วยรีจิสทรีถูกเพิ่มไปยังการใช้งานสำหรับการดำเนินงานรีจิสทรี}
{รับชื่อการเชื่อมต่อผ่านสายโทรศัพท์ที่มีอยู่ในระบบปัจจุบัน}
ขั้นตอน TForm1.Button3Click (ผู้ส่ง: TObject);
var
registerTemp : TRregistry;
stringsTemp : TStringlist;
intIndex : จำนวนเต็ม;
เริ่ม
RegistryTemp := TRegistry.Create;
stringsTemp := TStringlist.Create;
ด้วย RegistryTemp ทำ
เริ่ม
RootKey := HKEY_USERS;//รูทคีย์ถูกตั้งค่าเป็น HKEY_USERS
//หากมีคีย์ย่อยDefaultRemoteAccessAddresses
ถ้า OpenKey('.DefaultRemoteAccessAddresses',false) แล้ว
GetValueNames( stringsTemp );//อ่านชื่อของแต่ละรายการ นั่นคือ ชื่อการเชื่อมต่อแบบเรียกผ่านสายโทรศัพท์
ปิดคีย์;
จบ;
//การเชื่อมต่อผ่านสายโทรศัพท์ที่มีอยู่ในระบบปัจจุบัน
memo1.lines.add( '******************มี'+ IntToStr( stringsTemp.count ) ในระบบปัจจุบัน
+'การเชื่อมต่อผ่านสายโทรศัพท์ที่ใช้ได้มีดังนี้******************');
สำหรับ intIndex := 0 ถึง stringsTemp.count - 1 ทำ
memo1.lines.add( stringsTemp.strings[ intIndex ] );
//แสดงรายการชื่อการเชื่อมต่อเริ่มต้นที่ตั้งไว้ใน Internet Explorer
ถ้า registerTemp.OpenKey('.DefaultRemoteAccess',false) แล้ว
memo1.lines.add( 'ชื่อการเชื่อมต่อเริ่มต้นที่ตั้งไว้ใน Internet Explorer คือ' +
RegistryTemp.ReadString('โปรไฟล์อินเทอร์เน็ต') );
//ปล่อยความทรงจำ
registerTemp.free;
stringsTemp.free;
จบ;
4. โทรออกโดยใช้การเชื่อมต่อผ่านสายโทรศัพท์ที่ระบุ
วัตถุประสงค์ของงานสามประการข้างต้นคือการเข้าถึงอินเทอร์เน็ตแบบ dial-up ตอนนี้เรามาดูวิธีใช้การเชื่อมต่อแบบ dial-up ที่กำหนดเพื่อเข้าถึงอินเทอร์เน็ตแบบ dial-up วิธีที่ดีที่สุดคือการเรียกใช้บริการเครือข่ายผ่านสายโทรศัพท์ของ WIN9X ซึ่งก็คือการรันโปรแกรมสำเร็จรูปภายใต้ WIN9X
ในโปรแกรม Delphi คุณสามารถใช้รหัสต่อไปนี้เพื่อใช้การเข้าถึงอินเทอร์เน็ตแบบ dial-up:
winexec('rundll32.exe rnaui.dll,RnaDial 163',SW_SHOWNORMAL);
พารามิเตอร์สุดท้าย "163" ในสตริงคือชื่อของการเชื่อมต่อผ่านสายโทรศัพท์
ต่อไปนี้เป็นตัวอย่างของการเข้าถึงอินเทอร์เน็ตผ่านสายโทรศัพท์โดยใช้การเชื่อมต่อผ่านสายโทรศัพท์ที่ระบุ
{การเข้าถึงอินเทอร์เน็ตผ่านสายโทรศัพท์โดยใช้การเชื่อมต่อผ่านสายโทรศัพท์ที่ระบุ}
ขั้นตอน TForm1.Button4Click (ผู้ส่ง: TObject);
var
strDialName : สตริง;
เริ่ม
strDialName := '163';//ตั้งชื่อการเชื่อมต่อผ่านสายโทรศัพท์เป็น 163
memo1.lines.add( '******************ใช้การเชื่อมต่อผ่านสายโทรศัพท์' + strDialName
+'ตระหนักถึงการเข้าถึงอินเทอร์เน็ตผ่านสายโทรศัพท์******************');
winexec( PChar('rundll32.exe rnaui.dll,RnaDial ' + strDialName),SW_SHOWNORMAL);
จบ;
โปรแกรมข้างต้นได้รับการแก้ไขและส่งผ่านภายใต้ PWIN98+Delphi3.0