问个简单的问题,大家可不要笑我,怎样得到一个文件夹的共享名? 请问我知道一个共享文件夹的本地名,如何知道得到它的共享名?我翻了半天msdn也没有找到这样的函数,至于读注册表挨个比较我到知道,不过感觉太麻烦了,有没有直接的函数?谢谢大家了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WNetOpenEnum(...);WNetEnumResource(...);WNetCloseEnum(...); http://www.delphibbs.com/delphibbs/dispq.asp?lid=103193 枚举共享名吧,像楼上的API函数 搜索共享资源 Function GetUserResource( UserName : string ; var List : TStringList ) : Boolean; VarNetResource : TNetResource;Buf : Pointer;Count,BufSize,Res : DWord;Ind : Integer;lphEnum : THandle;Temp : TNetResourceArray;BeginResult := False;List.Clear;FillChar(NetResource, SizeOf(NetResource), 0); //初始化网络层次信息NetResource.lpRemoteName := @UserName[1]; //指定计算机名称Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,RESOURCEUSAGE_CONNECTABLE, @NetResource,lphEnum);//获取指定计算机的网络资源句柄If Res <> NO_ERROR Then exit; //执行失败While True Do //列举指定工作组的网络资源BeginCount := $FFFFFFFF; //不限资源数目BufSize := 8192; //缓冲区大小设置为8KGetMem(Buf, BufSize); //申请内存,用于获取工作组信息Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);//获取指定计算机的网络资源名称If Res = ERROR_NO_MORE_ITEMS Then break;//资源列举完毕If (Res <> NO_ERROR) then Exit; //执行失败Temp := TNetResourceArray(Buf);For Ind := 0 to Count - 1 doBeginList.Add(Temp^.lpRemoteName);Inc(Temp);End;End;Res := WNetCloseEnum(lphEnum); //关闭一次列举If Res <> NO_ERROR Then exit; //执行失败Result := True;FreeMem(Buf);End; procedure TForm1.Button1Click(Sender: TObject);varList:TstringList;i:integer;begintryList:=TstringList.Create;if GetUserResource(edit1.text,List) thenif List.count=0 then //指定计算机下没有找到共享资源beginmemo1.Lines.Add (edit1.text+'下没有找到共享资源!');endelsememo1.Lines.Add (edit1.text+'下的所有共享资源如下:');for i:=0 to List.Count-1 dobeginMemo1.lines.Add (List.strings[i]);end;finallyList:=TstringList.Create; //如有异常则释放分配的资源end;end; 出现异常如何再次获得网页代码 怎样给sql语句中的参数赋空值? TTreeview控件 心烦.过节放分! 一个弱弱的问题,在线等,一定给分 有谁知道ADO控件的详细用法?高价收购 怎樣在dbgrid上動態地增加column? 有一个退出程序问题! 求ACTIVEX向JS传递参数的办法 原来贴过,无人能解决,网络程序高手请进,如何监测局域网中他人的网卡的工作模式,如何发现局域网中的监听器?? 启动窗体在屏幕中央? 怎么设置EhLib的PrintDBGridEh打印每一行纪录的行距?
WNetEnumResource(...);
WNetCloseEnum(...);
Function GetUserResource( UserName : string ; var List : TStringList ) : Boolean;
VarNetResource : TNetResource;Buf : Pointer;Count,BufSize,Res : DWord;Ind : Integer;lphEnum : THandle;Temp : TNetResourceArray;BeginResult := False;List.Clear;FillChar(NetResource, SizeOf(NetResource), 0); //初始化网络层次信息NetResource.lpRemoteName := @UserName[1]; //指定计算机名称Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,RESOURCEUSAGE_CONNECTABLE, @NetResource,lphEnum);//获取指定计算机的网络资源句柄If Res <> NO_ERROR Then exit; //执行失败While True Do //列举指定工作组的网络资源BeginCount := $FFFFFFFF; //不限资源数目BufSize := 8192; //缓冲区大小设置为8KGetMem(Buf, BufSize); //申请内存,用于获取工作组信息Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);//获取指定计算机的网络资源名称If Res = ERROR_NO_MORE_ITEMS Then break;//资源列举完毕If (Res <> NO_ERROR) then Exit; //执行失败Temp := TNetResourceArray(Buf);For Ind := 0 to Count - 1 doBeginList.Add(Temp^.lpRemoteName);Inc(Temp);End;End;Res := WNetCloseEnum(lphEnum); //关闭一次列举If Res <> NO_ERROR Then exit; //执行失败Result := True;FreeMem(Buf);End; procedure TForm1.Button1Click(Sender: TObject);varList:TstringList;i:integer;begintryList:=TstringList.Create;if GetUserResource(edit1.text,List) thenif List.count=0 then //指定计算机下没有找到共享资源beginmemo1.Lines.Add (edit1.text+'下没有找到共享资源!');endelsememo1.Lines.Add (edit1.text+'下的所有共享资源如下:');for i:=0 to List.Count-1 dobeginMemo1.lines.Add (List.strings[i]);end;finallyList:=TstringList.Create; //如有异常则释放分配的资源end;end;