请教下windwovt lily m16 sapi5函数ImmG...

获取Windwos的版本和名称 -- GetVersion|GetVersionEx - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 13时,
Windows API 中有两个函数可以得到系统版本信息:GetVersion和GetVersionEx。
&&&&& GetVersion这个函数曾经困扰了很多程序员,其本来设计的是在DWORD返回值中用低位的那个字表示MS-DOS的版本号,高位的那个字表示Windows版本号。对于每个字来说,高位字节代表主要版本号,低位字节代表次要版本号。可是因为编写此函数的程序员犯了一个错误,使得此函数返回的Windows版本号颠倒了(即把主要版本号放到了低位字节,而次要版本号放到了高位字节)。当发现此错误的时候已经有很多程序员在使用这个函数了,Microsoft只好将错就错,直接把原来的API文档给改了过来。
&&&&& 为了解决GetVersion带来的问题,Microsoft后来开发了一个新的函数GetVersionEx,用它能够得到更详细的Windows系统的版本信息,下面我就写写GetVersionEx的使用方法。
函数原型:
BOOL GetVersionEx(POSVERSIONINFO pVersionInformation);
我们先来看看OSVERSIONINFOEX这个结构:
typedef struct {
DWORD dwOSVersionInfoS&&&&&& //在使用GetVersionEx之前要将此初始化为结构的大小
DWORD dwMajorV&&&&&&&&&&&&&& //系统主版本号
DWORD dwMinorV&&&&&&&&&&&&&& //系统次版本号
DWORD dwBuildN&&&&&&&&&&&&&& //系统构建号
DWORD dwPlatformId;&&&&&&&&&&&&&&&&& //系统支持的平台(详见附1)
TCHAR szCSDVersion[128];&&&&&&&&& //系统补丁包的名称
WORD wServicePackM&&&&&&&&&&& //系统补丁包的主版本
WORD wServicePackM&&&&&&&&&&& //系统补丁包的次版本
WORD wSuiteM&&&&&&&&&&&&&&&&&&&&& //标识系统上的程序组(详见附2)
BYTE wProductT&&&&&&&&&&&&&&&&&&& //标识系统类型(详见附3)
BYTE wR&&&&&&&&&&&&&&&&&&&&&&&& //保留,未使用
} OSVERSIONINFOEX, *POSVERSIONINFOEX;
这个结构在Windows 2000后出现,老版本的OSVERSIONINFO结构没有wServicePackMajor、wServicePackMinor、wSuiteMask、wProductType和wReserved这几个成员。
接着在调用函数之前先初始化结构的大小:
OSVERSIONINFOEX
os.dwOSVersionInfoSize=sizeof(os);
函数返回值为TRUE表示成功:
if(!GetVersionEx((OSVERSIONINFO *)&os))
&&&&& return FALSE;
函数调用成功以后就可以通过OSVERSIONINFOEX来查看系统的版本信息了。
下面是一个通过系统版本来判断操作系统名称的例子:
代码片段(2)
1.&[代码][C/C++]代码&&&&
CString getSystemName()
SYSTEM_INFO
//用SYSTEM_INFO结构判断64位AMD处理器
GetSystemInfo(&info);
//调用GetSystemInfo函数填充结构
OSVERSIONINFOEX
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
/*在调用函数前必须用sizeof(OSVERSIONINFOEXA)填充dwOSVersionInfoSize结构成员*/
if(GetVersionEx((OSVERSIONINFO *)&os))
/*调用GetVersionEx函数OSVERSIONINFOEX结构必须将指针类型强制转换*/
//下面根据版本信息判断操作系统名称
switch(os.dwMajorVersion){
//判断主版本号
switch(os.dwMinorVersion){
//判断次版本号
if(os.dwPlatformId==VER_PLATFORM_WIN32_NT)
vname=_T("Microsoft Windows NT 4.0");
//1996年7月发布
else if(os.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
vname=_T("Microsoft Windows 95");
vname=_T("Microsoft Windows 98");
vname=_T("Microsoft Windows Me");
switch(os.dwMinorVersion){
//再比较dwMinorVersion的值
vname=_T("Microsoft Windows 2000");
//1999年12月发布
vname=_T("Microsoft Windows XP");
//2001年8月发布
if(os.wProductType==VER_NT_WORKSTATION && /
info.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
vname=_T("Microsoft Windows XP Professional x64 Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0)
vname=_T("Microsoft Windows Server 2003");
//2003年3月发布
else if(GetSystemMetrics(SM_SERVERR2)!=0)
vname=_T("Microsoft Windows Server 2003 R2");
switch(os.dwMinorVersion){
if(os.wProductType==VER_NT_WORKSTATION)/*
VER_NT_WORKSTATION是桌面系统 */
vname=_T("Microsoft Windows Vista");
vname=_T("Microsoft Windows Server 2008");
//服务器版本
if(os.wProductType==VER_NT_WORKSTATION)
vname=_T("Microsoft Windows 7");
vname=_T("Microsoft Windows Server 2008 R2");
vname=_T("未知操作系统");
return _T("");
2.&[代码]返回具体的版本名称&&&&
CString getVersionMark()
OSVERSIONINFOEX
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
if(GetVersionEx((OSVERSIONINFO *)&os)){
switch(os.dwMajorVersion){
//先判断操作系统版本
switch(os.dwMinorVersion){
//Windows 2000
if(os.wSuiteMask==VER_SUITE_ENTERPRISE)
vmark=_T("Advanced Server");
//Windows XP
if(os.wSuiteMask==VER_SUITE_EMBEDDEDNT)
vmark=_T("Embedded");
else if(os.wSuiteMask==VER_SUITE_PERSONAL)
vmark=_T("Home Edition");
vmark=_T("Professional");
if(GetSystemMetrics(SM_SERVERR2)==0 && /
os.wSuiteMask==VER_SUITE_BLADE)
//Windows Server 2003
vmark=_T("Web Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0 && /
os.wSuiteMask==VER_SUITE_COMPUTE_SERVER)
vmark=_T("Compute Cluster Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0 && /
os.wSuiteMask==VER_SUITE_STORAGE_SERVER)
vmark=_T("Storage Server");
else if(GetSystemMetrics(SM_SERVERR2)==0 && /
os.wSuiteMask==VER_SUITE_DATACENTER)
vmark=_T("Datacenter Edition");
else if(GetSystemMetrics(SM_SERVERR2)==0 && /
os.wSuiteMask==VER_SUITE_ENTERPRISE)
vmark=_T("Enterprise Edition");
else if(GetSystemMetrics(SM_SERVERR2)!=0 &&
os.wSuiteMask==VER_SUITE_STORAGE_SERVER)
Windows Server 2003 R2*/
vmark=_T("Storage Server");
switch(os.dwMinorVersion){
if(os.wProductType!=VER_NT_WORKSTATION && /
os.wSuiteMask==VER_SUITE_DATACENTER)
Windows Server 2008*/
vmark=_T("Datacenter Server");
else if(os.wProductType!=VER_NT_WORKSTATION &&
os.wSuiteMask==VER_SUITE_ENTERPRISE)
vmark=_T("Enterprise");
else if(os.wProductType==VER_NT_WORKSTATION && /
os.wSuiteMask==VER_SUITE_PERSONAL)
//Windows Vista
vmark=_T("Home");
vmark=_T("");
return _T("");
开源中国-程序员在线工具:
请问如何解决老版本老OSVERSIONINFO结构缺少变量问题?
2楼:mcgrady911 发表于
请问如何解决老版本老OSVERSIONINFO结构缺少变量问题?
3楼:mcgrady911 发表于
请问如何解决老版本老OSVERSIONINFO结构缺少变量问题?
开源从代码分享开始
鉴客的其它代码您现在的位置:
& 开发者网络栏目导航    、 、     精彩专题回顾            
            Windwos API全攻略
 【编者按】Windows API即Application Program Interface(应用程序接口)――Windows系统提供给用户进行系统编程和外设控制的强大的函数库,可以实现所有WINDOWS下可以实现的功能。然而对于初学者来说,"浩瀚"的API函数总是显得那么神奇与不可琢磨,因此在实际应用过程中不能够灵活应用。本专题将系统地对各种API函数进行分类,并结合实例来示范VB中调用各API函数的步骤和实现的功能。例子均在WINDOWS98,VB6.0编译通过。
介绍API的概念,API开发的历史和现状等  
  在各种可视化编程环境下,都可以调用Windows API,本专题只介绍如何用VB 调用Windows API……
         三、Windows API函数的分类和实例
   控件窗体类
   硬件与系统类
   *  *  *  *     *   *  * 
 *  *  *   *  *  *  * 
   设备场景类
   绘图类
 *   *  *  *  *   
 *  *  *  *  *
   文件操作类
   网络类
 *  *  *   *  *   * 
 *  *  * 
   Windows 消息类
   进程与线程类
 *  *  *  *  * 
 *   *  *  * 
   文本与字体类
   位图、图标与光栅运算类
 *  *   
 *  *  * 二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1039)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Windwos错误代码说明一览表',
blogAbstract:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}C++数据类型与C#对应关系 c#调用WINDWOS API时,非常有用
C++数据类型与C#对应关系 c#调用WINDWOS API时,非常有用
[摘要:C++输进输出C# ================================== charchr[255]OStringBuilder KCA_DIRIint LPCSTRIstring intIint LPSTROStringBuilder int*Ooutint DWORDIint DWORD*Ooutint BOOLIbool Rc_DBMgrIIntPtr long*Ooutlong API取C#的数据范例对应闭]
C++&&&&&&&&&&&输入输出&&&&C#&==================================char&chr[255]&&&O&&&&StringBuilderKCA_DIR&&&&&&&&&&&&I&&&&intLPCSTR&&&&&&&&&&&&&I&&&&stringint&&&&&&&&&&&&&&&&&&&&&&&&I&&&&intLPSTR&&&&&&&&&&&&&&O&&&&StringBuilderint*&&&&&&&&&&&&&&&&&&&&&&O&&&&out&intDWORD&&&&&&&&&&&&&&I&&&&intDWORD*&&&&&&&&&&O&&&&out&intBOOL&&&&&&&&&&&&&&&&&I&&&&boolRc_DBMgr&&&&&&&&&&I&&&&IntPtrlong*&&&&&&&&&&&&&&&&&&O&&&&out&long&API与C#的数据类型对应关系表API数据类型类型描述C#类型API数据类型类型描述C#类型WORD16位无符号整数ushortCHAR字符charLONG32位无符号整数intDWORDLONG64位长整数longDWORD32位无符号整数uintHDC设备描述表句柄intHANDLE句柄,32位整数intHGDIOBJGDI对象句柄intUINT32位无符号整数uintHINSTANCE实例句柄intBOOL32位布尔型整数boolHWM窗口句柄intLPSTR指向字符的32位指针stringHPARAM32位消息参数intLPCSTR指向常字符的32位指针StringLPARAM32位消息参数intBYTE字节byteWPARAM32位消息参数int&Wtypes.h&中的非托管类型非托管&C&语言类型托管类名说明HANDLEvoid*System.IntPtr32&位BYTEunsigned&charSystem.Byte8&位SHORTshortSystem.Int1616&位WORDunsigned&shortSystem.UInt1616&位INTintSystem.Int3232&位UINTunsigned&intSystem.UInt3232&位LONGlongSystem.Int3232&位BOOLlongSystem.Int3232&位DWORDunsigned&longSystem.UInt3232&位ULONGunsigned&longSystem.UInt3232&位CHARcharSystem.Char用&ANSI&修饰。LPSTRchar*System.String&或&System.StringBuilder用&ANSI&修饰。LPCSTRConst&char*System.String&或&System.StringBuilder用&ANSI&修饰。LPWSTRwchar_t*System.String&或&System.StringBuilder用&Unicode&修饰。LPCWSTRConst&wchar_t*System.String&或&System.StringBuilder用&Unicode&修饰。FLOATFloatSystem.Single32&位DOUBLEDoubleSystem.Double64&位
感谢关注 Ithao123C/c++频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊阅读排行榜
评论排行榜

我要回帖

更多关于 vt lily m16 sapi5 的文章

 

随机推荐