|
#1
|
|||
|
|||
Как получить имя и ip адаптера?
Уже нашел Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const MAX_ADAPTER_NAME_LENGTH = 256; MAX_ADAPTER_DESCRIPTION_LENGTH = 128; MAX_ADAPTER_ADDRESS_LENGTH = 8; IPHelper = 'iphlpapi.dll'; // Типы адаптеров MIB_IF_TYPE_OTHER = 1; MIB_IF_TYPE_ETHERNET = 6; MIB_IF_TYPE_TOKENRING = 9; MIB_IF_TYPE_FDDI = 15; MIB_IF_TYPE_PPP = 23; MIB_IF_TYPE_LOOPBACK = 24; MIB_IF_TYPE_SLIP = 28; type IP_ADDRESS_STRING = record S: array [0..15] of Char; end; IP_MASK_STRING = IP_ADDRESS_STRING; PIP_MASK_STRING = ^IP_MASK_STRING; PIP_ADDR_STRING = ^IP_ADDR_STRING; IP_ADDR_STRING = record Next: PIP_ADDR_STRING; IpAddress: IP_ADDRESS_STRING; IpMask: IP_MASK_STRING; Context: DWORD; end; time_t = Longint; PIP_ADAPTER_INFO = ^IP_ADAPTER_INFO; IP_ADAPTER_INFO = record Next: PIP_ADAPTER_INFO; ComboIndex: DWORD; AdapterName:array [0..MAX_ADAPTER_NAME_LENGTH + 3] of ansiChar; Description: array [0..MAX_ADAPTER_DESCRIPTION_LENGTH + 3] of ansiChar; AddressLength: UINT; Address: array [0..MAX_ADAPTER_ADDRESS_LENGTH - 1] of BYTE; Index: DWORD; Type_: UINT; DhcpEnabled: UINT; CurrentIpAddress: PIP_ADDR_STRING; IpAddressList: IP_ADDR_STRING; GatewayList: IP_ADDR_STRING; DhcpServer: IP_ADDR_STRING; HaveWins: BOOL; PrimaryWinsServer: IP_ADDR_STRING; SecondaryWinsServer: IP_ADDR_STRING; LeaseObtained: time_t; LeaseExpires: time_t; end; TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; {S} function GetAdaptersInfo(pAdapterInfo: PIP_ADAPTER_INFO;var pOutBufLen: ULONG): DWORD; stdcall; external IPHelper; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var TmpPointer, InterfaceInfo: PIP_ADAPTER_INFO; IP: PIP_ADDR_STRING; Len: ULONG; begin if GetAdaptersInfo(nil, Len) = ERROR_BUFFER_OVERFLOW then begin GetMem(InterfaceInfo, Len); if GetAdaptersInfo(InterfaceInfo, Len) = ERROR_SUCCESS then begin TmpPointer := InterfaceInfo; repeat Memo1.Lines.Add(string(TmpPointer^.Description)+' '+string(TmpPointer^.IpAddressList.IpAddress.S)+' '+string(TmpPointer^.AdapterName)); TmpPointer := TmpPointer.Next; until TmpPointer = nil; end; FreeMem(InterfaceInfo); end; end; end. Но у меня имена адаптеров выдает так: {7798C830-98F3-44F5-A665-DEF4B7FDCB46}. Их можно расшифровать? Последний раз редактировалось M.A.D.M.A.N., 28.04.2014 в 07:59. |
#2
|
||||
|
||||
Больше на GUID похоже.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
Код:
var AdapterInfo: PIP_ADAPTER_INFO; Next: PIP_ADAPTER_INFO; pOutBufLen: ULONG; ipstats: MIB_IPSTATS; tcpstats: MIB_TCPSTATS; begin pOutBufLen:=0; if GetAdaptersInfo(nil, @pOutBufLen)=ERROR_BUFFER_OVERFLOW then begin AdapterInfo:=GetMemory(pOutBufLen); try if GetAdaptersInfo(AdapterInfo, @pOutBufLen)=ERROR_SUCCESS then begin Next:=AdapterInfo; while Next<>nil do begin Memo1.Lines.Add('AdapterName: '+Next^.AdapterName); Memo1.Lines.Add('Description: '+Next^.Description); Memo1.Lines.Add('IpAddress: '+Next^.IpAddressList.IpAddress); Memo1.Lines.Add(''); Next:=Next^.Next; end; end; finally FreeMemory(AdapterInfo); end; end else ShowMessage(SysErrorMessage(GetLastError)); end; Пишу программы за еду. __________________ |
#4
|
|||
|
|||
Смена IP
Что б не плодить темы, спрошу тут.
Есть задача програмно менять ip c компа. Вопрос в какую сторону копать. Я так понимаю в случае использования DHCP надо адрес сбрасывать и запрашивать новый? |
#5
|
||||
|
||||
Цитата:
А если серьёзно - тема больше похожа на какого-то спам-бота. В нормальных приложениях нет смысла менять ip. jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
||||
|
||||
да, Кррррасный, надо подменять DHCP.
Пишу программы за еду. __________________ |
#7
|
||||
|
||||
А с чего вы решили, что DHCP-сервер вам выдаст обязательно новый ip? Если он настроен на ваш mac завязанный на конкретный ip то другого вы не получите. А если вы подмените mac то DHCP может вообще отвергнуть ваш запрос на получение ip.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Redddd (17.05.2014)
|
#8
|
|||
|
|||
Цитата:
Благодарю |