vc 获取计算机网络参数,VC++获取局域网中的计算机名(转)

本文介绍了如何使用Windows API创建一个对话框应用程序,通过WNetOpenEnum和WNetEnumResource函数获取局域网中其他计算机的名称。步骤包括添加变量和函数、编写GetOtherPCNameDlg.cpp中的代码,并链接相关库模块。适合对网络编程和对话框设计感兴趣的开发者。
摘要由CSDN通过智能技术生成

一、创建对话框应用程序

a4c26d1e5885305701be709a3d33442f.png

二、编辑对话框资源

控件ID及标题

IDC_LIST_NAME

IDC_GETOTHERPCNAME 获取局域网其它计算机名

a4c26d1e5885305701be709a3d33442f.png

三、添加变量、函数

1、添加变量

a4c26d1e5885305701be709a3d33442f.png

2、添加函数

a4c26d1e5885305701be709a3d33442f.png

四、添加代码于“GetOtherPCNameDlg.cpp”文件内添加代码

1、于“GetOtherPCNameDlg.cpp”文件内添加包含语句

#include

"stdafx.h"

#include "GetOtherPCName.h"

#include "GetOtherPCNameDlg.h"

#include

2、

void

CGetOtherPCNameDlg::OnGetotherpcname()

{

// TODO: Add your control notification handler code here

DWORD dwScope = RESOURCE_CONTEXT;//局域网

NETRESOURCE *NetResource = NULL;

HANDLE hEnum;

WNetOpenEnum( dwScope, NULL, NULL, NULL, &hEnum

);

WSADATA wsaData;

WSAStartup(MAKEWORD(1,1),&wsaData);

CString strTemp;

if ( hEnum )//第一层

{

DWORD Count = 0xFFFFFFFF;

//尽可能多的返回

DWORD BufferSize = 2048;

LPVOID Buffer = new

char[2048];

WNetEnumResource( hEnum,

&Count, Buffer, &BufferSize

);

NetResource =

(NETRESOURCE*)Buffer;

strTemp.Format("局域网内的计算机有:");

m_ListName.AddString(strTemp);

unsigned int

i;

for (i = 0; i <

BufferSize/sizeof(NETRESOURCE); i++, NetResource++ )

{

if (

NetResource->dwUsage == RESOURCEUSAGE_CONTAINER

&&

NetResource->dwType == RESOURCETYPE_ANY )

{

if ( NetResource->lpRemoteName )

{

CString strFullName =

NetResource->lpRemoteName;

if ( 0 == strFullName.Left(2).Compare("\\\\")

) strFullName = strFullName.Right(strFullName.GetLength()-2);

strTemp.Format(" 计算机%d名称为:%s\n", i,strFullName);

m_ListName.AddString(strTemp);

}

}

}//for 循环结束

delete Buffer;

WNetCloseEnum( hEnum );

}//第一层 if 结束

WSACleanup();

//调用WSACleanup函数进行WinSock的清理工作,以便释放其占用的资源

}

五、添加对象/库模块

点“工程”,点“设置”,点选“连接”,添加“MPR.LIB ws2_32.lib.”模块。

a4c26d1e5885305701be709a3d33442f.png

六、编译

七、运行

a4c26d1e5885305701be709a3d33442f.png

八、函数说明

1、WNetOpenEnum函数声明

DWORD WNetOpenEnum(DWORD dwScope,DWORD dwType,DWORD

dwUsage,LPNETRESOURCE lpNetResource,LPHANDLE lphEnum)

dwScope:指定列举范围。

dwType:指定列举资源类型。

dwUsage:指定列举资源用法。第一个参数dwScope为RESOURCE_GLOBALNET,则该参数被勿略。

lpNetResource:指向包含列举资源相关信息之NETRESOURCE结构的指针。

lphEnum:指向列举变量之句柄指针,为调用WNetEnumResource()函数做准备。

功能:开始一网络资源或存在的网络连接枚举值。成功则返回非零值;失败则返回FALSE。

2、WNetEnumResource函数声明

DWORD WNetEnumResource(HANDLE hEnum,LPDWORD lpcCount,LPVOID

lpBuffer,LPDWORD lpBufferSize)

hEnum:WNetOpenEnum()函数返回的标识某枚举实例之句柄。

lpcCount:指定枚举条目数量。

lpBuffer:指向取得枚举结果之缓冲区指针,用NETRESOURCE结构数组表示。

lpBufferSize:指定上述缓冲区大小。

功能:获取详细网络资源信息。

3、NETRESOURCE结构定义

typedef struct_NETRESOURCE{

DWORD dwScope; //指定列举范围

DWORD dwType; //指定列举资源类型

DWORD dwDisplayType;

DWORD dwUsage; //指定列举资源用法

DWORD dwScopeLocalname;

DWORD dwRemoteName; //指向网络中远程计算机名

DWORD dwComment;

DWORD dwPrivider;

}NETRESOURCE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值