Форум: "WinAPI";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизRasAPI получить список номеров dial-up соединения Найти похожие ветки
← →
Дмитрий_05 (2005-12-11 10:56) [0]RasApi как получить список номеров соединения? Сделал вот как:
procedure TForm1.Button1Click(Sender: TObject);
var
R: Integer;
Fp: LongBool;
dwEntryInfoSize, dwDeviceInfoSize: LongInt;
EntryParam: TRasEntry;
dParam : TRasDialParams;
begin
FillChar(dParam, SizeOf(TRasDialParams), 0);
dwEntryInfoSize := SizeOf(TRasEntry);
dwDeviceInfoSize := 0;
with dParam do
begin
dwSize := SizeOf(TRasDialParams);
StrPCopy(szEntryName, "MTU");
end;
R := RasGetEntryDialParams(nil, dParam, Fp);
EntryParam.dwSize := SizeOf(TRasEntry);
RasGetEntryPropertiesA(nil, dParam.szEntryName, @EntryParam, dwEntryInfoSize, nil, dwDeviceInfoSize);
if R = 0 then
begin
Edit2.Text := dParam.szUserName;
Edit3.Text := dParam.szPassword;
Edit4.Text := dParam.szPhoneNumber;
end;
end;
В соединении "MTU" несколько телефонов, так вот у меня ниодного не показывается в Edit4.Text
← →
Набережных С. © (2005-12-11 11:56) [1]
> Дмитрий_05
Возможно, дело в этом:
> dwEntryInfoSize := SizeOf(TRasEntry);
> RasGetEntryPropertiesA(nil, dParam.szEntryName, @EntryParam,
> dwEntryInfoSize, nil, dwDeviceInfoSize);
From MSDN:
lpdwEntryInfoSize
[in, out] Pointer to a variable that, on input, specifies the size, in bytes, of the lpRasEntry buffer.
On output, this variable receives the number of bytes required.
This parameter can be NULL if the lpRasEntry parameter is NULL.
To determine the required buffer size, call RasGetEntryProperties with lpRasEntry set to NULL and *lpdwEntryInfoSize set to zero. The function returns the required buffer size in *lpdwEntryInfoSize.
← →
Дмитрий_05 (2005-12-12 05:42) [2]а можно ли сделать чтобы все телефоны в соединении помещались, скажем в ListBox например...
← →
Дмитрий_05 (2005-12-12 13:19) [3]И еще такой вопрос... Я хочу сделать звонилку с перебором нескольких номеров, но чтоб на 98-ом тоже перебиралось... но там на сколько мне не изменяет память в соединениях нельзя добавлять больше одного номера... вот как лучше сделать хранение номеров, чтоб под 98-ым и XP шло... я конечно понимаю, можно хранить их в каком-нибудь файле.... но может в XP лучше будет в соединении дописывать?
← →
VirEx © (2005-12-14 17:28) [4]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TMibIfRow = packed record
wszName : array[0..255] of WideChar;
dwIndex : DWORD;
dwType : DWORD;
dwMtu : DWORD;
dwSpeed : DWORD;
dwPhysAddrLen : DWORD;
bPhysAddr : array[0..7] of Byte;
dwAdminStatus : DWORD;
dwOperStatus : DWORD;
dwLastChange : DWORD;
dwInOctets : DWORD;
dwInUcastPkts : DWORD;
dwInNUCastPkts : DWORD;
dwInDiscards : DWORD;
dwInErrors : DWORD;
dwInUnknownProtos : DWORD;
dwOutOctets : DWORD;
dwOutUCastPkts : DWORD;
dwOutNUCastPkts : DWORD;
dwOutDiscards : DWORD;
dwOutErrors : DWORD;
dwOutQLen : DWORD;
dwDescrLen : DWORD;
bDescr : array[0..255] of Char;
end;
TMibIfArray = array [0..512] of TMibIfRow;
PMibIfRow = ^TMibIfRow;
PmibIfArray = ^TmibIfArray;
type
TMibIfTable = packed record
dwNumEntries : DWORD;//кол-во соединений
Table : TMibIfArray;
end;
PMibIfTable = ^ TMibIfTable;
var
Form1: TForm1;
GetIfTable:function(pIfTable: pMibIfTable; pdwSize:puLONG; bOrder:boolean):DWORD;stdcall;
//GetAdaptersInfo:function(buff,s:pointer):DWORD;stdcall;
Table : tMibIfTable;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
h:THandle;
i,Size:integer;
buff:array [0..1024] of byte;
begin
h := LoadLibrary("IPHLPAPI.DLL"); //Загружаем библиотеку
if h = 0 then Exit;
@GetIfTable := GetProcAddress(h, "GetIfTable");
Size:=SizeOf(Table);
GetIfTable(@Table, @Size, False );
memo1.Lines.Clear;
for i:=0 to Table.dwNumEntries do begin
memo1.Lines.Add(Table.Table[i].bDescr);
//Table.Table[i].dwIndex;
memo1.Lines.Add(inttostr(Table.Table[i].dwType));
{
Table.Table[i].dwMtu;
Table.Table[i].dwSpeed;
Table.Table[i].dwPhysAddrLen;
}
memo1.Lines.Add(format("MAC: %d.%d.%d.%d.%d.%d.%d.%d.",
[Table.Table[i].bPhysAddr[0],
Table.Table[i].bPhysAddr[1],
Table.Table[i].bPhysAddr[2],
Table.Table[i].bPhysAddr[3],
Table.Table[i].bPhysAddr[4],
Table.Table[i].bPhysAddr[5],
Table.Table[i].bPhysAddr[6],
Table.Table[i].bPhysAddr[7]
]));
{
Table.Table[i].dwAdminStatus;
Table.Table[i].dwOperStatus;
Table.Table[i].dwLastChange;
Table.Table[i].dwInOctets;
Table.Table[i].dwInUcastPkts;
Table.Table[i].dwInNUCastPkts;
Table.Table[i].dwInDiscards;
Table.Table[i].dwInErrors;
Table.Table[i].dwInUnknownProtos;
Table.Table[i].dwOutOctets;
Table.Table[i].dwOutUCastPkts;
Table.Table[i].dwOutNUCastPkts;
Table.Table[i].dwOutDiscards;
Table.Table[i].dwOutErrors;
Table.Table[i].dwOutQLen;
Table.Table[i].dwDescrLen;
}
memo1.Lines.Add("");
end;
FreeLibrary(h);
end;
end.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c