P> ภายใต้ Win9x หากติดตั้งเครือข่ายการหมุนเวียนจะมีไลบรารีโปรแกรมการกำกับดูแลเครือข่ายโทรหาสองรายการ Rasapi32.dll และ Rasapi16.dll ภายใต้ระบบไดเรกทอรีระบบของระบบ Windows และตั้งค่าข้อมูลเกี่ยวกับการโทรเพื่อเชื่อมต่อกับเครือข่าย แน่นอนคุณสามารถรับที่อยู่ IP แบบไดนามิกของการเชื่อมต่อ dial-up ในไฟล์ช่วยเหลือ Delphi มีคำแนะนำเฉพาะสำหรับฟังก์ชั่น RAS ที่เกี่ยวข้อง 1. ก่อนอื่นอธิบายค่าคงที่ข้อมูลและโครงสร้างข้อมูลที่จะใช้ const
ras_maxdevicetype = 16; // ความยาวประเภทประเภทอุปกรณ์
ras_maxentryName = 256; // ความยาวสูงสุดของชื่อการเชื่อมต่อ
ras_maxdevicename = 128; // ความยาวสูงสุดของชื่ออุปกรณ์
ras_maxipaddress = 15; // ความยาวสูงสุดของที่อยู่ IP
RASP_PPPIP = $ 8021; // ประเภทโปรโตคอลของการเชื่อมต่อการหมุนเวียนค่านี้แสดงถึงประเภทการเชื่อมต่อ PPP
hrasconn = dword; // ประเภทของการเชื่อมต่อการเชื่อมต่อ dial-up
rasconn = record // การจัดการและการตั้งค่าข้อมูลของการเชื่อมต่อ dial-active ที่ใช้งานอยู่
dwsize: dword; // ขนาดของหน่วยความจำที่ถูกครอบครองโดยโครงสร้างนี้ (ไบต์)
โดยทั่วไปตั้งค่าเป็น sizeof (rasconn)
hrasconn: hrasconn; // ที่จับของการเชื่อมต่อที่ใช้งานอยู่
szentryName: array [0..RAS_MAXENTRYNAME] ของถ่าน;
// ชื่อของการเชื่อมต่อที่ใช้งานอยู่
szdevicetype: array [0..RAS_MAXDEVICETYPE] ของถ่าน;
// ประเภทของอุปกรณ์ที่ใช้สำหรับการเชื่อมต่อที่ใช้งานอยู่
szdevicename: Array [0..RAS_MAXDEVICENAME] ของถ่าน;
// ชื่ออุปกรณ์ที่ใช้สำหรับการเชื่อมต่อที่ใช้งานอยู่
จบ;
traspppip = record // ข้อมูลที่อยู่ IP แบบไดนามิกสำหรับการเชื่อมต่อ dial-active ที่ใช้งานอยู่
dwsize: dword; // ขนาดของหน่วยความจำที่ถูกครอบครองโดยโครงสร้างนี้ (ไบต์)
โดยทั่วไปตั้งค่าเป็น sizeof (traspppip)
DWERROR: DWORD; // ตัวระบุประเภทข้อผิดพลาด
Szipaddress: Array [0..RAS_MAXIPADDRESS] ของ Char;
// ที่อยู่ IP ของการเชื่อมต่อ dial-act ที่ใช้งานอยู่
จบ;
2. ถัดไปเราต้องอธิบายฟังก์ชั่น RAS สองฟังก์ชั่นที่จะใช้ // รับข้อมูลเกี่ยวกับการเชื่อมต่อ dial-up ที่ใช้งานอยู่ทั้งหมด (มือจับการเชื่อมต่อและการตั้งค่าข้อมูล)
ฟังก์ชั่น rasenumconnections (var lprasconn: Rasconn;
// รับตัวชี้ของบัฟเฟอร์ของการเชื่อมต่อที่ใช้งานอยู่
var lpcb: dword; // ขนาดบัฟเฟอร์
var lpcconnections: dword // จำนวนการเชื่อมต่อที่ใช้งานจริง
): DWORD;
ฟังก์ชั่น rasenumconnections;
ชื่อ rasenumconnectionsa;
// รับข้อมูล IP แบบไดนามิกสำหรับการเชื่อมต่อที่ใช้งานได้ที่ระบุ
ฟังก์ชั่น rasgetprojectioninfo (
hrasconn: hrasconn; // ระบุที่จับสำหรับการเชื่อมต่อที่ใช้งานอยู่
rasprojection: dword; // ประเภทการเชื่อมต่อ Ras
var lpprojection: traspppip; // buffer สำหรับการรับข้อมูล IP แบบไดนามิก
var lpcb: dword // รับบัฟเฟอร์ขนาด
): dword; stdcall;
ction rasgetprojectioninfo; ภายนอก
rasapi32.dll ชื่อ rasgetprojectioninfoa;
เมื่อค่าส่งคืนของฟังก์ชั่นทั้งสองนี้คือ 0 หมายความว่าการดำเนินการสำเร็จและไม่ใช่ 0 หมายถึงรหัสข้อผิดพลาด 3. การสนทนาต่อไปนี้เป็นวิธีการใช้ฟังก์ชั่น RAS สองรายการด้านบนเพื่อรับที่อยู่ IP แบบไดนามิกของการเชื่อมต่อการหมุนเวียนก่อน ชื่อที่จับการเชื่อมต่อประเภทอุปกรณ์การเชื่อมต่อและชื่ออุปกรณ์; สำหรับรายละเอียดโปรดดูตัวอย่างโปรแกรมและข้อมูลความคิดเห็นด้านล่าง ขั้นตอน tform1.button1click (ผู้ส่ง: tobject);
const
maxConnections = 10; // สมมติ
วาจา
การเชื่อมต่อ: อาร์เรย์ [0..MAXCONNECTIONS-1] ของ RASCONN;
// อาร์เรย์การเชื่อมต่อ dial-up
Longsize: DWORD;
IntavailableConnections: DWORD;
// จำนวนการเชื่อมต่อการโทรออกที่ใช้งานจริง
Intindex: จำนวนเต็ม;
strtemp: สตริง;
dwresult: dword;
DWSIZE: DWORD;
raspppip: traspppip;
// ข้อมูลที่อยู่ IP แบบไดนามิกของการเชื่อมต่อ dial-active ที่ใช้งานอยู่
เริ่ม
การเชื่อมต่อ [0] .dwsize: = sizeof (rasconn);
Longsize: = MaxConnections * การเชื่อมต่อ [0] .DWSIZE;
// รับขนาดบัฟเฟอร์ของการเชื่อมต่อที่ใช้งานอยู่
IntavailableConnections: = 0;
// รับข้อมูลเกี่ยวกับการเชื่อมต่อ dial-up ที่ใช้งานอยู่ทั้งหมด (มือจับการเชื่อมต่อและการตั้งค่าข้อมูล)
dwresult: = rasenumconnections (การเชื่อมต่อ [0],
Longsize, AutavailableConnections);
ถ้า 0 $#@60;
memo1.lines.add (ข้อผิดพลาด: + inttostr (dwresult))
อื่น
เริ่ม
memo1.lines.add (การเชื่อมต่อที่ใช้งานอยู่มี +
inttoStr (intavailableConnections) +);
// แสดงข้อมูลเกี่ยวกับการเชื่อมต่อ dial-up ที่ใช้งานอยู่ทั้งหมด (การตั้งค่าข้อมูลและที่อยู่ IP แบบไดนามิก)
สำหรับ Intindex: = 0 ถึง IntavailableConnections - 1 ทำ
เริ่ม
// แสดงข้อมูลการตั้งค่าสำหรับการเชื่อมต่อ dial-up ที่ใช้งานอยู่
strtemp: = ชื่อการเชื่อมต่อ:
+ strpas (การเชื่อมต่อ [Intindex] .szentryname)
+ ประเภทอุปกรณ์:
+ strpas (การเชื่อมต่อ [Intindex] .szdevicetype)
+, ชื่ออุปกรณ์:
+ strpas (การเชื่อมต่อ [intindex] .szdevicename);
memo1.lines.add (strtemp);
// แสดงที่อยู่ IP แบบไดนามิกของการเชื่อมต่อ dial-up ที่ใช้งานอยู่
dwsize: = sizeof (raspppip);
raspppip.dwsize: = dwsize;
dwresult: = rasgetprojectiNfo
(การเชื่อมต่อ [Intindex] .hrasconn,
rasp_pppip, raspppip, dwsize); // รับที่อยู่ IP แบบไดนามิก
ถ้า 0 $#@60;
memo1.lines.add (
ข้อผิดพลาด: + inttoStr (dwresult))
อื่น
memo1.lines.add (
ที่อยู่แบบไดนามิก: + strpas (raspppip.szipaddress));
จบ;
จบ;
จบ;
โปรแกรมข้างต้นถูกดีบักและผ่านภายใต้ PWIN98+DELPHI3.0