Entwickler-Ecke

Internet / Netzwerk - Anzeige der Netzwerkrecourcen ???


oPPi - Fr 26.07.02 01:11
Titel: Anzeige der Netzwerkrecourcen ???
Hallo,

Ich bin grade dabei mir ein kleines Netzwerkprogramm zu cooden. Ich hab ne ListBox in der mir sämtliche PCs im LAN angezeigt werden. Jetzt möchte ich, wenn ich einen PC auswähle, das mir die Netzwerkrecourcen (Freigaben) des Rechners in einer anderen ListBox oder FileListBox (is egal) angezeigt werden bzw. darauf zugreifen kann. Ferner würde ich auch gern die IPs der jeweilen PCs (nicht die des Lokalen) angezeigt bekommen.

Leider bin ich noch nicht so ganz fit mit Internet u. Lan. Die Demos u. Tuts
hab ich mir auch schon mal reingezogen.

Ich verwende Delphi 6 Pro u. hab auch die TNetwork Komponente in Gebrauch.

Könnte mir da jemand eventuell weiter helfen?

Thanks im Voraus
oPPi


M4EiB - Fr 26.07.02 03:01

schau dir mal den thread hier an, besonders den code am schluss von pit:
http://www.auq.de/viewtopic.php?t=256&highlight=netzwerk
das ganze geht mit den api-funktionen 'WNet Functions', schau dir das mal in der hilfe an. damit erhält man auch die freigaben von computern.


oPPi - Fr 26.07.02 13:16
Titel: RE: Anzeige der Netzwerkrecourcen ???
Hallo,

danke für die schnelle Antwort. Werde das mal tun. Den Code hab ich mir schon gezogen die Hilfe werd ich mir dann auch zu Gemüte ziehen.

Werd das Wochenende mal darüber brüten und das Beste draus machen.

Der Quellcode von Pit is wirklich easy. Muß mal sehen wie ich das ganze umsetzte.

Danke nochmal

Gruß
oPPi


oPPi - Do 01.08.02 17:25

Hallo,

hab jetzt mal so ein bissel rumgebastelt.
Die Computers werden angezeigt, Druckerfreigaben hab ich auch hinbekommen u. freigegebene Ordner werden auch gezeigt.



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
// Listet mir die Computers auf
ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, ListBox_PCs.Items);

// Listet mir die Ordner auf
ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SHARE, ListBox_Ordner.Items);

//Listet mit die Drucker auf
ScanNetworkResources(RESOURCETYPE_PRINT, RESOURCEDISPLAYTYPE_SHARE, ListBox_Printers.Items);


Nun hab ich folgendes Problem:

Wenn ich z.B. beim freigegeben Ordner X (in ListBox_Ordner) doppelklicke möchte ich in der ListBox_Files die zum Ordner gehörenden Files angezeigt bekommen. Hab jetzt schon fast alles probiert aber leider funzt das net so richtig.

Ich wäre euch sehr verbunden wenn mir da einer mal helfen könnte.
Is mit Sicherheit einfach .... :wink:

Gruß

oPPi

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


ArnF - Fr 13.09.02 21:44

Hi,

wie man die Namen bekommt ist ja jetzt klar, aber wie bekommt man die IP-Adressen zu diesen Namen.

Gibt es da irgendeine einfache Möglichkeit?

Quelltextbeispiel wäre sehr hilfreich.

Gruß ArnF


M4EiB - So 15.09.02 22:17

@ oPPi
das mit den dateien machst du mit tsearchrec und dann findfirst und findnext. genaueres findest du in der delphihilfe.
als pfad musst du folgenden angeben:
\\computername\freigegebenerordner\
natürlich mit deinen daten.

@ArnF
wüsste jetzt nichts, mit dem man die ip auslesen kann. du kannst versuchen den namen anzupingen. da bekommst du auch die ip.


O'rallY - Mo 16.09.02 17:26

Um die IP anhand des Hostnames herauszubekommen, kann man folgenden Code benutzen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
function GetIPFromHost(const HostName: string): string;
type
  TaPInAddr = array[0..10of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  i: Integer;
  GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  Result := '';
  phe := GetHostByName(PChar(HostName));
  if phe = nil then Exit;
  pPtr := PaPInAddr(phe^.h_addr_list);
  i := 0;
  while pPtr^[i] <> nil do
  begin
    Result := inet_ntoa(pptr^[i]^);
    Inc(i);
  end;
  WSACleanup;
end;


Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.