Şimdi Ara

Delphide ip adresi ogrenme?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
1.372
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Bir makinanin ethernet kartini var mi yok mu kontrol etmek, varsa MAC adresini ve IP adresini ogrenmek istiyorum. Bunu delphi ile nasil yaparim.



  • http://www.programlama.com/sys/c2html/view.php3?DocID=1891

    Buradaki chat programını incelersen sanırım soruna cevap olur.TclientSocket bileşeni ile Local Ip kontrol edebilirsin !

    Kolay gelsin...
  • tcpclient koyarak forma oradan alabilirsin ama bunlarla uğraşmak istemezsin.extra component extra byte demek:)

    uses Winsock;

    function DetectHostIP(var IP: string): Boolean;
    var
    wsdata : TWSAData;
    hostName : array [0..255] of char;
    hostEnt : PHostEnt;
    addr : PChar;
    begin
    WSAStartup ($0101, wsdata);
    try
    gethostname (hostName, sizeof (hostName));
    hostEnt := gethostbyname (hostName);
    if Assigned (hostEnt) then
    if Assigned (hostEnt^.h_addr_list) then begin
    addr := hostEnt^.h_addr_list^;
    if Assigned (addr) then begin
    IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
    byte (addr [1]), byte (addr [2]), byte (addr [3])]);
    Result := True;
    end
    else
    Result := False;
    end
    else
    Result := False
    else begin
    Result := False;
    end;
    finally
    WSACleanup;
    end
    end;

    // örnek:
    procedure TForm1.Button1Click(Sender: TObject);
    var IPadd: string;
    begin
    if DetectHostIP(IPadd) then Label1.Caption := Ipadd
    else Label1.Caption := 'Ip alınamadi';
    end;


    ----------------------------------------------------
    //direct default mac adresini verir aktif kartın.
    uses NB30;

    function GetMACAdress: string;
    var
    NCB: PNCB;
    Adapter: PAdapterStatus;

    URetCode: PChar;
    RetCode: char;
    I: integer;
    Lenum: PlanaEnum;
    _SystemID: string;
    TMPSTR: string;
    begin
    Result := '';
    _SystemID := '';
    Getmem(NCB, SizeOf(TNCB));
    Fillchar(NCB^, SizeOf(TNCB), 0);

    Getmem(Lenum, SizeOf(TLanaEnum));
    Fillchar(Lenum^, SizeOf(TLanaEnum), 0);

    Getmem(Adapter, SizeOf(TAdapterStatus));
    Fillchar(Adapter^, SizeOf(TAdapterStatus), 0);

    Lenum.Length := chr(0);
    NCB.ncb_command := chr(NCBENUM);
    NCB.ncb_buffer := Pointer(Lenum);
    NCB.ncb_length := SizeOf(Lenum);
    RetCode := Netbios(NCB);

    i := 0;
    repeat
    Fillchar(NCB^, SizeOf(TNCB), 0);
    Ncb.ncb_command := chr(NCBRESET);
    Ncb.ncb_lana_num := lenum.lana[I];
    RetCode := Netbios(Ncb);

    Fillchar(NCB^, SizeOf(TNCB), 0);
    Ncb.ncb_command := chr(NCBASTAT);
    Ncb.ncb_lana_num := lenum.lana[I];
    // Must be 16
    Ncb.ncb_callname := '* ';

    Ncb.ncb_buffer := Pointer(Adapter);

    Ncb.ncb_length := SizeOf(TAdapterStatus);
    RetCode := Netbios(Ncb);
    //---- calc _systemId from mac-address[2-5] XOR mac-address[1]...
    if (RetCode = chr(0)) or (RetCode = chr(6)) then
    begin
    _SystemId := IntToHex(Ord(Adapter.adapter_address[0]), 2) + '-' +
    IntToHex(Ord(Adapter.adapter_address[1]), 2) + '-' +
    IntToHex(Ord(Adapter.adapter_address[2]), 2) + '-' +
    IntToHex(Ord(Adapter.adapter_address[3]), 2) + '-' +
    IntToHex(Ord(Adapter.adapter_address[4]), 2) + '-' +
    IntToHex(Ord(Adapter.adapter_address[5]), 2);
    end;
    Inc(i);
    until (I >= Ord(Lenum.Length)) or (_SystemID <> '00-00-00-00-00-00');
    FreeMem(NCB);
    FreeMem(Adapter);
    FreeMem(Lenum);
    GetMacAdress := _SystemID;
    end;
    ------------------------------------------------------------------------------

    //hani oluryta birden fazla ethernet kartı vardır.
    uses
    NB30;


    type
    TAdapterStatus = record
    adapter_address: array [0..5] of char;
    filler: array [1..4 * SizeOf(char) + 19 * SizeOf(Word) + 3 * SizeOf(DWORD)] of
    Byte;
    end;

    THostInfo = record
    username: PWideChar;
    logon_domain: PWideChar;
    oth_domains: PWideChar;
    logon_server: PWideChar;
    end;{record}


    function IsNetConnect: Boolean;
    begin
    if GetSystemMetrics(SM_NETWORK) and $01 = $01 then Result := True
    else
    Result := False;
    end;{function}

    function AdapterToString(Adapter: TAdapterStatus): string;
    begin
    with Adapter do Result :=
    Format('%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x',
    [Integer(adapter_address[0]), Integer(adapter_address[1]),
    Integer(adapter_address[2]), Integer(adapter_address[3]),
    Integer(adapter_address[4]), Integer(adapter_address[5])]);
    end;{function}

    function GetMacAddresses(const Machine: string;
    const Addresses: TStrings): Integer;
    const
    NCBNAMSZ = 16; // absolute length of a net name
    MAX_LANA = 254; // lana's in range 0 to MAX_LANA inclusive
    NRC_GOODRET = $00; // good return
    NCBASTAT = $33; // NCB ADAPTER STATUS
    NCBRESET = $32; // NCB RESET
    NCBENUM = $37; // NCB ENUMERATE LANA NUMBERS
    type
    PNCB = ^TNCB;
    TNCBPostProc = procedure(P: PNCB);
    stdcall;
    TNCB = record
    ncb_command: Byte;
    ncb_retcode: Byte;
    ncb_lsn: Byte;
    ncb_num: Byte;
    ncb_buffer: PChar;
    ncb_length: Word;
    ncb_callname: array [0..NCBNAMSZ - 1] of char;
    ncb_name: array [0..NCBNAMSZ - 1] of char;
    ncb_rto: Byte;
    ncb_sto: Byte;
    ncb_post: TNCBPostProc;
    ncb_lana_num: Byte;
    ncb_cmd_cplt: Byte;
    ncb_reserve: array [0..9] of char;
    ncb_event: THandle;
    end;
    PLanaEnum = ^TLanaEnum;
    TLanaEnum = record
    Length: Byte;
    lana: array [0..MAX_LANA] of Byte;
    end;
    ASTAT = record
    adapt: TAdapterStatus;
    namebuf: array [0..29] of TNameBuffer;
    end;
    var
    NCB: TNCB;
    Enum: TLanaEnum;
    I: integer;
    Adapter: ASTAT;
    MachineName: string;
    begin
    Result := -1;
    Addresses.Clear;
    MachineName := UpperCase(Machine);
    if MachineName = '' then MachineName := '*';
    FillChar(NCB, SizeOf(NCB), #0);
    NCB.ncb_command := NCBENUM;
    NCB.ncb_buffer := Pointer(@Enum);
    NCB.ncb_length := SizeOf(Enum);
    if Word(NetBios(@NCB)) = NRC_GOODRET then
    begin
    Result := Enum.Length;
    for I := 0 to Ord(Enum.Length) - 1 do
    begin
    FillChar(NCB, SizeOf(TNCB), #0);
    NCB.ncb_command := NCBRESET;
    NCB.ncb_lana_num := Enum.lana[I];
    if Word(NetBios(@NCB)) = NRC_GOODRET then
    begin
    FillChar(NCB, SizeOf(TNCB), #0);
    NCB.ncb_command := NCBASTAT;
    NCB.ncb_lana_num := Enum.lana;
    StrLCopy(NCB.ncb_callname, PChar(MachineName), NCBNAMSZ);
    StrPCopy(@NCB.ncb_callname[Length(MachineName)],
    StringOfChar(' ', NCBNAMSZ - Length(MachineName)));
    NCB.ncb_buffer := PChar(@Adapter);
    NCB.ncb_length := SizeOf(Adapter);
    if Word(NetBios(@NCB)) = NRC_GOODRET then
    Addresses.Add(AdapterToString(Adapter.adapt));
    end;
    end;
    end;
    end;{function}


    //örnek kullnaım

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    GetMacAddresses('drowork',listbox1.Items)// drowork benim bilgisayar adı. tabi sende progrmadan kullanabilmen için önce bilgisayar adını alman gerekecek regeditten
    end;

    end.

    -----------------------------------------------------------------------------
    walal kart varmı yokmu nasıl alırsın kalıma gelemdi fakat
    bilgisayar bir ağa bağlımı değilmi buna bakarak anyalabilirisn kismende olsa

    if GetSystemmetrics(SM_NETWORK) and $01=$01 then
    ShowMessage('bir ağa bağlı')
    else
    ShowMessage('bir ağa bağlı değil veya ethernet adapter yok');




  • Maşallah gözümüz kod gördü Bence en mantıklı yöntem Component bulmak yada Bu kodları kullanarak sadece işini gören bir component yazmak olur gibi
  • Yapay Zeka’dan İlgili Konular
    irc de IP öğrenmek
    21 yıl önce açıldı
    Oyunun ıp adresini bulma
    13 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.