VC如何自动获取局域网计算机列表它们的共享目录,使用WNetOpenEnum()、WNetEnumResource(),WNetCloseEnum()能够列出计算机列表,但是怎么获得共享目录
解决方案 »
- linux下编程和xp编程区别
- 关于UDP的一个奇特问题
- IHTMLElement iframe 框架 得到了iframe中的一个element能不能得到这个元素相对于主框架的偏移位置呢
- __based的使用方法??
- 急求md5加密算法的代码!最好是封装成类的,拿过来就可以用的!是给CString加密!
- 问一个大家都会遇到过的问题?
- VC+ADO+SQLSERVER开发的程序在没有VC的机器上运行,该拷贝哪些动态文件,请指教
- 关于HWND 的问题,很简单,来者有分。
- 如何实现combobox的自动查询功能,在输入时,边查询适合的列表项
- 菜鸟问题 关于LISTCTRL
- 如何对zip压缩文件解压缩
- TCP客户端SEND问题
http://topic.csdn.net/t/20040705/12/3146327.html
查阅一下msdn
{
DWORD OpenRet;
// Open network resource list
HANDLE hNet;
OpenRet=WNetOpenEnum(dwScope,RESOURCETYPE_ANY,0,pNetContainer,&hNet);
if (OpenRet!=NO_ERROR)
{
pfReply(hPack,CMD_ERROR,0,"LAN net open failed");
sprintf(g_szError,"WNetOpenEnum failed,[%d]",OpenRet);
return FALSE;
}
// Enumerate resources
int ret;
DWORD dwCount,dwBufSize;
NETRESOURCE *pNetRes;
pNetRes=(NETRESOURCE *)malloc(16384);
if(pNetRes==NULL)
{
WNetCloseEnum(hNet);
pfReply(hPack,CMD_ERROR,0,"ヤカウフヨ愷レエ豐サラ・);
return FALSE;
}
dwCount=1;
dwBufSize=8192;
ret=WNetEnumResource(hNet,&dwCount,pNetRes,&dwBufSize);
while(ret!=ERROR_NO_MORE_ITEMS)
{
char *svType,*svLocalName,*svRemoteName,*svComment;
char svURLHead[MAX_PATH+1];
char svURLFoot[MAX_PATH+1];
svURLHead[0]='\0';
svURLFoot[0]='\0';
int iNetType;
switch(pNetRes->dwDisplayType)
{
case RESOURCEDISPLAYTYPE_DOMAIN:
svType="DOMAIN";
iNetType = RESOURCE_DOMAIN;
break;
case RESOURCEDISPLAYTYPE_GENERIC:
svType="GENERIC";
iNetType = RESOURCE_GENERIC;
break;
case RESOURCEDISPLAYTYPE_SERVER:
svType="SERVER";
iNetType = RESOURCE_SERVER;
break;
case RESOURCEDISPLAYTYPE_SHARE:
switch(pNetRes->dwType)
{
case RESOURCETYPE_DISK:
svType="FOLDER";
iNetType = RESOURCE_FOLDER;
break;
case RESOURCETYPE_PRINT:
svType="PRINTER";
iNetType = RESOURCE_PRINTER;
break;
default:
svType="UNKNOWN";
iNetType = RESOURCE_UNKNOWN;
break;
}
break;
default:
svType="NETWORK";
iNetType = RESOURCE_NETWORK;
break;
}
if(pNetRes->lpLocalName==NULL) svLocalName="";
else svLocalName=pNetRes->lpLocalName;
if(pNetRes->lpRemoteName==NULL) svRemoteName="";
else svRemoteName=pNetRes->lpRemoteName;
if(pNetRes->lpComment==NULL) svComment="";
else svComment=pNetRes->lpComment;
_network_resource res;
memset(&res,0,sizeof(res));
if(!pNetRes->lpLocalName && !pNetRes->lpRemoteName)
{
res.iType = iNetType;
wsprintf(res.Comment,"%.99s",svComment);
}
else
{
res.iType = iNetType;
wsprintf(res.Comment,"%.99s",svComment);
wsprintf(res.RemoteName,"%.99s",svRemoteName);
wsprintf(res.LocalName,"%.99s",svLocalName);
}
pfReply(hPack,CMD_NETWORK,SUBCMD_RESOURCE,&res);
// Recurse if necessary
if (pNetRes->dwUsage & RESOURCEUSAGE_CONTAINER && dwScope == RESOURCE_GLOBALNET)
{
char svSpacer2[100];
lstrcpyn(svSpacer2,svSpacer,100);
if(lstrlen(svSpacer2)<98) lstrcat(svSpacer2," ");
EnumLanRes(hPack,pNetRes,dwScope,svSpacer2);
}
dwCount=1;
dwBufSize=16384;
ret=WNetEnumResource(hNet,&dwCount,pNetRes,&dwBufSize);
}
free(pNetRes);
WNetCloseEnum(hNet);
return TRUE;
}