네트워크상의 컴퓨터와 장치를 열거 할 수있는 방법은 많지만 Windows 파일 공유에 사용할 수있는 컴퓨터는 어떻게 표시합니까? 네트워크 컴퓨터와 해당 공유 폴더에 대한 트리보기를 제공해야합니다. 나는 이것을 위해 기존의 쉘 컨트롤을 사용할 수 있다는 것을 알고 있지만, 내 자신의 트리 뷰에서이를 유지하려고한다. 공유 폴더가있는 네트워크의 컴퓨터 만 나열됩니다. 컴퓨터와 공유 폴더를 지나서 개별 디렉터리 목록 부분을 직접 할 수 있습니다. 컴퓨터 목록과 공유 폴더 목록을 얻는 방법을 알아야합니다.네트워크 컴퓨터 및 공유 폴더 목록을 트리보기로 열거합니까?
1
A
답변
2
WNetOpenEnum는 WNetOpenEnum 기능은 네트워크 자원 또는 기존 연결의 열거를 시작하는 네트워크
에 당신에게 모든 컴퓨터를 제공 할 것입니다. WNetEnumResource 함수를 호출하여 열거를 계속할 수 있습니다.
NetShareEnum 당신은 모두 컴퓨터에서 공유 할 것입니다.
서버의 각 공유 리소스에 대한 정보를 검색합니다.
당신은 WNetOpenEnum/WNetOpenEnum 윈도우 API 사용 예제 델파이 코드에 관심이 있다면
3
다음 리소스를 고려하시기 바랍니다 원하지 않는 것을 필터링 둘의 조합을 사용할 수 있습니다
-
을 앵거스 요한
- Networked Drives :
- Use the Windows API to generate a list of available Network Resources 델프에서 저스틴 Swett
- Get a list of computers in a network에 의해 EDN에 게시 itricks.com.
NETRESOURCE structure의 명령이 있어야합니다.
나는 PERSONNALY http://www.developpez.net의 포럼에서 다음 목록을 권장합니다
목록 # 1 :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
procedure EnumNetworkProc(const aNetResource :TNetResource; const aLevel :word; var aContinue :boolean);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.EnumNetworkProc(const aNetResource :TNetResource; const aLevel :word; var aContinue :boolean);
begin
if aNetResource.dwDisplayType in [RESOURCEDISPLAYTYPE_DOMAIN, RESOURCEDISPLAYTYPE_SERVER] then
ListBox1.Items.Add(StringOfChar(' ', aLevel*4) +aNetResource.lpRemoteName);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
EnumNetwork(EnumNetworkProc, RESOURCE_GLOBALNET, RESOURCETYPE_DISK);
end;
end.
목록 # 2 :
unit Unit2;
interface
uses Windows;
type
TEnumNetworkProc = procedure(const aNetResource :TNetResource; const aLevel :word; var aContinue :boolean) of object;
procedure EnumNetwork(const aEnumNetworkProc :TEnumNetworkProc; const aScope :dword = RESOURCE_GLOBALNET; const aType :dword = RESOURCETYPE_ANY);
implementation
//Procédure récursive
procedure DoEnumNetwork(const aContainer :Pointer;
const aEnumNetworkProc :TEnumNetworkProc;
const aScope :dword;
const aType :dword;
const aLevel :byte);
type
PNetResourceArray = ^TNetResourceArray;
TNetResourceArray = array [0..0] of TNetResource;
var
NetHandle :THandle;
NetResources :PNetResourceArray;
NetResult :dword;
Size, Count, i :Cardinal;
Continue :boolean;
begin
Continue := TRUE;
NetResult := WNetOpenEnum(aScope, aType, 0, aContainer, NetHandle);
if NetResult = NO_ERROR then
try
//Taille de base
Size := 50 *SizeOf(TNetResource);
GetMem(NetResources, Size);
try
while Continue do
begin
Count := $FFFFFFFF;
NetResult := WNetEnumResource(NetHandle, Count, NetResources, Size);
//Taille insuffisante ?
if NetResult = ERROR_MORE_DATA
then ReallocMem(NetResources, Size)
else Break;
end;
//Enumère
if NetResult = NO_ERROR then
for i := 0 to Count - 1 do
begin
//Callback
if Assigned(aEnumNetworkProc) then
begin
aEnumNetworkProc(NetResources^[i], aLevel, Continue);
if not Continue then Break;
end;
//Appel récursif
if (NetResources^[i].dwUsage and RESOURCEUSAGE_CONTAINER) > 0 then
DoEnumNetwork(@NetResources^[i], aEnumNetworkProc, aScope, aType, aLevel +1);
end;
finally
FreeMem(NetResources, Size);
end;
finally
WNetCloseEnum(NetHandle);
end;
end;
procedure EnumNetwork(const aEnumNetworkProc: TEnumNetworkProc; const aScope, aType: dword);
begin
DoEnumNetwork(nil, aEnumNetworkProc, aScope, aType, 0);
end;
end.
,691을
출처 : Liste des machines sur un réseau local (tout le réseau de Win) - Lucas Panny의 원본 게시물 (프랑스어)
관련 문제
- 1. 네트워크 공유 폴더 모니터링
- 2. href로 네트워크 공유 폴더 열기
- 3. 네트워크 지연 및 컴퓨터 동결
- 4. 가상 컴퓨터 및 로컬 네트워크
- 5. 공유 폴더 및 XCode
- 6. 네트워크 계층 (컴퓨터 네트워크, Tanenbaum)
- 7. 네트워크 폴더 브라우저 서비스
- 8. 공유 위치의 파일/폴더 목록을 읽는 방법?
- 9. 네트워크 폴더 생성 C#
- 10. 공유 폴더 및 크기 목록을 표시하는 PowerShell 스크립트
- 11. 네트워크 컴퓨터 설정에서 FileSystemWatcher
- 12. C# 및 네트워크 공유 데이터베이스
- 13. 컴퓨터 간 소스 코드 공유
- 14. 네트워크 폴더 보안
- 15. 로컬 네트워크 컴퓨터 목록은 어떻게 구합니까?
- 16. HTML 소스를 트리보기로 보시겠습니까?
- 17. 네트워크 폴더 용 Python tkFileDialog.askdirectory
- 18. WMI를 사용하여 Hyper-V 게스트에서 네트워크 어댑터를 어떻게 열거합니까?
- 19. 공유 폴더 구현
- 20. 윈도우 XP 네트워크 공유 암호 창
- 21. 다른 컴퓨터 공유 폴더에있는 ASP.NET 액세스 파일
- 22. 원격으로 만들 네트워크 공유
- 23. as3 네트워크 공유 액세스
- 24. iPhone 네트워크 공유 액세스
- 25. 솔루션 루트의 공유 폴더
- 26. Android, 네트워크 드라이브 및 공유 참조
- 27. TortoiseSVN 아이콘 오버레이 및 네트워크 공유/마운트
- 28. 공유 폴더 내의 aspx 페이지에있는 파일 및 폴더 아이콘 표시
- 29. Silverlight를 사용하여 네트워크 및 해당 IP 주소의 컴퓨터 목록을 얻는 방법?
- 30. PC 및 가상 컴퓨터에서 폴더 공유
Msdn ** NetSharesEnum ** 항목에서 발췌 한 추가 내용 : WNetEnumResource 함수를 사용하여 자원 정보를 검색 할 수도 있습니다. 그러나 WNetEnumResource는 숨겨진 공유 또는 열람 된 공유에 열거 된 사용자를 나열하지 않습니다. 숨겨진 리소스를 열거하면 OP 요구 사항의 일부입니다 ** NetShareEnum **은 옵션이 아닙니다. – menjaraz