نمایش نتایج 1 تا 9 از 9

نام تاپیک: چگونه میتوان نوع ویندوز را تشخیص داد؟win98,win2000,winxp

  1. #1

    چگونه میتوان نوع ویندوز را تشخیص داد؟win98,win2000,winxp

    من میخواهم در دلفی 7 برنامه ای بنویسم که در منطق برنامه نیاز به دانستن نوع ویندوز نصب شده است؟
    لطفا راهنمایی کنید.ممنون
    اگر api خاصی دارد....آیا این api در مام ویتدوز ها مشترک است؟
    ممنون.

  2. #2


    {$IFDEF WIN32}
    function GetVersionEx(lpOs : poiNTer) : BOOL; stdcall;
    external 'kernel32' name 'GetVersionExA';
    {$ENDIF}

    procedure GetWINDOWSVersion(var Major : iNTeger;
    var Minor : iNTeger);
    var
    {$IFDEF WIN32}
    lpOS, lpOS2 : POsVersionInfo;
    {$ELSE}
    l : longiNT;
    {$ENDIF}
    begin
    {$IFDEF WIN32}
    GetMem(lpOS, SizeOf(TOsVersionInfo));
    lpOs^.dwOSVersionInfoSize := SizeOf(TOsVersionInfo);
    while getVersionEx(lpOS) = false do begin
    GetMem(lpos2, lpos^.dwOSVersionInfoSize + 1);
    lpOs2^.dwOSVersionInfoSize := lpOs^.dwOSVersionInfoSize + 1;
    FreeMem(lpOs, lpOs^.dwOSVersionInfoSize);
    lpOS := lpOs2;
    end;
    Major := lpOs^.dwMajorVersion;
    Minor := lpOs^.dwMinorVersion;
    FreeMem(lpOs, lpOs^.dwOSVersionInfoSize);
    {$ELSE}
    l := GetVersion;
    Major := LoByte(LoWord(l));
    Minor := HiByte(LoWord(l));
    {$ENDIF}
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Major : iNTeger;
    Minor : iNTeger;
    begin
    GetWINDOWSVersion(Major, Minor);
    Memo1.Lines.Add(INTToStr(Major));
    Memo1.Lines.Add(INTToStr(Minor));
    end;

  3. #3
    متاسفانه این سورس کد فقط یک سرس اعداد در اختیار ما قرار میدهد؟!!!
    اگر میشود راه بهتری را پیشنهاد کنید.من به دنبال نوع ویندوز هستم!!
    win98,xp,2000
    آیا api برای این منظور وجود دارد؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    function OperatingSystemDescription: String;
    begin
    if (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and (Win32MajorVersion = 4) then
    begin
    if (Win32MinorVersion = 90) and (Win32BuildNumber = 3000) then
    Result := 'Windows Me'
    else if (Win32MinorVersion = 1) and (Win32BuildNumber = 2222) then
    Result := 'Windows 98 SE'
    else if Win32MinorVersion = 0 then
    Result := 'Windows 95 ' + Win32CSDVersion
    else
    Result := Format('Windows %d.%d (Build %d) %s', [Win32MajorVersion,
    Win32MinorVersion, Win32BuildNumber, Win32CSDVersion]);
    end
    else if Win32Platform = VER_PLATFORM_WIN32_NT then
    begin
    if (Win32MajorVersion = 5) and (Win32MinorVersion = 0) then
    Result := Format('Windows 2000 (Build %d) %s', [Win32BuildNumber, Win32CSDVersion])
    else if (Win32MajorVersion = 5) and (Win32MinorVersion = 1) then
    Result := Format('Windows XP (Build %d) %s', [Win32BuildNumber, Win32CSDVersion])
    else
    Result := Format('Windows NT %d.%d (Build %d) %s', [Win32MajorVersion,
    Win32MinorVersion, Win32BuildNumber, Win32CSDVersion]);
    end
    else
    Result := Format('Windows %d.%d (Build %d) %s', [Win32MajorVersion,
    Win32MinorVersion, Win32BuildNumber, Win32CSDVersion]);
    end;

  5. #5
    آقای delphiArea واقعا ممنون.به زودی یک حال اساسی به سایت میخواهم بدهم.
    واقعا از شما دوستانی که اینقدر با حوصله جواب میدهید ممنون هستم.ان شاالله جبران میکنم.
    در ضمن به امضا من مخصوصا قسمت Share or die توجه کنید. :D
    delphi area = the delphi area 51 :wink:

  6. #6
    از رجیستری ویندوز هم می شه نام و version ویندوز رو بدست آورد. اتفاقا راحتر هم هست

  7. #7
    سلام
    دوست عزیز از داخل رجیستری چطوری می توان نوع ویندوز را تشخیص داد

  8. #8
    دوست عزیز از داخل رجیستری چطوری می توان نوع ویندوز را تشخیص داد
    در ویندوزهای NT Base:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

    مقادیر زیر:
    CurrentBuildNumber
    CurrentVersion
    CSDVersion
    ProductName
    در ویندوزهای 9X فکر کنم بجای زیرشاخه Windows NT در زیر شاخه Windows باشه.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  9. #9
    درود


    const

    cOsUnknown = -1;
    cOsWin95 = 0;
    cOsWin98 = 1;
    cOsWin98SE = 2;
    cOsWinME = 3;
    cOsWinNT = 4;
    cOsWin2000 = 5;
    cOsXP = 6;


    function GetOperatingSystem: Integer;
    var
    osVerInfo: TOSVersionInfo;
    majorVer, minorVer: Integer;
    begin
    Result := cOsUnknown;
    { set operating system type flag }
    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 := cOsWinNT
    else if (majorVer = 5) and (minorVer = 0) then
    Result := cOsWin2000
    else if (majorVer = 5) and (minorVer = 1) then
    Result := cOsXP
    else
    Result := cOsUnknown;
    end;
    VER_PLATFORM_WIN32_WINDOWS: { Windows 9x/ME }
    begin
    if (majorVer = 4) and (minorVer = 0) then
    Result := cOsWin95
    else if (majorVer = 4) and (minorVer = 10) then
    begin
    if osVerInfo.szCSDVersion[1] = 'A' then
    Result := cOsWin98SE
    else
    Result := cOsWin98;
    end
    else if (majorVer = 4) and (minorVer = 90) then
    Result := cOsWinME
    else
    Result := cOsUnknown;
    end;
    else
    Result := cOsUnknown;
    end;
    end
    else
    Result := cOsUnknown;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ShowMessage(IntToStr(GetOperatingSystem&#4 1;);
    end;


تاپیک های مشابه

  1. فارسی سازی Win2000
    نوشته شده توسط baabi در بخش برنامه نویسی در Delphi
    پاسخ: 13
    آخرین پست: دوشنبه 16 آبان 1384, 19:34 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •