这样子一个简单程序,只是读当前计算机的DNS名,但,GetComputerNameEx调用出错……// System.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <Windows.h>DWORD BufferLen = 1024;
LPCTSTR Buffer = new char[1024];
int _tmain(int argc, _TCHAR* argv[])
{
if (!GetComputerNameEx(2, Buffer, & BufferLen)){
return 1;} std::cout<<Buffer;
system("PAUSE");
return 0;
}
e:\Projects\sysinfo\System\System.cpp(15): error C3861: “GetComputerNameEx”: 即使使用参数相关的查找,也未找到标识符
//#include "stdafx.h"
#include <Windows.h>DWORD BufferLen = 1024;
LPCTSTR Buffer = new char[1024];
int _tmain(int argc, _TCHAR* argv[])
{
if (!GetComputerNameEx(2, Buffer, & BufferLen)){
return 1;} std::cout<<Buffer;
system("PAUSE");
return 0;
}
e:\Projects\sysinfo\System\System.cpp(15): error C3861: “GetComputerNameEx”: 即使使用参数相关的查找,也未找到标识符
DWORD bufferLen = 255;
GetComputerName(buffer, &bufferLen);
AfxMessageBox(buffer);
.net框架里面VC7的winbase.h里面有定义
BOOL GetComputerNameEx(
COMPUTER_NAME_FORMAT NameType, // name type
LPTSTR lpBuffer, // name buffer
LPDWORD lpnSize // size of name buffer
);然后把Kernel32.lib包含进你的工程.
其他各位:各们的办法都试过了,还是老毛病,找不到这个函数……
其实在IDLE里直接查找声明就找到啦,不知道为什么编译器就是不认。
TCHAR Buffer[1024];//函数声明
typedef enum _COMPUTER_NAME_FORMAT {
ComputerNameNetBIOS,
ComputerNameDnsHostname,
ComputerNameDnsDomain,
ComputerNameDnsFullyQualified,
ComputerNamePhysicalNetBIOS,
ComputerNamePhysicalDnsHostname,
ComputerNamePhysicalDnsDomain,
ComputerNamePhysicalDnsFullyQualified,
ComputerNameMax
} COMPUTER_NAME_FORMAT ;#ifdef __cplusplus
extern "C" {
#endif/*
BOOL GetComputerNameEx(
COMPUTER_NAME_FORMAT NameType, // name type
LPTSTR lpBuffer, // name buffer
LPDWORD lpnSize // size of name buffer
);
*/WINBASEAPI
BOOL
WINAPI
GetComputerNameExA (
COMPUTER_NAME_FORMAT NameType, // name type
LPTSTR lpBuffer, // name buffer
LPDWORD lpnSize // size of name buffer
);
WINBASEAPI
BOOL
WINAPI
GetComputerNameExW (
COMPUTER_NAME_FORMAT NameType, // name type
LPTSTR lpBuffer, // name buffer
LPDWORD lpnSize // size of name buffer
);
#ifdef UNICODE
#define GetComputerNameEx GetComputerNameExW
#else
#define GetComputerNameEx GetComputerNameExA
#endif // !UNICODE#ifdef __cplusplus
}
#endif//调用的时候
COMPUTER_NAME_FORMAT NameType = ComputerNameDnsHostname;
if (!GetComputerNameEx(NameType, Buffer, &BufferLen))
{
return 1;
}
#define _WIN32_WINNT 0x0500
宏就可以了
#define _WIN32_WINNT 0x0500
#include <Windows.h>
#include <Winbase.h>#include "stdafx.h"DWORD BufferLen = 1024;
LPSTR Buffer = new char[1024];int _tmain(int argc, _TCHAR* argv[])
{
if (!GetComputerNameEx(ComputerNameDnsDomain, Buffer, &BufferLen))
{
return 1;
} cout<<Buffer;
system("PAUSE");
return 0;
}谢谢郭子这么晚还陪我调程序,老规矩,大家同喜,过一两天散分
下面大家讨论一下怎么在Windows 2000以前的计算机上得到域名信息好吗?谢谢!