HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

A helyi hálózat tetszőleges számítógépén fellelhető megosztások lekérdezése


Példaprogram letöltése

4172 bájt

A helyi hálózat előnye többek közt, hogy az erőforrásokat elegendő – kivételek azért vannak – egy példányban elhelyezni a hálózat egy tetszőleges számítógépén, és azt képes valamennyi munkaállomás elérni. Ehhez csupán annyit kell tennünk, hogy az adott erőforrást fel kell kínálnia az adott számítógépnek, vagyis meg kell azt osztani a hálózaton. Hogy egy adott LAN munkaállomás milyen megosztásokkal rendelkezik, megtudhatjuk egy API függvény meghívásával. Ennek módját mutatjuk be cikkünkben.

A munkaállomások megosztásait a NETAPI32.DLL állományban implementált NetShareEnum metódus képes lekérdezni. A megoldás taglalása előtt megemlítendő, hogy amennyiben a mellékletalkalmazást Windows 98 rendszeren futtatjuk, akkor ott nem található meg a NETAPI32.DLL állomány. Ott a SVRAPI.DLL dinamikusan szerkeszthető könyvtárra kell hivatkozni.
A metódus deklarációja a következő:
NetShareEnum
Osztály:
function NetShareEnum(
servername: PWideChar; level: DWORD; var buf: Pointer; prefmaxlen: DWORD; var entriesread: DWORD; var totalentries: DWORD; var resume_handle: DWORD
): NET_API_STATUS;
A metódussal tehát információ szerezhető a hálózat megosztásairól.
Paraméterek
servername: PWideChar
A lekérdezendő számítógép neve. Windows NT esetében a nevet a „\\” karakterlánccal kell kezdeni.
level: DWORD
Az információ típusát jelzendő, meg kell adnunk egy egész számot. A szám a harmadik paraméterben megadott pointer által jelzett memóriaterületen található adatstruktúra típusát jelzi.
var buf: Pointer
Az eredményadatok területére mutató pointer.
prefmaxlen: DWORD
A lefoglalandó maximális memóriaterület nagysága bájtban.
var entriesread: DWORD
A lekérdezett megosztott erőforrások száma.
var totalentries: DWORD
A lehetséges erőforrásszám.
var resume_handle: DWORD
A lekérdezéskor nullára választandó változó, mely mindig a következő lekérdezéshez szükséges kezelőt tartalmazza.
Visszatérési érték
Sikeres lekérdezéskor nulla.
A második paraméterben megadható egész szám ötféle lehet, melyekhez öt struktúratípus tartozik.
Szám Rekordtípus
0 SHARE_INFO_0
1 SHARE_INFO_1
2 SHARE_INFO_2
50 SHARE_INFO_50
502 SHARE_INFO_502
Megjegyzendő, hogy csak az utolsó kettő típus használható Windows 9x rendszerek esetében.
A szövegmezőben a lekérdezendő erőforrásgazda számítógép nevét kell megadni, vagy üres karakterláncot a saját rendszerre vonatkozó információk lekérdezéséhez. Az egyes erőforrásokra vonatkozó adatokat a NetShareGetInfo metódussal kaphatjuk meg.
A megoldáshoz a SHARE_INFO_0 és a SHARE_INFO_1 típusokat használjuk fel. A lekérdezéskor először a SHARE_INFO_0 rekordban kapjuk meg az eredményt, vagyis 0 értéket adtunk át a metódusnak második paraméterként. A rekord deklarációjából látható, hogy itt csak az erőforrás nevét kapjuk meg.
PShare_Info_0 = ^TShare_Info_0;
TShare_Info_0 = record
  shi0_netname: PWideChar;
end;
A lekérdezés kódja a következő:
result := NetShareEnum(Server, 0, Pointer(Buffer), DWORD(-1), entries, totals, r);
Ha a lekérdezés sikeres, akkor a lekérdezett erőforrások nevét megjelenítjük a Form TListBox komponensében.
if (result = NERR_Success) then begin
  share := Buffer;
  for i := 1 to entries do begin
    listBox1.Items.Add('Megosztás neve: '+ string(share.shi0_netname));
Ezt követően hívjuk meg NetShareGetInfo metódust, az 1-et megadva paraméterként. Ekkor a SHARE_INFO_1 típusú rekordban kaphatjuk meg az erőforrás többi adatát.
    result := NetShareGetInfo(server, share.shi0_netname, 1, Pointer(Buf1));
    if (result = NERR_Success) then begin
      listBox1.Items.Add('Jellemző: ' + string(Buf1.shi1_remark));
      listBox1.Items.Add('');
    end;
    ...
A műveletek végén felszabadítjuk az erőforrások adataira mutató pointert.
NetApiBufferFree(Buffer);

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 755. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |