منذ فترة ، كتبت فصلًا عن Windows بسبب احتياجات العمل. الآن يدعم قراءة قائمة اتصال Windows Dial-Up ، والاتصال ، والتعليق ، وإنشاء/حذف الاتصالات ، ويمكن استخدامها لـ 98/2000/XP. في المستقبل ، إذا كان لديك وقت ، فاكتبه كمكون وأضف الدعم لأحداث الاتصال.
يستخدم
Ras ، الفصول ، sysutils ، strutils ، النوافذ ، النماذج ؛
يكتب
eraserror = استثناء ؛
يكتب
trasconnection = فئة
خاص
flatform: عدد صحيح ؛
fconnected: منطقية ؛
FrasentRies: TstringList ؛
Frasconn: Hrasconn ؛
fparams: rasdialparams.
فيرنو: عدد صحيح ؛
وظيفة getPassword: String ؛
الإجراء setPassword (كلمة المرور: سلسلة) ؛
وظيفة getPhoneno: سلسلة.
الإجراء setphoneno (الرقم: سلسلة) ؛
وظيفة getCallback: سلسلة.
الإجراء setCallback (رقم: سلسلة) ؛
وظيفة getDomain: سلسلة.
الإجراء setDomain (المجال: سلسلة) ؛
وظيفة getUsername: سلسلة.
الإجراء setusername (اسم المستخدم: سلسلة) ؛
وظيفة getentryName: سلسلة.
الإجراء setentryName (الإدخال: سلسلة) ؛
وظيفة getConnected: منطقية ؛
الإجراء setConnected (Avalue: Boolean) ؛
وظيفة getRasentRies: tstringlist ؛
عام
صناديق الممتلكات: قائمة tstringlist قراءة getRasentRies ؛
Property PhonEnumber: String Read GetPhoneno Write setphoneno ؛
Property CallbackNumber: سلسلة قراءة getCallback اكتب setCallback ؛
مجال الخاصية: سلسلة قراءة getDomain اكتب setDomain ؛
إدخال الخاصية: سلسلة قراءة getentryname اكتب setentryname ؛
اسم مستخدم الخاصية: سلسلة قراءة getUsername اكتب setusername ؛
Property Password: String Read GetPassword Write SetPassword ؛
خاصية نشطة: Boolean قراءة getConnected كتابة setConnected ؛
اتصال الإجراء ؛
الإجراء فصل ؛
وظيفة geterrorcode: عدد صحيح ؛
الإجراء Freeandhangup ؛
إنشاء مُنشئ ؛
المدمرة تدمير.
الإجراء createrasentry.
الإجراء deleterasentry (AentryName: String) ؛
// وظيفة geterRorsons: عدد صحيح ؛
نهاية؛
تطبيق
{trasconnection}
الإجراء trasconnection.connect ؛
var
أنا: عدد صحيح.
S: سلسلة.
يبدأ
fparams.dwsize: = sizeof (rasdialparams) ؛
i: = rasdial (nil ، nil ، fparams ، 0 ، nil ، frasconn) ؛
إذا كنت <> 0 ثم ابدأ
ferrno: = i ؛
الحالة الأولى
691: S: = "فشل التحقق من الهوية!" ؛
692: S: = "فشل فتح المنفذ!" ؛
676: S: = "الخط مشغول ، يرجى الانتظار والاتصال مرة أخرى!" ؛
677: s: = 'خطأ استجابة الصوت!' ؛
678: S: = "لا إجابة!" ؛
679: S: = "لا توجد إشارة الناقل!" ؛
680: S: = "لا نغمة الاتصال!" ؛
آخر
S: = "خطأ غير معروف!" ؛
نهاية؛
Rashangup (Frasconn) ؛
رفع eraserror.create (s) ؛
نهاية
آخر fconnected: = صحيح ؛
نهاية؛
الإجراء trasconnection.disconnect ؛
يبدأ
Rashangup (Frasconn) ؛
Frasconn: = 0 ؛
نهاية؛
وظيفة trasconnection.getCallback: سلسلة ؛
يبدأ
النتيجة: = سلسلة (fparams.szcallbacknumber) ؛
نهاية؛
وظيفة trasconnection.getConnected: منطقية ؛
var
أنا ، لين ، نوم: عدد صحيح ؛
X: مجموعة من Rasconn ؛
يبدأ
النتيجة: = خطأ ؛
setLength (x ، 1) ؛
x [0] .dwsize: = sizeof (rasconn) ؛
LEN: = X [0] .DWSIZE ؛
NUM: = 0 ؛
RasenumConnections (x [0] ، len ، num) ؛
إذا num> 0 ثم ابدأ
setLength (x ، num) ؛
x [0] .dwsize: = sizeof (rasconn) ؛
LEN: = X [0] .DWSIZE ؛
RasenumConnections (x [0] ، len ، num) ؛
لأني: = 1 إلى NUM
إذا كان STROCMP (x [i - 1]
Frasconn: = x [i - 1] .Hrasconn ؛
النتيجة: = صحيح ؛
استراحة؛
نهاية؛
نهاية؛
setLength (x ، 0) ؛
نهاية؛
وظيفة trasconnection.getDomain: سلسلة ؛
يبدأ
النتيجة: = سلسلة (fparams.sdomain) ؛
نهاية؛
وظيفة trasconnection.geterRorCode: عدد صحيح ؛
يبدأ
النتيجة: = ferrno ؛
نهاية؛
وظيفة trasconnection.getPassword: سلسلة ؛
يبدأ
النتائج: = '*********' ؛
نهاية؛
وظيفة trasconnection.getphoneno: سلسلة ؛
يبدأ
النتيجة: = سلسلة (fparams.szphonenber) ؛
نهاية؛
وظيفة trasconnection.getentryname: سلسلة ؛
يبدأ
النتيجة: = سلسلة (fparams.szentryName) ؛
نهاية؛
وظيفة trasconnection.getUserName: سلسلة ؛
يبدأ
النتيجة: = سلسلة (fparams.szusername) ؛
نهاية؛
الإجراء trasconnection.setCallback (الرقم: سلسلة) ؛
يبدأ
strlcopy (fparams.szcallbacknumber ، pchar (number) ، sizeof (fparams.szcallbacknumber) - 1) ؛
نهاية؛
الإجراء trasconnection.setConnected (avalue: boolean) ؛
يبدأ
إذا كانت Avalue وعدم ربطها ثم قم بتوصيلها
آخر إذا لم يكن Avalue و getConnection ثم فصل ؛
نهاية؛
الإجراء trasconnection.setDomain (المجال: سلسلة) ؛
يبدأ
strlcopy (fparams.szdomain ، pchar (المجال) ، sizeof (fparams.szdomain) - 1) ؛
نهاية؛
الإجراء trasconnection.setPassword (كلمة المرور: سلسلة) ؛
يبدأ
strlcopy (fparams.szpassword ، pchar (password) ، sizeof (fparams.szpassword) - 1) ؛
نهاية؛
الإجراء trasconnection.setphoneno (الرقم: سلسلة) ؛
يبدأ
strlcopy (fparams.szphonenber ، pchar (number) ، sizeof (fparams.szphonenber) - 1) ؛
نهاية؛
الإجراء trasconnection.setentryName (الإدخال: سلسلة) ؛
var
أنا: عدد صحيح.
يبدأ
لأني: = 0 إلى frasentries.count - 1 تفعل
إذا frasentries.strings [i] = الدخول ، فابدأ
strcopy (fparams.szentryName ، pCare (enter)) ؛
مخرج؛
نهاية؛
strcopy (fparams.szentryName ، '') ؛
نهاية؛
الإجراء trasconnection.setuserName (اسم المستخدم: سلسلة) ؛
يبدأ
strlcopy (fparams.szusername ، pchar (اسم المستخدم) ، sizeof (fparams.szusername) - 1) ؛
نهاية؛
الإجراء trasconnection.freeandhangup ؛
يبدأ
إذا نشط ثم افصل ؛
حر؛
نهاية؛
وظيفة trasconnection.getRasentRies: TstringList ؛
var
Ren: مجموعة من RasentryName ؛
Ren98: مجموعة من RasentryName98 ؛
C ، L: عدد صحيح ؛
يبدأ
frasentries.clear ؛
ج: = 0 ؛
حالة fplatform من
ver_platform_win32_windows:
يبدأ
setLength (Ren98 ، 1) ؛
REN98 [0] .DWSIZE: = sizeof (rasentryName98) ؛
L: = sizeof (rasentryname98) ؛
إذا كان RasenumentRies (nil ، nil ، @ran98 [0] ، l ، c) = error_buffer_too_small ثم ابدأ
setLength (Ren ، C) ؛
RasenumentRies (nil ، nil ، @ren98 [0] ، @l ، c) ؛
نهاية؛
بينما C> 0 تبدأ
frasentries.add (سلسلة (Ren98 [c - 1] .SzentryName)) ؛
ديسمبر (ج) ؛
نهاية؛
setLength (Ren98 ، 0) ؛
نهاية؛
ver_platform_win32_nt:
يبدأ
setLength (Ren ، 1) ؛
Ren [0] .dwsize: = sizeof (rasentryName) ؛
L: = sizeof (rasentryName) ؛
إذا كان RasenumentRies (nil ، nil ، @ @ @0] ، l ، c) = error_buffer_too_small ثم ابدأ
setLength (Ren ، C) ؛
RasenumentRies (nil ، nil ، @rren [0] ، l ، c) ؛
نهاية؛
بينما C> 0 تبدأ
FrasentRies.Add (سلسلة (Ren [C - 1] .SzentryName)) ؛
ديسمبر (ج) ؛
نهاية؛
setLength (Ren ، 0) ؛
نهاية؛
نهاية؛
إذا frasentries.count> 0 ثم internname: = frasentries.strings [0] ؛
النتائج: = FrasentRies ؛
نهاية؛
مُنشئ trasconnection.create ؛
var
OS: OsversionInfoa ؛
يبدأ
ورث
os.dwosversionInfosize: = sizeof (osversionInfoa) ؛
getVersionEx (OS) ؛
fplatform: = os.dwplatformid ؛
frasentries: = tstringList.create ؛
getRasentries
نهاية؛
Destructor Trasconnection.destroy ؛
يبدأ
frasentries.free ؛
ورث
نهاية؛
الإجراء trasconnection.createSentry ؛
يبدأ
rascreatephoneBookentry (application.handle ، nil) ؛
نهاية؛
الإجراء trasconnection.deletRasentry (AentryName: String) ؛
var
أنا: عدد صحيح.
يبدأ
i: = frasentries.indexof (aentryName) ؛
إذا كنت = -1 ثم الخروج ؛
frasentries.delete (i) ؛
إذا كان AentryName = intplingname ثم
إذا كانت frasentries.count> 0 ثم إدخال: = frasentries.strings [0]
else EntplingName: = '' ؛
rasdeleteentry (nil ، pchar (aentryname)) ؛
نهاية؛
بيان API:
وظيفة Rasdial (
lprasdialextensions: prasdialextensions ؛
LpszPhoneBook: lpctstr ؛
lprasdialparams: lprasdialparams ؛
dwnotifiertype: dword ؛
lpvnotifier: مؤشر ؛
lphrasconn: lphrasconn): dword ؛
stdcall ؛
وظيفة Rashangup (Rasconn: Hrasconn): Dword ؛
stdcall ؛
وظيفة rasgetentrydialparams (
LpszPhoneBook: lpctstr ؛
lprasdialparams: lprasdialparams ؛
LPFPASSWORD: LPBOOL): DWORD ؛
stdcall ؛
وظيفة rasenumentries (
محفوظة: LPCTSTR ؛
LpszPhoneBook: lpctstr ؛
lprasentryname: lprasentryname ؛
LPCB: LPDWORD ؛
LPCentRies: LPDWORD): DWORD ؛
stdcall ؛
الوظيفة rasedItPhoneBookentry (
hwnd: hwnd ؛
LpszPhoneBook: lpctstr ؛
lpszentryname: lpctstr): dword ؛
stdcall ؛
وظيفة rasgetentryproperties (
LpszPhoneBook: lpctstr ؛
LPSZENTRY: LPCTSTR ؛
lprasentry: lprasentry ؛
lpdwentryinfosize: lpdword ؛
LPBDeviceInfo: pbyte ؛
LPDWDeviceInfosize: LPDWORD): DWORD ؛
stdcall ؛
وظيفة rassetentryproperties (
LpszPhoneBook: lpctstr ؛
LPSZENTRY: LPCTSTR ؛
lprasentry: lprasentry ؛
dwentryinfosize: dword ؛
LPBDeviceInfo: pbyte ؛
dwDeviceInfosize: dword): dword ؛
stdcall ؛
وظيفة RasenumConnections (
Lprasconn: Lprasconn ؛
LPCB: LPDWORD ؛
LPCConnections: LPDWORD): DWORD ؛
stdcall ؛
وظيفة RasenumDevices (
lprasdevinfo: lprasdevinfo ؛
LPCB: LPDWORD ؛
LPCDevices: LPDWORD): DWORD ؛
stdcall ؛
وظيفة rascreatephonebookentry (
مقبض: HWND ؛
stdcall ؛
وظيفة rasdeleteentry (
LpszPhoneBook: Pchar ؛
Lpszentry: Pchar): Dword ؛
stdcall ؛