获取主机名称是关于SetComputerNameEx函数的使用问题!

来源:互联网 发布:布局 知乎 编辑:程序博客网 时间:2024/05/21 10:37

最近做个小程序要使用到SetComputerNameEx和GetComputerNameEx两个函数,

下面是改函数在MSDN中的解释

BOOL SetComputerNameEx(
  COMPUTER_NAME_FORMAT NameType,  // name type
  LPCTSTR lpBuffer                // new name buffer
);BOOL SetComputerNameEx(
  COMPUTER_NAME_FORMAT NameType,  // name type
  LPCTSTR lpBuffer                // new name buffer
);

特别是:

Requirements

  Windows NT/2000 or later: Requires Windows 2000 or later.
  Windows 95/98/Me: Unsupported.
  Header: Declared in Winbase.h; include Windows.h.
  Library: Use Kernel32.lib.
  Unicode: Implemented as Unicode and ANSI versions on Windows 2000.

此外要使用该函数还要使用Platform SDK 2003要去微软网站下。

本来以为在要用到该函数的.CPP文件的开头部分加上

#define _WIN32_WINNT 0x0501

#include <windows.h>

两行就可以了,谁知道编译来编译去就是报:SetComputerNameEx未定义的错,在网上找了半天

按照http://topic.csdn.net/t/20031109/01/2441881.html这篇帖子改的,人家实现了我怎么报错呢?

 

为了找到问题的原应,我重新新建了一个Win32 Console Applicetion,在文件头加上上述代码,不报错。

先来想去,应该是_WIN32_WINNT 0x0501的问题。回头打开原来的工程,把

#define _WIN32_WINNT 0x0501剪切到stdafx.h的一开始部分,对了!

自己简单分析下原因,应该是由于这句话的意思#define _WIN32_WINNT 0x0501就是要在程序编译的时候说明

本程序实在XP下运行的,而编译器最开始编译的应该是stdafx.h,假如把#define _WIN32_WINNT 0x0501放在

其他cpp文件里,那么编译器并不认这句话,所以就会报错。:)这样解释还通啊!

各位高手多指教指教啊!

 

另外,补充做了如上工作后如果要是使用CFileDialog,那么请在#include   <afxwin.h>的后面添加下面这句:#undef   _WIN32_WINNT。否则对话框打开后会报错,有关详细文章请参考:http://dev.csdn.net/article/07/07075.shtm

原创粉丝点击