上QQ阅读APP看书,第一时间看更新
2.10 获取本地计算机的域名
域名(Domain Name)或称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
可以通过函数GetNetworkParams来获取本地计算机的域名。这个函数其实可以检索本地计算机的网络参数,包括域名、主机名等。当然如果本机没有设置域名,那么得到的域名字段内容就是一个空字符串。该函数声明如下:
DWORD GetNetworkParams(PFIXED_INFO pFixedInfo, PULONG pOutBufLen);
其中,参数pFixedInfo指向一个缓冲区的指针,该缓冲区包含一个固定的信息结构,该结构接收本地计算机的网络参数(如果函数成功),调用GetNetworkParams函数之前,调用方必须分配正确大小的缓冲区才会获得内容信息,如果该参数为NULL,那么pOutBufLen能获得实际所需要的缓冲区大小;参数pOutBufLen指向一个ULONG变量的指针,该变量指定固定信息结构的大小。如果此大小不足以容纳信息,GetNetworkParams将使用所需大小填充此变量,并返回错误代码ERROR_BUFFER_OVERFLOW。如果函数成功,返回值为ERROR_SUCCESS;如果函数失败,返回值是错误代码。
【例2.10】获取本机的域名
(1)新建一个对话框工程Demo。
(2)切换到资源视图,在对话框上放一个按钮,然后添加事件代码:
void CDemoDlg::OnTest() { //获得需要的缓冲区大小 DWORD nLength = 0; if (GetNetworkParams(NULL, &nLength) != ERROR_BUFFER_OVERFLOW) { return; } FIXED_INFO* pFixedInfo = (FIXED_INFO*)new BYTE[nLength]; //获得本地计算机网络参数 if (GetNetworkParams(pFixedInfo, &nLength) != ERROR_SUCCESS) { delete[] pFixedInfo; return; } //获得本地计算机域名 CString strText = _T(""); strText.Format(_T("本地计算机的域名:\n%s"), pFixedInfo->DomainName); AfxMessageBox(strText); delete[] pFixedInfo; }
(3)保存工程并运行,运行结果如图2-14所示。
图2-14