Windows API一日一練(73)GetVersionEx函數
Windows發展還是非常快速的,從Win95,到Win98,再到Win2000和XP系統。每個系統的功能也有所不同,要想在程式裡區別不同的系統,就需要擷取系統的版本資訊。比如XP裡有防火牆,而其它以前的系統裡沒有帶有的。但有時編寫了一個伺服器程式,或者編寫BT程式,又需要設定一個連接埠對外面接收串連,因此在XP系統裡就需要設定防火牆的連接埠,而在XP以前的系統裡就沒有必要設定連接埠了。這樣的需求,就可以使用函數GetVersionEx來區分不同的系統。
函數GetVersionEx聲明如下:
WINBASEAPI
BOOL
WINAPI
GetVersionExA(
__inout LPOSVERSIONINFOA lpVersionInformation
);
WINBASEAPI
BOOL
WINAPI
GetVersionExW(
__inout LPOSVERSIONINFOW lpVersionInformation
);
#ifdef UNICODE
#define GetVersionEx GetVersionExW
#else
#define GetVersionEx GetVersionExA
#endif // !UNICODE
lpVersionInformation是返回系統版本的資訊。
調用函數的例子如下:
#001 //
#002 //擷取當前登入使用者的名稱。
#003 //蔡軍生 2007/11/14 QQ:9073204 深圳
#004 void GetWinVersion(void)
#005 {
#006 //
#007 OSVERSIONINFO osvi;
#008 osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
#009
#010 //擷取系統的版本資訊。
#011 ::GetVersionEx(&osvi);
#012 bool bIsWindowsXPorLater = (osvi.dwMajorVersion > 5) ||
#013 ( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) );
#014
#015 //顯示當前的版本。
#016 if (bIsWindowsXPorLater)
#017 {
#018 OutputDebugString(_T("Windows XP或更新版本!/r/n"));
#019 }
#020 else
#021 {
#022 OutputDebugString(_T("Windows XP以前版本!/r/n"));
#023 }
#024 }