Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/24: Рейтинг темы: голосов - 24, средняя оценка - 4.63
pupushecka
29 / 29 / 1
Регистрация: 13.06.2011
Сообщений: 165
1

MAC-адрес

15.04.2012, 20:04. Просмотров 4450. Ответов 6
Метки нет (Все метки)

здраствуйте. помогите с вызовом функции. объявила тип:
Delphi
1
type TMAC = array [0..7] of Byte;
пишу функцию:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
function GetMAC(Value: TMAC; Length: DWORD): String;
  var
    i: Integer;
begin
  if Length = 0 then Result := '00-00-00-00-00-00'
    else
      begin
        Result := '';
        for i:= 0 to Length - 2 do
          Result := Result + IntToHex (Value[i], 2) + '-';
        Result := Result + IntToHex (Value[Length-1], 2);
      end;
end;
а как ее можно вызвать. она просит какие-то параметры?
пробую писать:
Delphi
1
Edit1.Text:=GetMAC();
, но нужны параметры. помогите пж.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 20:04
Ответы с готовыми решениями:

Mac адресс Wi Fi Ноутбука
Здравствуйте реализовываю программу которая будет показывать мак адресс wi fi...

Delphi под Mac OS X , возможно?
Можно ли программировать на маках на этом языке? Если да то в какой программе и...

Компиляция Delphi под Mac OS X?
Доброе время суток. Я хотел бы окончательно прояснить вопрос с компиляцией...

Подключение к устройству в сети по ip, mac или имени
подскажите как программно организовать подключение к устройству в сети по ip,...

Как узнать MAC-адреса компьютеров в сети?
Delphi: Как узнать МАК адреса компьютеров в сети ? Помогите

6
xNeKiToSx
330 / 83 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
16.04.2012, 13:02 2
вы ведь сами указали в функции парамерты
function GetMAC(Value: TMAC; Length: DWORD): String;
вот и указывайте 2 параметра Value: TMAC; Length: DWORD
1
БогДелфей
422 / 330 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
16.04.2012, 16:11 3
Функции SendARP не хватает
1
shilovec5377
29 / 54 / 12
Регистрация: 26.05.2011
Сообщений: 755
16.04.2012, 21:58 4
Цитата Сообщение от БогДелфей Посмотреть сообщение
Функции SendARP не хватает
а подскажите пж, что это за функция
1
БогДелфей
422 / 330 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
17.04.2012, 23:45 5
вот скопипастил с инета:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
unit Unit1;
 
interface
 
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Winsock, ExtCtrls;
 
const
 MAX_ADAPTER_ADDRESS_LENGTH = 6;
 
type
 TMacAddress = array[0..MAX_ADAPTER_ADDRESS_LENGTH - 1] of byte;
 
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 end;
 
 function SendARP(const DestIP, SrcIP: ULONG;
   pMacAddr: PULONG; var PhyAddrLen: ULONG): DWORD; stdcall; external 'IPHLPAPI.DLL';
 
var
 Form1: TForm1;
 
implementation
 
{$R *.dfm}
function GetMAC(Value: TMacAddress; Length: DWORD): String;
var
  I: Integer;
begin
   if Length = 0 then Result := '00-00-00-00-00-00' else
   begin
     Result := '';
     for i:= 0 to Length - 2 do
       Result := Result + IntToHex(Value[i], 2) + '-';
     Result := Result + IntToHex(Value[Length-1], 2);
   end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
 DestIP, SrcIP: ULONG;
 pMacAddr: TMacAddress;
 PhyAddrLen: ULONG;
begin
 DestIP := inet_addr('192.168.2.115');
 PhyAddrLen := 6;
 SendArp(DestIP, 0, @pMacAddr, PhyAddrLen);
 Caption := GetMAC(pMacAddr, PhyAddrLen);
end;
 
