如何识别系统是简体还是繁体,是win9x还是win2000

解决方案 »

  1.   

    转!!type 
       //本地信息结构类型
       //title是项目名称
       //value是内容
       LocaleRecord = record
         Title: string;
         Value: string;
       end;var
       //存储本地信息的变量数组
       LocaleRec: array[1..25] of LocaleRecord;
    procedure GetGenericInfo;
    var
      BufLen: DWORD;
      Buffer: PChar;
    begin
        BufLen:=255; //内存长度
        GetMem(Buffer, BufLen); //分配内存
        try
          GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLANGUAGE, Buffer, BufLen);
             LocaleRec[01].Value := Buffer;  LocaleRec[01].Title := '本地语言';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SENGLANGUAGE, Buffer, BufLen);
             LocaleRec[02].Value := Buffer;  LocaleRec[02].Title := '本地语言的英语名字 (Iso 639)';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SABBREVLANGNAME, Buffer, BufLen);
             LocaleRec[03].Value := Buffer;  LocaleRec[03].Title := '本地语言的缩写名字 (Iso 639)';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICOUNTRY, Buffer, BufLen);
             LocaleRec[04].Value := Buffer;  LocaleRec[04].Title := '国家代码 (IBM code)';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SCOUNTRY, Buffer, BufLen);
             LocaleRec[05].Value := Buffer;  LocaleRec[05].Title := '国家全代码';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SABBREVCTRYNAME, Buffer, BufLen);
             LocaleRec[06].Value := Buffer;  LocaleRec[06].Title := '国家缩略代码 (Iso 3166)';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SINTLSYMBOL, Buffer, BufLen);
             LocaleRec[07].Value := Buffer;  LocaleRec[07].Title := '国际货币符号 (Iso 4217)';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SLIST, Buffer, BufLen);
             LocaleRec[08].Value := Buffer;  LocaleRec[08].Title := 'List separator';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IMEASURE, Buffer, BufLen);
             LocaleRec[09].Value := Buffer;  LocaleRec[09].Title := 'System of measurement';
             case LocaleRec[09].Value[1] of
               '0' : LocaleRec[09].Value := 'Decimal';
               '1' : LocaleRec[09].Value := 'Usa';
             end;      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDECIMAL, Buffer, BufLen);
             LocaleRec[10].Value := Buffer;  LocaleRec[10].Title := '小数点';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IDIGITS, Buffer, BufLen);
             LocaleRec[11].Value := Buffer;  LocaleRec[11].Title := 'Number of decimal digits';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SCURRENCY, Buffer, BufLen);
             LocaleRec[12].Value := Buffer;  LocaleRec[12].Title := 'Local monetary symbol';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SMONDECIMALSEP, Buffer, BufLen);
             LocaleRec[13].Value := Buffer;  LocaleRec[13].Title := 'Currency decimal separator';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SMONTHOUSANDSEP, Buffer, BufLen);
             LocaleRec[14].Value := Buffer;  LocaleRec[14].Title := 'Currency thousand separator';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICURRDIGITS, Buffer, BufLen);
             LocaleRec[15].Value := Buffer;  LocaleRec[15].Title := 'Currency decimal digits';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICURRENCY, Buffer, BufLen);
             LocaleRec[16].Value := Buffer;  LocaleRec[16].Title := 'Positive currency mode';
             case LocaleRec[16].Value[1] of
               '0': LocaleRec[16].Value := 'Prefix, no separation';
               '1': LocaleRec[16].Value := 'Suffix, no separation';
               '2': LocaleRec[16].Value := 'Prefix, 1-char. separation';
               '3': LocaleRec[16].Value := 'Suffix, 1-char. separation';
             end;      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_INEGCURR, Buffer, BufLen);
             LocaleRec[17].Value := Buffer;  LocaleRec[17].Title := 'Negative currency mode';
             case LocaleRec[17].Value[1] of
               '0': LocaleRec[17].Value := '$1.1)';
               '1': LocaleRec[17].Value := '-$1.1';
               '2': LocaleRec[17].Value := '$-1.1';
               '3': LocaleRec[17].Value := '$1.1-';
               '4': LocaleRec[17].Value := '(1.1$)';
               '5': LocaleRec[17].Value := '-1.1$';
               '6': LocaleRec[17].Value := '1.1-$';
               '7': LocaleRec[17].Value := '1.1$-';
               '8': LocaleRec[17].Value := '-1.1 $ (space before $)';
               '9': LocaleRec[17].Value := '-$ 1.1 (space after $)';
             end;      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SDATE, Buffer, BufLen);
             LocaleRec[18].Value := Buffer;  LocaleRec[18].Title := '日期分割符';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_STIME, Buffer, BufLen);
             LocaleRec[19].Value := Buffer;  LocaleRec[19].Title := '时间分割符';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_STIMEFORMAT, Buffer, BufLen);
             LocaleRec[20].Value := Buffer;  LocaleRec[20].Title := '时间格式';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE, Buffer, BufLen);
             LocaleRec[21].Value := Buffer;  LocaleRec[21].Title := 'Short date format';      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IDATE, Buffer, BufLen);
             LocaleRec[22].Value := Buffer;  LocaleRec[22].Title := 'Short date order';
             case LocaleRec[22].Value[1] of
               '0': LocaleRec[22].Value := 'Month-Day-Year';
               '1': LocaleRec[22].Value := 'Day-Month-Year';
               '2': LocaleRec[22].Value := 'Year-Month-Day';
             end;      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ILDATE, Buffer, BufLen);
             LocaleRec[23].Value := Buffer;  LocaleRec[23].Title := 'Long date order';
             case LocaleRec[23].Value[1] of
               '0': LocaleRec[23].Value := 'Month-Day-Year';
               '1': LocaleRec[23].Value := 'Day-Month-Year';
               '2': LocaleRec[23].Value := 'Year-Month-Day';
             end;      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ITIME, Buffer, BufLen);
             LocaleRec[24].Value := Buffer;  LocaleRec[24].Title := 'Time format specifier';
             case LocaleRec[24].Value[1] of
               '0': LocaleRec[24].Value := 'AM / PM 12-hour format';
               '1': LocaleRec[24].Value := '24-hour format';
             end;      GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_ICENTURY, Buffer, BufLen);
             LocaleRec[25].Value := Buffer;  LocaleRec[25].Title := 'Year format';
             case LocaleRec[25].Value[1] of
               '0': LocaleRec[25].Value := 'Abbreviated 2-digit century';
               '1': LocaleRec[25].Value := 'Full 4-digit century';
             end;    finally
          FreeMem(Buffer);
        end;
    end; {- GetGenericInfo }
      

  2.   

    win98 or win2000 or .....
    const strOsType: array[0..7] of string=('osUnknown','osWin95','osWin98','osWin98se','osWinme','osWinnt4','osWin2k','osWinxp');
    type OSType=(osUnknown,osWin95,osWin98,osWin98se,osWinme,osWinnt4,osWin2k,osWinxp);Function GetOSVersion : OSType;
    Var
      osVerInfo : TOSVersionInfo;
      majorVer, minorVer : Integer;
    Begin  //Result := osUnknown;
      osVerInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );
      If ( GetVersionEx( osVerInfo ) ) Then 
      Begin
        majorVer := osVerInfo.dwMajorVersion;
        minorVer := osVerInfo.dwMinorVersion;
        Case ( osVerInfo.dwPlatformId ) Of
          VER_PLATFORM_WIN32_NT : { Windows NT/2000 }
          Begin
            If ( majorVer <= 4 ) Then
            Result := osWinnt4
            Else
            If ( ( majorVer = 5 ) And ( minorVer= 0 ) ) Then
            Result := osWin2k
            Else
            If ( ( majorVer = 5) And ( minorVer = 1 ) ) Then
            Result := osWinxp
            Else
            Result := OsUnknown;
          End;
          VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }
          Begin        If ( ( majorVer = 4 ) And ( minorVer = 0 ) ) Then
            Result := osWin95
            Else If ( ( majorVer = 4 ) And ( minorVer = 10 ) ) Then 
            Begin
              If ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) Then
              Result := osWin98se
              Else
              Result := osWin98;
            End 
            Else If ( ( majorVer = 4) And ( minorVer = 90 ) ) Then
            Result := OsWinME
            Else
            Result := OsUnknown;      End;
          Else
          Result := OsUnknown;
        End; //end of case
      End Else
      Result := OsUnknown;End;procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(strOsType[integer(GetOSVersion)]);
    end;
      

  3.   

    win98 or win2000
    procedure TForm1.Button1Click(Sender: TObject);
    var
    P:OSVERSIONINFO;
    begin
       P.dwOSVersionInfoSize := SizeOf(P);
       GetVersionEx(P);
       showmessage(p.szCSDVersion);
       case p.dwMajorVersion of
        3: ShowMessage('nt 3.51');
        4:
          begin
            case p.dwMinorVersion of
              0: if p.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then
                   ShowMessage('95')
                 else
                   ShowMessage('nt 4.0');
              10: ShowMessage('98');
              90: ShowMessage('me');
            end;
          end;
        5:
          begin
            case p.dwMinorVersion of
              0: ShowMessage('Windows 2000');
              1: ShowMessage('xp');
            end;
          end;end;
    end;