獲取主機名稱是關於SetComputerNameEx函數的使用問題!

最近做個小程序要使用到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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章