Try API functions:
WNetOpenEnum,WNetEnumResource
WNetOpenEnum,WNetEnumResource
解决方案 »
- 用采集速率10MHz以上的同步高速AD卡 用多线程
- ==========100分!Delphi经典控件大推荐!============
- 在delphi中如何获取所有已运行程序的名称和该程序的窗口标题
- 求代码 无边框窗口如何实现 鼠标按下移动 改变窗口大小的功能!谢谢
- 请问怎样打印窗体中的某一区域
- 对与Oracle数据库来说是用BDE好还是用ADO好?
- update某个字段的值中有"字符时, 会出现error, 为什么?
- 心情好,散分拉!哈哈
- 关于打印问题。高手请进?
- 报表打印数据显示问题
- 如何打印memo字段的内容呢?
- 请教一个以前有人问过的问题:如何从CLIENT端获取SERVER端的系统时间?
//将其加入到一个TTreeView(tvUser)对象:
function TfrmChat.AddTolvUser(const ANode: TTreeNode; const lpns: PNetResource): TTreeNode;
var Node: TTreeNode;
pCaption: String;
begin
pCaption := KillChars(lpns.lpRemoteName, ['\'], True);
Node := tvUser.Items.AddChild(ANode, pCaption);
case lpns.dwDisplayType of
RESOURCEDISPLAYTYPE_NETWORK: //整个网络
Node.ImageIndex := NetWork;
RESOURCEDISPLAYTYPE_DOMAIN: //一个域
Node.ImageIndex := DoMain;
RESOURCEDISPLAYTYPE_SERVER: //一台PC机
Node.ImageIndex := PC;
else //不会发生,避免编译警告
Node.ImageIndex := PC;
end;
Node.SelectedIndex := Node.ImageIndex;
Node.StateIndex := CheckNone;
Result := Node;
end;//第一次ANode可以为nil,如EnumPCsInNetWork(ANode, nil);或者EnumPCsInNetWork(nil);
function TfrmChat.EnumPCsInNetWork(const ANode: TTreeNode; const lpnr: PNetResource = nil): Boolean;
var hEnum: THANDLE;
Node: TTreeNode;
cbBuffer, nLoop: DWORD;
dwResult, cEntries: DWORD;
dwResultEnum: DWORD;
lpnrLocal: array of TNetResource;
Has: Boolean; //是否包含网络资源;
begin
cbBuffer := SizeOf(TNetResource) * 1024;
cEntries := $FFFFFFFF;
dwResult := WNetOpenEnum(RESOURCE_GLOBALNET,
RESOURCETYPE_ANY,
RESOURCEUSAGE_CONTAINER,
lpnr, hEnum);
if dwResult <> NO_ERROR then
begin
Result := False;
Exit;
end;
Has := False;
repeat
SetLength(lpnrLocal, 1024);
ZeroMemory(lpnrLocal, SizeOf(lpnrLocal));
Application.ProcessMessages;
dwResultEnum := WNetEnumResource(hEnum, cEntries, lpnrLocal, cbBuffer);
if dwResultEnum = NO_ERROR then
begin
Has := True;
for nLoop := 0 to cEntries - 1 do
begin
Node := AddTolvUser(ANode, @lpnrLocal[nLoop]);
if lpnrLocal[nLoop].dwDisplayType in //只枚举Domain和PC
[RESOURCEDISPLAYTYPE_NETWORK, RESOURCEDISPLAYTYPE_DOMAIN] then
if not EnumPCsInNetWork(Node, @lpnrLocal[nLoop]) then
case lpnrLocal[nLoop].dwDisplayType of
RESOURCEDISPLAYTYPE_NETWORK:
begin
Node.ImageIndex := NoNetWork;
Node.SelectedIndex := NoNetWork;
end;
RESOURCEDISPLAYTYPE_DOMAIN:
begin
Node.ImageIndex := NoDomain;
Node.SelectedIndex := NoDomain;
end;
end;
end;
end else
if dwResultEnum <> ERROR_NO_MORE_ITEMS then Break;
until (dwResultEnum = ERROR_NO_MORE_ITEMS);
Result := (WNetCloseEnum(hEnum) = NO_ERROR) and Has;
end;
对于你的热情帮助,我深深感激。
对于你的渊博,在下的景仰之情,犹如滔滔江水.....
怎么还用的着说对不起呢,你太客气了,让我很不好意思。