P> تحت Win9x ، إذا تم تثبيت شبكة الاتصال الهاتفي ، فستكون هناك مكتبان لبرنامج Dial-Up Network Rasapi32.dll و Rasapi16.dll ضمن نظام دليل النظام في نظام Windows. وتعيين معلومات حول الاتصال بالاتصال بالشبكة. بالطبع ، يمكنك الحصول على عنوان IP الديناميكي لاتصال الاتصال الهاتفي. في ملف Delphi Help ، هناك تعليمات محددة لوظائف RAS ذات الصلة. 1. أولا اشرح بعض ثوابت البيانات وهياكل البيانات التي سيتم استخدامها. كونست
Ras_MaxDeviceType = 16 ؛ // طول نوع الجهاز
RAS_MAXENTRYNAME = 256 ؛ // الحد الأقصى لطول اسم الاتصال
RAS_MAXDEVICENAME = 128 ؛ // الحد الأقصى لطول اسم الجهاز
Ras_Maxipaddress = 15 ؛ // الحد الأقصى لطول عنوان IP
rasp_pppip = $ 8021 ؛ // نوع بروتوكول اتصال الطلب الهاتفي ، تمثل هذه القيمة نوع اتصال PPP
hrasconn = dword ؛ // نوع مقبض اتصال الطلب الهاتفي
Rasconn = Record // مقبض وإعداد معلومات الاتصال الهاتفي النشط
dwsize: dword ؛ // حجم الذاكرة التي تشغلها هذا الهيكل (بايت) ،
تم تعيينه بشكل عام إلى حجم (Rasconn)
hrasconn: hrasconn ؛ // مقبض الاتصال النشط
SzentryName: Array [0..ras_maxentryname] of Char ؛
// اسم الاتصال النشط
szdeviceType: Array [0..ras_maxdeviceType] of Char ؛
// نوع المعدات المستخدمة للاتصال النشط
szdevicename: Array [0..ras_maxdevicename] of Char ؛
// اسم الجهاز المستخدم للاتصال النشط
نهاية؛
traspppip = سجل // معلومات عنوان IP الديناميكي لاتصالات الطلب الهاتفي النشط
dwsize: dword ؛ // حجم الذاكرة التي تشغلها هذا الهيكل (بايت) ،
بشكل عام ، تم تعيينه على حجم (traspppip)
dwerror: dword
Szipaddress: صفيف [0..Ras_Maxipaddress] من char ؛
// عنوان IP لاتصال الاتصال الهاتفي النشط
نهاية؛
2. بعد ذلك ، نحتاج إلى شرح وظائف RAS لاستخدامها. // احصل على معلومات حول جميع اتصالات الاتصال الهاتفي النشطة (معالجة الاتصال وإعداد المعلومات)
وظيفة RasenumConnections (var lprasconn: rasconn ؛
// استلم مؤشر المخزن المؤقت للاتصال النشط
var lpcb: dword ؛ // size buffer
var lpcconnections: dword // العدد الفعلي للاتصالات النشطة
): DWORD ؛
وظيفة RasenumConnections
اسم rasenumConnectionsa ؛
// احصل على معلومات IP ديناميكية لاتصال الاتصال الهاتفي النشط المحدد
وظيفة RasgetProjectionInfo (
hrasconn: hrasconn ؛ // حدد مقبض الاتصال النشط
Rasprojection: dword ؛ // ras type connection
var lpprojection: traspppip ؛ // buffer لتلقي معلومات IP الديناميكية
var LPCB: DWORD // تلقي حجم المخزن المؤقت
): dword ؛ stdcall ؛
Ction RasgetProjectionInfo ؛ خارجي
rasapi32.dll اسم rasgetprojectionInfoa ؛
عندما تكون قيمة إرجاع هاتين وظيفتين 0 ، فهذا يعني أن التنفيذ ناجح ، و Non0 يعني رمز الخطأ. 3. النقاش التالي حول كيفية استخدام وظيفتي RAS أعلاه للحصول على عنوان IP الديناميكي لاتصال الطلب أولاً. الاسم ، مقبض الاتصال ، نوع جهاز الاتصال واسم الجهاز ؛ للحصول على التفاصيل ، يرجى الرجوع إلى مقتطفات البرنامج ومعلومات التعليق أدناه. الإجراء tform1.button1click (المرسل: tobject) ؛
كونست
MaxConnections = 10 ؛ // لنفترض أن هناك ما يصل إلى 10 اتصالات الاتصال الهاتفي النشط
var
الاتصالات: صفيف [0..maxConnections-1] من Rasconn ؛
// صفيف الاتصال الهاتفي
longsize: dword ؛
IntavailableConnections: dword ؛
// العدد الفعلي لاتصالات الاتصال الهاتفي النشط
intindex: عدد صحيح ؛
Strtemp: سلسلة ؛
Dwresult: Dword ؛
dwSize: Dword ؛
raspppip: traspppip ؛
// معلومات عنوان IP الديناميكية لاتصال الطلب الهاتفي النشط
يبدأ
الاتصالات [0] .dwsize: = sizeof (rasconn) ؛
longsize: = maxConnections * connections [0] .dwsize ؛
// استلم حجم المخزن المؤقت للاتصال النشط
IntavailableConnections: = 0 ؛
// احصل على معلومات حول جميع اتصالات الاتصال الهاتفي النشطة (معالجة الاتصال وإعداد المعلومات)
dwresult: = RasenumConnections (الاتصالات [0] ،
longsize ، IntavailableConnections) ؛
إذا كان 0 $#@60 ؛
memo1.lines.add (خطأ: + inttostr (dwresult))
آخر
يبدأ
memo1.lines.add (الاتصال النشط الحالي له +
inttoStr (IntavailableConnections) +) ؛
// إظهار معلومات حول جميع اتصالات الطلب الهاتفي النشط (إعداد المعلومات وعنوان IP الديناميكي)
لـ Intindex: = 0 إلى IntavailableConnections - 1 تفعل
يبدأ
// إظهار معلومات الإعدادات لاتصال الاتصال الهاتفي النشط
strtemp: = اسم الاتصال:
+ strpas (اتصالات [intindex] .SzentryName)
+ ، نوع الجهاز:
+ strpas (اتصالات [intindex] .SzDeviceType)
+ ، اسم الجهاز:
+ strpas (اتصالات [intindex] .SzDevicename) ؛
memo1.lines.add (strtemp) ؛
// إظهار عنوان IP الديناميكي لاتصال الاتصال الهاتفي النشط
dwSize: = sizeof (raspppip) ؛
raspppip.dwsize: = dwSize ؛
dwresult: = rasgetprojectionInfo
(اتصالات [intindex] .Hrasconn ،
Rasp_pppip ، raspppip ، dwsize) ؛ // الحصول على عنوان IP ديناميكي
إذا كان 0 $#@60 ؛
memo1.lines.add (
خطأ: + inttostr (dwresult))
آخر
memo1.lines.add (
العنوان الديناميكي: + strpas (raspppip.szipaddress)) ؛
نهاية؛
نهاية؛
نهاية؛
تم تصحيح البرنامج أعلاه وتم تمريره تحت PWIN98+Delphi3.0.