[ Príspevkov: 21 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
NapísalOffline : 16.02.2012 13:17 | Zisťovanie MAC adresy (Delphi)

Zdravím,.. prosím Vás potreboval by som pomôcť s jednou takou vecou. Ako zistím MAC adresy a aj IP adresy iných počítačov, ktoré sú v sieti LAN??

Na internete o tom neviem nič poriadne nájsť. Začínam byť z toho zúfalý.


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 16.02.2012 17:47 | Zisťovanie MAC adresy (Delphi)

Urcite existuju aj nejake komponenty, no da sa to spravit aj pomocou winsock unitu. Funkcia, ktora vypise nazvy vsetkych dostupnych strojov v sieti sa vola WNetEnumResource a jej pouzitie je znazornenu tuna:
http://www.swissdelphicenter.ch/torry/showcode.php?id=391
http://edn.embarcadero.com/article/26876

Potom len staci zavolat funkciu GetHostByName, ktora berie ako parameter nazov pocitaca a vracia IP ( v strukture ). Priklad ziskania IP lokalneho stroja:
http://delphi.about.com/od/networking/l/aa103100a.htm


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 16.02.2012 18:55 | Zisťovanie MAC adresy (Delphi)

Prosím Vás a niečo po slovensky alebo česky by sa nenašlo?? Do angličtiny som žial úplný blbec,... skúšal som sa na to pozerať a ešte sa s tým aj pozabávam ale zatial mi to moc nejde,.. :(


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 16.02.2012 19:14 | Zisťovanie MAC adresy (Delphi)

Bohuzial, neviem o ziadnom zdroji na internete. Jediny celkom schopny zdroj, ktory poznam, je kniha Sitove programovani pod Windows a programovani Internetu:
http://shop.ben.cz/cz/111718-sitove-programovani-pod-windows-a-programovani-internet.aspx

V kazdom pripade, hore uvedene linky obsahuju aspon priklady. Pripadne www.translate.google.sk moze aspon trocha pomoct pochopit text. Anglictina je velmi dolezita, miestami priam nevyhnuta, hlavne co sa tyka tazko dostupnych zdrojov.


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14571
Témy: 66 | 66
Bydlisko: Žilina
NapísalOffline : 16.02.2012 19:19 | Zisťovanie MAC adresy (Delphi)

jucho29 píše:
Prosím Vás a niečo po slovensky alebo česky by sa nenašlo?? Do angličtiny som žial úplný blbec,... skúšal som sa na to pozerať a ešte sa s tým aj pozabávam ale zatial mi to moc nejde,.. :(

Bez znalostí angličtiny programovať? Veľa šťastia :lol:


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 16.02.2012 19:24 | Zisťovanie MAC adresy (Delphi)

Popozerám to,.. ďakujem,.. ten tretí príklad mi už aj celkom funguje,...
ale potrebujem zriešiť ešte aj MAC adressy,.. lebo ja sa vlastne potrebujem pripájať z viacerých počítačov v sieti na 1 konkrétny, ktorý si užívateľ zadá,... a ak v sieti budú mať nastavené automatické priradenie IP adries tak mi pripojenie len pomocou IP adresy nepomože,.. preto by som chcel aj porovnávať MAC adresy aby som našiel ten správny počítač, nech saa IP zmení hocijako

// pridané po 1 minúte od posledného príspevku

však hej,.. len ja som od základnej školy vyrastal na nemčine,.. takže problémy s tým mať určite budem,.. toho som si vedomí


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 16.02.2012 19:49 | Zisťovanie MAC adresy (Delphi)

Nie som si isty, ci sa da ziskat MAC adresa vzdialeneho PC, ale nasiel som tento priklad:
http://www.tek-tips.com/viewthread.cfm?qid=1103688

Neskusal som ho, cize neviem potvrdit funkcnost. Snad len napoviem, ze ako parameter funkcie je retazes s IP adresou, pricom po uspesnom volani funkcie bude v tomto retazci MAC adresa cieloveho stroja. Cize priklad volania:
Kód:
tempString: string;
// ...

tempString := '192.168.1.1';    // cielova IP
if ( getRemoteMacAdress( tempString ) = true ) then
    ShowMessage( 'MAC = ' + tempString )
else
    ShowMessage( 'Chyba pri ziskavani MAC adresy.' );


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 16.02.2012 20:41 | Zisťovanie MAC adresy (Delphi)

no toto by mi už konečne išlo,.. ešte by som potreboval ako zistím tie jednotlivé IP adresy v sieti,... potom by som mal problém už vyriešený


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 16.02.2012 21:12 | Zisťovanie MAC adresy (Delphi)

Ved v tomto linku --> http://edn.embarcadero.com/article/26876 <-- je nasledovny priklad:
Kód:
function EnumerateFunc( hwnd: HWND; hdc: HDC ; lpnr: PNetResource ): Boolean;
const
  cbBuffer : DWORD      = 16384;      // 16K is a good size
var
  hEnum, dwResult, dwResultEnum : DWORD;
  lpnrLocal : array
        [0..16384 div SizeOf(TNetResource)] of TNetResource;    // pointer to enumerated structures
  i : integer;
  cEntries : Longint;             
begin
  centries := -1;            // enumerate all possible entries

  // Call the WNetOpenEnum function to begin the enumeration.
  dwResult := WNetOpenEnum(
                          RESOURCE_CONTEXT,  // Enumerate currently connected resources.
                          RESOURCETYPE_DISK, // all resources
                          0,                 // enumerate all resources
                          lpnr,              // NULL first time the function is called
                          hEnum              // handle to the resource
                          );

  if (dwResult <> NO_ERROR) then
  begin
    // Process errors with an application-defined error handler
    Result := False;
    Exit;
  end;

  // Initialize the buffer.
  FillChar( lpnrLocal, cbBuffer, 0 );

  // Call the WNetEnumResource function to continue
  //  the enumeration.
  dwResultEnum := WNetEnumResource(hEnum,           // resource handle
                                  DWORD(cEntries),  // defined locally as -1
                                  @lpnrLocal,       // LPNETRESOURCE
                                  cbBuffer);        // buffer size

  // This is just printing
  for i := 0 to cEntries - 1 do
  begin
    // loop through each structure and
    // get remote name of resource... lpnrLocal[i].lpRemoteName)
  end;

  // Call WNetCloseEnum to end the enumeration.
  dwResult := WNetCloseEnum(hEnum);

  if(dwResult <> NO_ERROR) then
  begin
    // Process errors... some user defined function here
    Result := False;
  end
  else
    Result :=  True;
end;


Pridaj k premennym este tieto premenne:
Kód:
  HostEnt: PHostEnt;
  InAddr: TInAddr;


Potom v kode je zakomentovana cast:
Kód:
    // loop through each structure and
    // get remote name of resource... lpnrLocal[i].lpRemoteName)


miesto nej skus dat do toho cyklu for toto:
Kód:
HostEnt:= GetHostByName( lpnrLocal[i].lpRemoteName );

if (HostEnt <> nil) then
  begin
  with InAddr, HostEnt^ do
    begin
    S_un_b.s_b1:= h_addr^[0];
    S_un_b.s_b2:= h_addr^[1];
    S_un_b.s_b3:= h_addr^[2];
    S_un_b.s_b4:= h_addr^[3];
    end;

ShowMessage( 'Adresa = ' + inet_ntoa(InAddr) );


Je to pisane z hlavy, tak treba sa s tym pohrat, ak to nepojde. Este pred tym, ako uvediem priklad volania funkcie, treba zmazat argument hdc a hwnd, pretoze sa vo funkcii nepouzivaju ( a viac menej ani lpnr, ale ten uz nechajme ), cize takto:
Kód:
function EnumerateFunc( lpnr: PNetResource ): Boolean;

Volat by sa potom mala nasledovne( predpokladam volanie z nejakej metody formulara, napr OnCreate, pretoze prvy parameter je jeho :
Kód:
if ( EnumerateFunc( nil ) = true ) then
    ShowMessage( 'Uspesne ukoncenie funkcie.' )
else
    ShowMessage( 'Chyba pri enumeracii siete.' );


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 19.02.2012 21:51 | Zisťovanie MAC adresy (Delphi)

no toto mi už ide,... ďakujem,.. a ešte ak sa smiem opýtať, ako vytvorím nový adresár na inom počítači cez sieť LAN a uložím doňho nejaký súbor napríklad typu .txt?
pokúšal som sa to robiť pomocou príkazu ForceDirectories() ale nefunguje mi to akosi,...


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 19.02.2012 22:04 | Zisťovanie MAC adresy (Delphi)

V prvom rade je nutne mat pristup k danej zlozke, kde sa ma vytvorit nova zlozka alebo subor. Malo by to byt zdielane umiestnenie s pristupom na zapis. Ak je zdielanie povolene iba na citanie, tak zial, nebude tam mozne zapisovat. Ak ti funkcia ForceDirectories vrati false, tak zapis zlyhal.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 19.02.2012 22:16 | Zisťovanie MAC adresy (Delphi)

zdielanie je zapnuté aj na zápis a zdielaný mám komplet celý disk,... je pravda že som neskúšal testovať či to prejde ako True alebo False. Program cez príkz prešiel ale priečinok mi vôbec nevytvoril


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 19.02.2012 22:27 | Zisťovanie MAC adresy (Delphi)

Tak to testni cez ShowMessage, mozno len zadavas nespavnu cestu. Priklad: v mojom PC mam zdielanu zlozku C:\Share. Ak v nej chcem vytvorit zlozku newFolder, postupujem takto:
Kód:
if ( ForceDirectories( '\\FICO-PC\Share\newFolder' ) ) then
    ShowMessage( 'Directory successfully created.' )
else
    ShowMessage( 'Error: ' + IntToStr( GetLastError() ) );


C:\Share je skutocne umiestnenie v mojom PC, ale cestu v sieti uz ma bez oznacenia disku. Treba si pozriet, aky nazov ma pozadovany subor, kde chces zapisovat.

Poznamka: Chybove hlasenia z GetLastError su tu: http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v=vs.85).aspx


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 19.02.2012 22:43 | Zisťovanie MAC adresy (Delphi)

ja blbec som mal tú cestu zlú,... písal som v ceste aj ja že c:\,.. a to bola chyba má to byť len že c\
toto mi momentálne funguje

Kód:
if (ForceDirectories('\\192.168.1.101\users\Matematika jednoduchšie\4.F\1254')=true) then  showmessage('zápis sa podaril')
 else showmessage('zápis nebol uspešný');
 memo1.Lines.SaveToFile('\\192.168.1.101\users\Matematika jednoduchšie\4.F\pokus1.txt');


tá IP je vlastne IP môjho počítača a všetky priečinky aj s podpriečinkami od Users už neexistovali

pôvodne som to mal takto napísané:
Kód:
if (ForceDirectories('192.168.1.101\\c:\users\Matematika jednoduchšie\4.F\1254')=true) then showmessage('zápis sa podaril')
 else showmessage('zápis nebol uspešný');
 memo1.Lines.SaveToFile('192.168.1.101\\c:\users\Matematika jednoduchšie\4.F\pokus1.txt');


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 19.02.2012 22:48 | Zisťovanie MAC adresy (Delphi)

Takze problem vyrieseny?

Inak este si oprav takto:
Kód:
if (ForceDirectories('\\192.168.1.101\users\Matematika jednoduchšie\4.F\1254')=true) then
begin
    showmessage('zápis sa podaril');
    memo1.Lines.SaveToFile('\\192.168.1.101\users\Matematika jednoduchšie\4.F\pokus1.txt');
end
else showmessage('zápis nebol uspešný');


aby sa subor vytvoril iba v pripade, ze cielova zlozka bola vytvorena.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 19.02.2012 22:51 | Zisťovanie MAC adresy (Delphi)

ja to ešte budem ošetrovať,... teraz som len potreboval tú cestu vlastne vyriešiť,... ďakujem inak za pomoc ;) ,... zase som o krok k vypracovaniu ročníkového projektu :D


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 28.02.2012 21:34 | Zisťovanie MAC adresy (Delphi)

ešte ak by som sa mohol spýtať,... ako z IP adresy zistím názom (meno) počítača??
našiel som takúto funkciu:

Kód:
function IPToHost(IP: string): string;
var
  Data: TWSAData;
  Addr: integer;
  Entry: PHostEnt;

begin
  result := '';
  try
    WSAStartUp($101,Data);

    Addr := inet_addr(PChar(IP));
    if Addr = INADDR_NONE then
      exit;

    Entry := GetHostByAddr(@Addr, SizeOf(integer), PF_INET);
    if Entry = nil then
      exit;

    result := Entry^.h_name;

  finally
    WSACleanUp;
  end;
end;


ale akonále sa mi v názve počítača ocitne nejaký mäkčeň, tak ho ako keby nevie prečítať a na tom písmene skončí a nezistí mi celé meno,.. vie mi niekto poradiť??


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 29.02.2012 11:09 | Zisťovanie MAC adresy (Delphi)

Nieco ta funkcia aj vrati alebo je Entry rovne nil ?


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 29.02.2012 12:55 | Zisťovanie MAC adresy (Delphi)

napríklad keď je meno počítača Juraj-PC,... tak funkcia vypíše Juraj-PC,... ale ked je meno počítača Tomáš-book, tak funkcia vypíše len Tomá
a nič viac, ostatné odignoruje


Offline

Skúsený užívateľ
Skúsený užívateľ
Zisťovanie MAC adresy (Delphi)

Registrovaný: 11.01.09
Prihlásený: 28.05.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 29.02.2012 13:28 | Zisťovanie MAC adresy (Delphi)

Neviem ti poradit, mozno je ten nazov skutocne takto skrateny a pri generovani IP z tohto nazvu stroja by ti hodilo spravne jeho IP adresu.
Tu je aspon pekne ukazane, ze netreba pchat diakritiku tam, kam netreba.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 12.01.12
Prihlásený: 26.01.16
Príspevky: 27
Témy: 5 | 5
Bydlisko: Janova Lehota
Napísal autor témyOffline : 29.02.2012 13:33 | Zisťovanie MAC adresy (Delphi)

no to pochybujem že by mi vyhodilo správnu IP,... lebo zase keď sa počítač bude volať Štefan-PC,.. tak ti nevypíše nič,.. a funkcia popritom prebehne úspešne


 [ Príspevkov: 21 ] 


Zisťovanie MAC adresy (Delphi)



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

neustale zistovanie sietovej adresy - wifi

v Siete

18

1047

13.07.2009 11:51

AsuSmaNiaK

V tomto fóre nie sú ďalšie neprečítané témy.

Divne MAC adresy

v Siete

2

627

28.03.2012 20:32

fista1

V tomto fóre nie sú ďalšie neprečítané témy.

klonovanie mac adresy

v Siete

1

1294

15.07.2011 17:22

Qpkqkma

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena MAC adresy

v Firewally a bezpečnosť

1

941

23.09.2012 19:33

nBXXL

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena Mac Adresy

v Siete

4

1162

25.08.2011 14:11

nBXXL

V tomto fóre nie sú ďalšie neprečítané témy.

zmena mac adresy

v Siete

4

2193

07.02.2010 13:39

Jaro

V tomto fóre nie sú ďalšie neprečítané témy.

Python zistenie MAC adresy

v Backend

7

787

13.12.2013 14:06

Kraliček

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena MAC adresy v routri

v Siete

8

6427

23.11.2007 23:03

triscene

V tomto fóre nie sú ďalšie neprečítané témy.

Ubuntu a zmena adresy MAC

v Unix-like systémy

14

2347

18.11.2007 20:33

jararak

V tomto fóre nie sú ďalšie neprečítané témy.

zistenie MAC adresy v sieti

v Firewally a bezpečnosť

1

1783

23.01.2013 23:36

89Aquarius

V tomto fóre nie sú ďalšie neprečítané témy.

zmena mac adresy-win7 help

v Sieťové programy

6

581

17.07.2014 21:15

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena mac adresy vo win 7

v Sieťové programy

2

3373

29.09.2010 8:33

Logik

V tomto fóre nie sú ďalšie neprečítané témy.

neide internet po zmene mac adresy

v Siete

7

651

29.11.2008 10:33

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

zistenie mac adresy v lokalnej sieti

v Backend

3

3687

06.08.2010 10:21

pogo

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena wifi MAC adresy WIN 7 Problem

v Windows

1

1212

26.06.2010 23:26

FERDA23

V tomto fóre nie sú ďalšie neprečítané témy.

Zmena MAC adresy Router Zcomax WA-2204A-TX

v Siete

13

1771

01.01.2010 22:36

Vikinger



© 2005 - 2026 PCforum, edited by JanoF