Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: работа с библиотекой packet.dll  (Прочитано 6107 раз)
0 Пользователей и 1 Гость смотрят эту тему.
newmen
Интересующийся

ru
Offline Offline

« : 02-03-2005 06:28 » 

Друзья, может кто знает?
Вот загрузил себе последнюю библиотеку 3.1.0.24 (wpcap).. на win XP (1 сетевая карта, включена в ЛВС)
Так у меня даже список адаптеров не определяется (PacketGetAdapterNames). Нашел в сети пример, но он тоже не пашет

Пробовал менять параметры (передаваемые), так у меня либо ф-я возвращает false, либо - какие-то "иероглифы"

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

ADAPTER_DESC = packed record
  szAdapterName:     array[0..5] of Char;
  szAdapterDesc:     array[0..MAX_PATH-1] of Char;
end;

var
  Form1: TForm1;

implementation

function PacketGetAdapterNames(plistAdapters:Pchar;var PlistAdLen:cardinal;var max:PUINT):boolean; stdcall; external 'packet.dll';

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  List:array[0..3] of ADAPTER_DESC;
  //list:pchar;
  ListLen:cardinal;
  max:puint;
  hh:boolean;
  i:integer;
begin
  ListLen:=4;
  hh:=PacketGetAdapterNames(@list,ListLen,max);
  if not hh then
    begin
      ShowMessage('Облом №:'+inttostr(GetLastError));
      exit;
    end;
 for i:=0 to 3 do begin
  memo1.clear;
  //Memo1.Lines.add(strpas(list[i].szAdapterName));
  Memo1.Lines.add(strpas(list[i].szAdapterDesc));
  //Memo1.Lines.add(copy(list[i].szAdapterDesc[0],0,MAX_PATH-1));
  Memo1.Lines.add('=>');
                  end; //for i
  Memo1.Lines.add(inttostr(max^));
end;
end.

Подскажите, пожалуйста, я уж не знаю что делать..
« Последнее редактирование: 03-12-2007 18:18 от Алексей1153++ » Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 03-03-2005 09:18 » 

мне всегда казалось, что PacketGetAdapterName возвращает список адаптеров в одной строке, разделённой пробелами, и длинну это строки вторым параметром. в 3.0 третьего параметра не было вообще. неужто так синтаксис изменился?
Записан

newmen
Интересующийся

ru
Offline Offline

« Ответ #2 : 03-03-2005 12:03 » 

Вот я тоже где-то старые примеры находил там указывали 2 параметра, но во многих статьях написано, что третий параметр возвращает    число = количеству установленных адаптеров. Я пробовал, как с ним так и без него - один результат.
А с первым я вообще плохо понимаю, как такая передача может работать... но опять же пишут, что
szAdapterName - по этому значению будет происходить обращение к адаптеру (т.е. своеобразный дескриптор)
szAdapterDesc  - это описание адаптера

А вторым параметром, якобы, указывается размер массива..
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines