いまさらのWindowsCEプログラミング(10) - システム情報の取得
今回は様々なシステム情報の取得方法を説明します。
GetVersionEx
GetVersionEx()でOSのバージョンが取得できます。
OSVERSIONINFO osvi; memset(&osvi,0, sizeof(OSVERSIONINFO)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx( &osvi );
OSVERSIONINFOは次のように定義された構造体です。
typedef struct _OSVERSIONINFO{ DWORD dwOSVersionInfoSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformId; TCHAR szCSDVersion[128]; } OSVERSIONINFO;
Dell Axim X50Vの場合、次の値が戻ります。スタート→設定→システム→バージョン情報で表示されるバージョン番号と同じですね。
OS | 表示 | dwPlatformId | dwMajorVersion | dwMinorVersion | dwBuildNumber |
Dell Axim X50V | 4.21.1088 | VER_PLATFORM_WIN32_CE | 4 | 21 | 1088 |
ちなみにWindowsの場合、次の値が戻ります。
OS | 表示 | dwPlatformId | dwMajorVersion | dwMinorVersion | dwBuildNumber |
Windows 95 | 4.00.950 | VER_PLATFORM_WIN32_WINDOWS | 4 | 0 | 950 |
Windows 95 OSR 2 | 4.00.950B | VER_PLATFORM_WIN32_WINDOWS | 4 | 0 | 1111 |
Windows 95 OSR 2.5 | 4.00.950C | VER_PLATFORM_WIN32_WINDOWS | 4 | 0 | 1212 |
Windows 98 | 4.10.1998 | VER_PLATFORM_WIN32_WINDOWS | 4 | 10 | 1998 |
Windows 98 SE | 4.10.2222 | VER_PLATFORM_WIN32_WINDOWS | 4 | 10 | 2222 |
Windows Me | 4.90.3000 | VER_PLATFORM_WIN32_WINDOWS | 4 | 90 | 3000 |
Windows NT 3.51 | VER_PLATFORM_WIN32_NT | 3 | 51 | ||
Windows NT 4.0 | 4.00.1381 | VER_PLATFORM_WIN32_NT | 4 | 0 | 1381 |
Windows 2000 | 5.00.2195 | VER_PLATFORM_WIN32_NT | 5 | 0 | 2195 |
Windows XP | VER_PLATFORM_WIN32_NT | 5 | 1 |
SystemParametersInfo
SystemParametersInfoは、システム全体に関するパラメータを取得または設定するAPIです。
画面の作業領域のサイズを取得する例: RECT wrc; SystemParametersInfo(SPI_GETWORKAREA, 0, &wrc, 0);
応用例:PocketPostPetかどうかを判定 OSVERSIONINFO osvi; memset(&osvi,0, sizeof(OSVERSIONINFO)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx( &osvi ); RECT wrc; SystemParametersInfo(SPI_GETWORKAREA, 0, &wrc, 0); if ( wrc.right == 320 && osvi.dwPlatformId == VER_PLATFORM_WIN32_HH && osvi.dwMajorVersion == 2 && osvi.dwMinorVersion == 12 ) { // WindowsCE 2.12 でかつ横幅が320なら、きっとPocketPostPet! }