Vor einiger Zeit schrieb ich eine Klasse, um Windows zu wählen Das Lesen der Windows-Dial-up-Verbindungsliste, das Wählen, das Erstellen/Löschen von Verbindungen und kann für 98/2000/XP verwendet werden. Wenn Sie Zeit haben, schreiben Sie es in Zukunft als Komponente und fügen Sie Unterstützung für das Wählen von Ereignissen hinzu.
Verwendung
Ras, Klassen, Systeme, Strudel, Fenster, Formen;
Typ
ErasError = Ausnahme;
Typ
Trasconnection = Klasse
Privat
FPlatform: Ganzzahl;
Fconnected: boolean;
Frasentries: TStringList;
Frasconn: Hrasconn;
FPARAMS: RASDIALPARAMS;
Ferrno: Ganzzahl;
Funktion GetPassword: String;
Prozedur SetPassword (Passwort: String);
Funktion getPhoneno: String;
Prozedur SetPhoneno (Nummer: String);
Funktion getCallback: String;
Prozedur setCallback (Nummer: String);
Funktion getdomain: String;
Prozedur SetDomain (Domain: String);
Funktion GetUnername: String;
procedure setUnername (Benutzername: String);
Funktion GetEnterryname: String;
Prozedur SetEnterryName (Eintrag: String);
Funktion getConnected: boolean;
Verfahren setConnected (avalue: boolean);
Funktion getRASEntries: TStringList;
öffentlich
Eigenschaft Rasentries: TStringList Read GetraSentries;
Eigenschaft PhoneNumber: String Read GetPhoneno Write setPhoneno;
Eigenschaft CallbackNumber: String lesen GetCallback Write setCallback;
Eigenschaftsdomäne: String Read GetDomain Write SetDomain;
Immobilieneintragsname: String Lesen Sie GetEnterryName schreiben SetEnterryName;
Eigenschaft Benutzername: String Lesen Sie Getusername schreiben setUnername;
Eigenschaft Passwort: String Lesen Sie GetPassword Write SetPassword;
Eigenschaft aktiv: boolean read getConnected Write setConnected;
Verfahren Connect;
Verfahren Trennung;
Funktion getErrorCode: Ganzzahl;
Verfahren FreeandHangup;
Konstruktor erstellen;
Zerstörer zerstören;
Verfahren CreateRaSentry;
Prozedur DeleterasEntry (Aentryname: String);
// Funktion getRrorraceson: Ganzzahl;
Ende;
Durchführung
{Trasconnection}
Verfahren Trasconnection.Connect;
var
I: Ganzzahl;
S: String;
Beginnen
Fparams.dwsize: = sizeof (rasdialParams);
i: = rasdial (nil, nil, @fparams, 0, nil, @Frasconn);
Wenn ich <> 0 anfange
Ferrno: = i;
Fall I von
691: S: = 'Identitätsüberprüfung fehlgeschlagen!';
692: s: = 'Portöffnung fehlgeschlagen!';
676: S: = 'Die Zeile ist beschäftigt, bitte warten und noch einmal wählen!';
677: S: = 'Sprachantwortfehler!';
678: S: = 'Nein Antwort!';
679: S: = 'kein Trägersignal!';
680: s: = 'kein Wählton!';
anders
S: = 'Unbekannter Fehler!';
Ende;
Rashangup (Frasconn);
Erhöhen Erstein.Create (s);
Ende
sonst fconnected: = wahr;
Ende;
Verfahren Trasconnection.disconnect;
Beginnen
Rashangup (Frasconn);
Frasconn: = 0;
Ende;
Funktion trasconnection.getCallback: String;
Beginnen
Ergebnis: = String (fparams.szcallbackNumber);
Ende;
Funktion trasconnection.getConnected: boolean;
var
Ich, Len, num: Ganzzahl;
X: Array von Rasconn;
Beginnen
Ergebnis: = falsch;
SetLength (x, 1);
x [0] .dwsize: = sizeof (rasconn);
len: = x [0] .dwsize;
Num: = 0;
RasenumConnections (@x [0], @len, @num);
Wenn num> 0 dann beginnen
SetLength (x, num);
x [0] .dwsize: = sizeof (rasconn);
Len: = x [0] .DWSIZE;
RasenumConnections (@x [0], @len, @num);
für i: = 1 zu num tun
Wenn StrComp (x [i - 1] .Szentryname, pchar (Eintragsname)) = 0 beginnen
Fasconn: = x [i - 1] .hrasconn;
Ergebnis: = wahr;
Brechen;
Ende;
Ende;
SetLength (x, 0);
Ende;
Funktion Trasconnection.getDomain: String;
Beginnen
Ergebnis: = String (fparams.szdomain);
Ende;
Funktion Trasconnection.GetErrorCode: Integer;
Beginnen
Ergebnis: = ferrno;
Ende;
Funktion trasconnection.getPassword: String;
Beginnen
Ergebnisse: = '*********';
Ende;
Funktion trasconnection.getPhoneno: String;
Beginnen
Ergebnis: = String (fparams.szphonenumber);
Ende;
Funktion trasconnection.getEnryname: String;
Beginnen
Ergebnis: = String (fparams.szentryname);
Ende;
Funktion Trasconnection.getUserName: String;
Beginnen
Ergebnis: = String (fparams.szuername);
Ende;
Prozedur Trasconnection.SetCallback (Nummer: String);
Beginnen
Strlcopy (fparams.szcallbackNumber, pchar (number), sizeof (fparams.szcallbackNumber) - 1);
Ende;
Verfahren Trasconnection.setConnected (Avalue: boolean);
Beginnen
Wenn Sie Avalue und nicht erhalten, sollten Sie eine Verbindung herstellen
Ansonsten, wenn nicht, wenn nicht, und dann die Verbindung abzusetzen, dann trennen Sie die Verbindung;
Ende;
Verfahren Trasconnection.SetDomain (Domäne: String);
Beginnen
Strlcopy (fparams.szdomain, pchar (domäne), sizeof (fparams.szdomain) - 1);
Ende;
Prozedur Trasconnection.SetPassword (Kennwort: String);
Beginnen
Strlcopy (fparams.szpassword, pChar (Passwort), sizeof (fparams.szpassword) - 1);
Ende;
Prozedur Trasconnection.Setphoneno (Nummer: String);
Beginnen
Strlcopy (fparams.szphonenumber, pchar (number), sizeof (fparams.szphonenumber) - 1);
Ende;
Prozedur Trasconnection.SetEnryname (Eintrag: String);
var
I: Ganzzahl;
Beginnen
für i: = 0 bis frasentries.count - 1 tun
Wenn Frasentries.Strings [i] = Eintrag dann beginnen
Strcopy (fparams.szentryname, pchar (Eintrag));
Ausfahrt;
Ende;
Strcopy (fparams.szentryname, '');
Ende;
Prozedur Trasconnection.Setusername (Benutzername: String);
Beginnen
Strlcopy (fparams.szuername, pchar (Benutzername), sizeof (fparams.szusername) - 1);
Ende;
Verfahren Trasconnection.FreeandHangup;
Beginnen
Wenn aktiv, dann trennen Sie die Verbindung;
Frei;
Ende;
Funktion trasconnection.getRASentries: TStringList;
var
Ren: Array von Rasentryname;
Ren98: Array von Rasentryname98;
C, L: Ganzzahl;
Beginnen
Frasentries.clear;
C: = 0;
Fall fplatform von
Ver_Platform_win32_Windows:
Beginnen
setLength (ren98, 1);
ren98 [0] .dwsize: = sizeof (rasentryname98);
L: = sizeof (rasentryname98);
Wenn Rasenumentries (NIL, NIL, @Ren98 [0], @L, @C) = ERRAGE_BUFFER_TOO_SMALL Geben Sie an, dann beginnen Sie
setLength (ren, c);
Rasenumentries (Nil, Nil, @ren98 [0], @l, @C);
Ende;
während c> 0 beginnt
Frasentries.add (String (ren98 [c - 1] .Szentryname));
Dec (c);
Ende;
SetLength (ren98, 0);
Ende;
Ver_PLATFORM_WIN32_NT:
Beginnen
SetLength (Ren, 1);
ren [0] .dwsize: = sizeof (rasentryname);
L: = sizeof (rasentryname);
Wenn Rasenumentries (nil, nil, @ren [0], @l, @c) = error_buffer_too_small dann beginnen
setLength (ren, c);
Rasenumentries (Nil, Nil, @ren [0], @l, @C);
Ende;
während c> 0 beginnt
Frasentries.add (String (ren [c - 1] .szentryname));
Dec (c);
Ende;
SetLength (ren, 0);
Ende;
Ende;
wenn frasentries.count> 0 dann einstiegName: = frasentries.strings [0];
Ergebnisse: = Frasentries;
Ende;
Konstruktor -Trasconnection.create;
var
OS: OsversionInfoa;
Beginnen
geerbt;
OS.DWOSVERSIONINFOSIZE: = sizeof (OsversionInfoa);
GetversionEx (OS);
FPlatform: = os.dwPlatformId;
Frasentries: = tstringlist.create;
GetraSentries;
Ende;
Destruktor -Trasconnection.Destroy;
Beginnen
Frasentries.Free;
geerbt;
Ende;
Verfahren Trasconnection.CreateRaSentry;
Beginnen
Rascreatephonebookentry (application.handle, nil);
Ende;
Prozedur Trasconnection.DeleterasEntry (Aentryname: String);
var
I: Ganzzahl;
Beginnen
i: = frasentries.indexof (Aentryname);
Wenn i = -1 dann beenden;
Frasentries.delete (i);
Wenn aEentryNname = Eintragsname dann
Wenn frasentries.count> 0 dann einstiegName: = frasentries.strings [0]
sonst Eintragsname: = '';
RasdeleteEntry (Nil, pchar (Aentryname));
Ende;
API -Aussage:
Funktion rasdial (
LPRASDIIELEXTENSIONEN: PrasDialexTensions;
LPSZPhoneBook: LPCTStr;
LPRASDIALPARAMS: LPRASDIALPARAMS;
dwnotifiertype: dword;
lpvnotifier: Zeiger;
lphrasconn: lphrasconn): dword;
stdcall;
Funktion Rashangup (Rasconn: Hrasconn): DWORD;
stdcall;
Funktion rasgetEntrydialparams (
LPSZPhoneBook: LPCTStr;
LPRASDIALPARAMS: LPRASDIALPARAMS;
LPFPassword: lpBool): DWORD;
stdcall;
Funktion Rasenumentries (
Reserviert: LPCTStr;
LPSZPhoneBook: LPCTStr;
LPRASEnTryname: lprasentryname;
LPCB: LPDWORD;
LPCentries: LPDWORD): DWORD;
stdcall;
Funktion RaseditphoneBookEntry (
hwnd: hwnd;
LPSZPhoneBook: LPCTStr;
lpszentryname: lpctstr): dword;
stdcall;
Funktion RasgetEntryProperties (
LPSZPhoneBook: LPCTStr;
lpszentry: lpctstr;
lprasentry: lprasentry;
lpdwentryInfosize: lpdWord;
lpbDeviceInfo: pByte;
lpdwDeviceInfosize: LPDWORD): DWORD;
stdcall;
Funktion RassetEntryProperties (
LPSZPhoneBook: LPCTStr;
lpszentry: lpctstr;
lprasentry: lprasentry;
DwentryInfosize: DWORD;
lpbDeviceInfo: pByte;
DWDeviceInfosize: DWORD): DWORD;
stdcall;
Funktion RasenumConnections (
lpasconn: lpasconn;
LPCB: LPDWORD;
lpcconnections: LPDWORD): DWORD;
stdcall;
Funktion RasenumDevices (
LPRASDEVINFO: LPRASDEVINFO;
LPCB: LPDWORD;
LPCDevices: LPDWORD): DWORD;
stdcall;
Funktion Rascreatephonebookentry (
Handle: hwnd;
stdcall;
Funktion RasdeleteEntry (
LPSZPhoneBook: pchar;
lpszentry: pchar): dword;
stdcall;