有时候在写WM上程序时需要对不同的WM版本做不同的处理, 于是这就需要判断出不同的版本来. sdk提供了一个api, 让开发者获知运行该程序的系统版本.
BOOL GetVersionEx(
LPOSVERSIONINFO lpVersionInformation
);
这个api很简单, 没啥好说的. 主要是这个结构体
typedef struct _OSVERSIONINFO{
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
TCHAR szCSDVersion[128];
} OSVERSIONINFO;
dwOSVersionInfoSize 这个结构的大小, 使用之前, sizeof(OSVERSIONINFO)赋值给它就是了.
dwMajorVersion 主版本号
dwMinorVersion 次版本号
dwBuildNumber 编译时的版本标记
dwPlatformID 操作系统的标识, 在mobile系统上这个值都是 VER_PLATFORM_WIN32_CE, 及wince系统
szCSDVersion 附加说明, 字符串格式.从我测试的情况看, 好像都是空字符串.
这里的版本号实际上指的的wince的版本号, 而不是我们熟悉的什么 wm2003, wm5, wm6之类的.
比如说 DOPOD D600 上的系统版本号 5.1.422 . dwMajorVersion 对应的是5; dwMinorVersion 对应的是1; dwBuildNumber对应的是422 .
判断sp还是ppc, 则需要用到另外一个函数:
BOOL SystemParametersInfo(
UINT uiAction,
UINT uiParam,
PVOID pvParam,
UINT fWinIni
);
这个函数的使用也很简单, 要获取系统平台, 将uiAction传进参数SPI_GETPLATFORMTYPE, uiParam是pvParam的大小, pvParam是接收数据的buf, fWinIni设为0即可.
如果pvParam传出的值是"Smartphone", 则表示是sp, 否则是ppc.
文章评论