neostrada na usb a adres karty mac

0

Witajcie

Przeszukalem forum na etmat adresow karty mac
Znalazlem przyklady no ale zaden z nich nie pobiera adresu karty mac w wypadku osoby posiadajacej ( modem neostrady ) podlaczony przez USB do komputera.

Czy wiecie moze gdzie znajde przyklad kodu ktory mi ten adres wypisze lub pokaze poprzez show.

Bardzo bym prosil o adresy lub namiary bezposrednie do takich przykladow.

Dziekuje mam nadzieje ze pomozecie

0

A zwykły ipconfig /all nie wypisuje?

0

he ktos dowcipny sie zanalazl. Pewnie ze wypisuje ale jak te dane skierowac do programu zatem.

szukam dalej ... moze ktos podpowie...

0

LOL super

moze cos takiego

WinExec('C:\Windows\system32\cmd.exe /C ipconfig/all >> C:\All.txt',SW_Hide);
Application.ProcessMessages;
Memo1.Lines.LoadFromFile('C:\All.txt');
DeleteFile('C:\All.txt');

NOM a potem sobei znajde linijke i do zmiennej :-))

0

cmd.exe /C ipconfig/all >> C:\ustawienia_sieciowe.txt

0

Ha

wszystko fajnie tylko jak z tego wydobyc ta linijke co mnei najbardziej interesuje.
Czyli adres karty mac inaczej adres fizyczny.

Czy ktos ma jakis pomysl ?

0

a co w tym trudnego?
szukasz linijki w stylu

Adres fizyczny. . . . . . . . . . : 00-16-36-5A-12-4D
potem kopiujesz z niej wszystko co za znakiem dwukropka : w czym problem?

0

hmmm proste w mowie trudniesze w wykonaniu ale zobacze i poproboje z ta podpowiedzia.

0

Przechwycenie wyjścia konsoli jest proste:

function GetMACFromCommandLine():string;
var mac:string;
  function ExecuteConsole(Executable:PChar; CommandLine:PChar; Directory:PChar):boolean;
  const bufSize     = 256;
  var   readPipe    :THandle;
        writePipe   :THandle;
        security    :SECURITY_ATTRIBUTES;
        info        :STARTUPINFO;
        process     :PROCESS_INFORMATION;

        buf         :array[0..bufSize-1] of char;
        bytesRead   :DWord;
        text        :string;
        line        :string;
        newLinePos  :integer;
        res:integer;
  const ADRES = 'Adres fizyczny. . . . . . . . . . :';
  begin
  result:=FALSE;
  security.nLength:=sizeof(security);
  security.lpSecurityDescriptor:=nil;
  security.bInheritHandle:=TRUE;
  if CreatePipe(readPipe, writePipe, @security, 0) then
    begin
    ZeroMemory(@info, sizeof(info));
    with info do
      begin
      cb := sizeof( info );
      dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
      wShowWindow := SW_HIDE;
      hStdInput := 0;
      hStdOutput := writePipe;
      hStdError := writePipe;
      end;
    if CreateProcess(Executable, CommandLine, nil, nil, TRUE, 0, nil, Directory, info, process) then
      begin
      CloseHandle( writePipe );
      text:='';
      while ReadFile( readPipe, buf, bufSize, bytesRead, nil) do
        begin
        text:=text+buf;
          repeat
          newLinePos:=Pos(#13, text);
          if (newLinePos=0) then break;
          line:=copy(text,1, newLinePos-1);
          delete(text, 1, newLinePos);
          //'line' zawiera tu już pełną linię tekstu z wyjścia uruchomionego programu
          res:=Pos(ADRES, Line);
          if res>0 then
            mac:=Copy(line, res+Length(ADRES)+1, 17);

          until Application.Terminated;
        ZeroMemory(@buf, bufSize);
        end;
      result:=TRUE;
      end;
    CloseHandle( readPipe );
    end;
  end;
begin
result:='';
if ExecuteConsole('c:\windows\system32\ipconfig.exe', ' /all', nil) then
  result:=mac;
end;

Przykład użycia:

Caption:=GetMACFromCommandLine();

Kilka uwag: po pierwsze pobierze to MAC ostatniej znalezionej karty sieciowej (modem Neo jest widziany przecież jako normalna karta sieciowa). Po drugie - wcale taka zabawna metoda pobrania to nie jest, bo jest zależna choćby od wersji językowej systemu; Do pobrania MACa 'normalnie' wystarczy użyć zwykłe funkcje systemowe. One na pewno działają, tylko może nie potrafisz ich użyć.

0

Mam zrodla do poboru adresu mac niestety nie sprawdzaja sie gdy ktos ma neostrade podlaczona do kompa przez USB

wtedy adresu mac niechce pobrac.

Moze macie taki kod ktory mimo to pobierze ta dana ?

POszukalem tutaj na forum posty o mac ale z tych kodow co byly podane niestety zaden nie spelnia kryteriow odnosnie neostrady na usb.

Z tad dlatego myslalem o ipconfig.

Masz racje co do wersji jezykowych i tu znow pojawia sie problem bo bym musial znac wszystkie wersje by moc wylapac linijke kodu.

Czy ktos zna latwy sposob na pobranie takiej danej by tez to dzialalo z neostrada?
A moze cos w rejestrze jest zapisywane ?

Prosze o wskazowki bo potrzebuje tego a znaleŹĆ rozwiazania nie moge.

0

u mnie dziala na xp pl:
http://www.delphi3000.com/articles/article_1942.asp?SK=

function CoCreateGuid(var guid: TGUID): HResult; stdcall; far external 'ole32.dll';

implementation

{$R *.dfm}



function Get_MACAddress: string;
var
  g : TGUID;
  i : Byte;
  r : Word;
begin
  Result := '';
  CoCreateGUID(g);
  for i := 2 to 7 do
    Result := Result + IntToHex(g.D4[i], 2);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Get_MACAddress);
end;
0

bzdury, nie ma znaczenia czy to usb, wlan czy cokolwiek innego. swojego czasu napisałem program (http://home.elka.pw.edu.pl/~lfronczy/mac.zip) który pobiera wszystkie dane nt. sieciówek, także adres MAC, i działa bezproblemowo od w95 do w2k3, także na neostradzie. polecam lekturę msdn dotyczącą funkcji GetAdaptersInfo().

1 użytkowników online, w tym zalogowanych: 0, gości: 1