想用来判断语言包的,所以必须有这个判断,而网上的那些资料很难理解

解决方案 »

  1.   

    用VC/MFC,我们如何获取系统当前系统的版本呢?其实关键的函数是GetVersionEx(),操作比较简单,看看咯~
     包含头文件 #include "tlhelp32.h"
     OSVERSIONINFOEX WinVersion;
     ZeroMemory(&WinVersion,sizeof(OSVERSIONINFOEX));
      WinVersion.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
     DWORD dwMajorVersion,dwMinorVersion,dwPlatformID;
     BOOL flag=(BOOL)GetVersionEx((OSVERSIONINFO *)&WinVersion);
      if(flag)
       {
              if (5==WinVersion.dwMajorVersion)       //判断高版本号
              {
                     MessageBox("高版本,表示2000以上");
              }
              if (1==WinVersion.dwMinorVersion)
               {
                     MessageBox("低版本,表示NT版本的不同系统");  //判断低版本号
                }
               dwMajorVersion=WinVersion.dwMajorVersion;
               dwMinorVersion=WinVersion.dwMinorVersion;
               dwPlatformID=WinVersion.dwPlatformId;
       }
     OSVERSIONINFOEX结构
     
      包含操作系统版本信息这些信息包括主要和次要版本号,内部版本号,一个平台标识符,并在系统上安装最新的Service Pack的信息。这个结构是用来与GetVersionEx的函数。OSVERSIONINFOEX是OSVERSIONINFO结构的扩展版本。
    dwMajorVersion和dwMinorVersion和OSVERSIONINFOEX.wProductType等一起标识一个系统
    详情见这里:http://msdn.microsoft.com/en-us/library/ms724833(v=vs.85).aspxWindows 7:dwMajorVersion==6 && dwMinorVersion==1 && OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
    Vista:dwMajorVersion==6 && dwMinorVersion==0 && OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
      

  2.   

    为什么我在WIN7 SP1的下面使用os.dwMajorVersion > 6   完全没反应
      

  3.   

    GetVersionEx
    正解.
    或去读注册表 或其他什么地方 能标市的
      

  4.   

    6.1 ==
    dwMajorVersion == 6
    dwMinorVersion == 1
      

  5.   

    为什么我在WIN7下是
    dwMajorVersion == 5
    dwMinorVersion == 1
      

  6.   

    各版本号看这里:http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
    如果用了兼容模式,指定了操作系统版本,可能会这样。
      

  7.   


    因为不用兼容模式无法运行看了下MSDN,也许还可以根据系统的DLL版本号来判断系统版本,比如这里:http://msdn.microsoft.com/en-us/library/windows/desktop/bb776779(v=vs.85).aspx
      

  8.   


    因为不用兼容模式无法运行看了下MSDN,也许还可以根据系统的DLL版本号来判断系统版本,比如这里:http://msdn.microsoft.com/en-us/library/windows/desktop/bb776779(v=vs.85).aspx关键是,兼容模式后,dwBuildNumber都变成了2600 , 不知道这个dll会不会也改变
      

  9.   


    因为不用兼容模式无法运行看了下MSDN,也许还可以根据系统的DLL版本号来判断系统版本,比如这里:http://msdn.microsoft.com/en-us/library/windows/desktop/bb776779(v=vs.85).aspx关键是,兼容模式后,dwBuildNumber都变成了2600 , 不知道这个dll会不会也改变DLL是不会变的...
      

  10.   


    因为不用兼容模式无法运行看了下MSDN,也许还可以根据系统的DLL版本号来判断系统版本,比如这里:http://msdn.microsoft.com/en-us/library/windows/desktop/bb776779(v=vs.85).aspx关键是,兼容模式后,dwBuildNumber都变成了2600 , 不知道这个dll会不会也改变DLL是不会变的...这个还是不实用,因为我的C盘是安装XP的,D盘才是WIN7,这样一来,先搜索C盘的话,就会导致以C盘XP的版本为先来使用语言,但是在WIN7系统里,SetThreadLocale 已经不起作用了
      

  11.   


    用API取当前的系统路径就好了呀,GetSystemDirectory
    不用自己去搜索,用API获取到当前系统的路径,再拼出DLL的路径就可以了。
      

  12.   


    用API取当前的系统路径就好了呀,GetSystemDirectory
    不用自己去搜索,用API获取到当前系统的路径,再拼出DLL的路径就可以了。谢了,顺便问一下,用注册表可以吗?
    LPCTSTR data_Set="Software\\Microsoft\\Windows NT\\CurrentVersion\\";
      

  13.   


    用API取当前的系统路径就好了呀,GetSystemDirectory
    不用自己去搜索,用API获取到当前系统的路径,再拼出DLL的路径就可以了。谢了,顺便问一下,用注册表可以吗?
    LPCTSTR data_Set="Software\\Microsoft\\Windows NT\\CurrentVersion\\";
    注册表应该也可以...