end.
1
pupushecka
29 / 29 / 1
Регистрация: 13.06.2011
Сообщений: 165
18.04.2012, 22:28  [ТС] 6
у меня чего-то выводит все ноли.
1
dxxxb
2 / 2 / 1
Регистрация: 12.03.2012
Сообщений: 40
19.04.2012, 14:29 7
есть еще такая ф-ия - определяет mac-адрес по IP компа
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const
  MAX_ADAPTER_ADDRESS_LENGTH = 7;
 
type
  // Так будет выглядеть МАС
  TMacAddress = array[0..MAX_ADAPTER_ADDRESS_LENGTH] of byte;
 
  // Это структура для единичного запроса
  TMibIPNetRow = packed record
    dwIndex         : DWORD;
    dwPhysAddrLen   : DWORD;
    bPhysAddr       : TMACAddress;  // Вот здесь и лежит МАС!!!
    dwAddr          : DWORD;
    dwType          : DWORD;
  end;
 
  TMibIPNetRowArray = array [0..512] of TMibIPNetRow;
 
  PTMibIPNetTable = ^TMibIPNetTable;
  TMibIPNetTable = packed record
    dwNumEntries    : DWORD;
    Table: TMibIPNetRowArray;
  end;
 
  {$EXTERNALSYM GetIpNetTable}
  function GetIpNetTable(pIpNetTable: PTMibIPNetTable;
    pdwSize: PULONG; bOrder: Boolean): DWORD; stdcall;
  function GetIpNetTable; external IPHLPAPI name 'GetIpNetTable';
 
implementation
 
function TOutputDataString.SetMacFromIP1(IP: string):string;
  // В качестве первого значения массив, второе значение,
  // размер данных в массиве
function GetMAC(AValue: TMacAddress; ALength: DWORD): String;
var
  I: Integer;
begin
  if ALength = 0 then
    Result := "00-00-00-00-00-00"
  else
  begin
    Result := '';
    for I:= 0 to ALength -2 do
      Result := Result + IntToHex(AValue[i], 2) + '-';
 
    Result := Result + IntToHex(AValue[ALength-1], 2);
  end;
end;
 
  // Получаем IP адрес
function GetDottedIPFromInAddr(const AInAddr: Integer): String;
begin
  Result := '';
  Result := IntToStr(FOURTH_IPADDRESS(AInAddr));
  Result := Result + '.' + IntToStr(THIRD_IPADDRESS(AInAddr));
  Result := Result + '.' + IntToStr(SECOND_IPADDRESS(AInAddr));
  Result := Result + '.' + IntToStr(FIRST_IPADDRESS(AInAddr));
end;
 
// Основная функция
var
  Table: TMibIPNetTable;
  Size: Integer;
  CatchIP: String;
  Err, I: Integer;
begin
  Result := '';
  Size := SizeOf(Table);                      // Ну тут все просто...
  Err := GetIpNetTable(@Table, @Size, False); // Выполняем...
  if Err = NO_ERROR then                     // Проверка на ошибку...
    // Теперь мы имеем таблицу из IP адресов и соответсвующих им MAC адресов
    for I := 0 to Table.dwNumEntries - 1 do     // Ищем нужный IP ...
    begin
      CatchIP := GetDottedIPFromInAddr(Table.Table[I].dwAddr);
      if CatchIP = IP then                      // И выводим его МАС ...
      begin
        Result := GetMAC(Table.Table[I].bPhysAddr, Table.Table[I].dwPhysAddrLen);
        Break;
      end;
    end;
end;
0
19.04.2012, 14:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2012, 14:29

Отобразить ip и mac адреса через cmd (Delphi 7)
есть команда в cmd которая отобразает ip адрес в сети и Mac адрес решил...

Ip адрес и порт
Здравствуйте. О проблеме: Недавно написал чат на сокетах. (Компоненты...

Что за адрес?
Всем привет!!! Я с помощью OllyDbg смотрю команду ассемблера некоторого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru