Verfasst: 22.10.2003, 12:45
Hallo,
habe deinen C++ mal schnell in Delphi umgesetzt, läuft unter 2000 SP 3 einwandfrei.?(
Hier der Code:
function RasEnumEntriesA(
reserved: PAnsiChar;
lpszPhoneBook: PAnsiChar;
entrynamesArray: LPRasEntryName;
var lpcb: DWORD;
var lpcEntries: DWORD
): DWORD; stdcall; external \'rasapi32.dll\';
procedure TForm1.Button1Click(Sender: TObject);
Var
cb: DWORD; // size in bytes of buffer
cEntries: DWORD; // Anzahl der Einträge
nRet: DWORD;
pszPhonebook : PCHAR;
RasEntryName : LPRasEntryName;
begin
pszPhonebook := NIL;
cb := sizeof(TRasEntryNameA);
RasEntryName := LPRasEntryName(GlobalAlloc(GPTR, cb));
RasEntryName.dwSize := sizeof(TRasEntryNameA);
Repeat
nRet := RasEnumEntriesA(NIL, pszPhonebook, RasEntryName, cb, cEntries);
if nRet = ERROR_BUFFER_TOO_SMALL Then
begin
GlobalFree(DWORD(RasEntryName));
RasEntryName := LPRasEntryName(GlobalAlloc(GPTR, cb));;
RasEntryName.dwSize := sizeof(TRasEntryNameA);
end;
Until nRet = ERROR_SUCCESS;
ShowMessage ( IntToStr(cEntries) + \' \' + RasEntryName.szEntryName); // nur 1. Eintrag zeigen
GlobalFree(DWORD(RasEntryName));
end;
--
mirko
habe deinen C++ mal schnell in Delphi umgesetzt, läuft unter 2000 SP 3 einwandfrei.?(
Hier der Code:
function RasEnumEntriesA(
reserved: PAnsiChar;
lpszPhoneBook: PAnsiChar;
entrynamesArray: LPRasEntryName;
var lpcb: DWORD;
var lpcEntries: DWORD
): DWORD; stdcall; external \'rasapi32.dll\';
procedure TForm1.Button1Click(Sender: TObject);
Var
cb: DWORD; // size in bytes of buffer
cEntries: DWORD; // Anzahl der Einträge
nRet: DWORD;
pszPhonebook : PCHAR;
RasEntryName : LPRasEntryName;
begin
pszPhonebook := NIL;
cb := sizeof(TRasEntryNameA);
RasEntryName := LPRasEntryName(GlobalAlloc(GPTR, cb));
RasEntryName.dwSize := sizeof(TRasEntryNameA);
Repeat
nRet := RasEnumEntriesA(NIL, pszPhonebook, RasEntryName, cb, cEntries);
if nRet = ERROR_BUFFER_TOO_SMALL Then
begin
GlobalFree(DWORD(RasEntryName));
RasEntryName := LPRasEntryName(GlobalAlloc(GPTR, cb));;
RasEntryName.dwSize := sizeof(TRasEntryNameA);
end;
Until nRet = ERROR_SUCCESS;
ShowMessage ( IntToStr(cEntries) + \' \' + RasEntryName.szEntryName); // nur 1. Eintrag zeigen
GlobalFree(DWORD(RasEntryName));
end;
--
mirko