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

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

  1. #1
    کاربر دائمی آواتار khafanovich
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    206
    تشکر کردن
    0
    13 بار تشکر شده در 10 پست

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

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

  2. #2
    محروم شده
    تاریخ عضویت
    دی 1382
    پست
    611
    تشکر کردن
    0
    8 بار تشکر شده در 7 پست


    {$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
    کاربر دائمی آواتار khafanovich
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    206
    تشکر کردن
    0
    13 بار تشکر شده در 10 پست
    متاسفانه این سورس کد فقط یک سرس اعداد در اختیار ما قرار میدهد؟!!!
    اگر میشود راه بهتری را پیشنهاد کنید.من به دنبال نوع ویندوز هستم!!
    win98,xp,2000
    آیا api برای این منظور وجود دارد؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    تشکر کردن
    0
    56 بار تشکر شده در 26 پست
    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
    کاربر دائمی آواتار khafanovich
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    206
    تشکر کردن
    0
    13 بار تشکر شده در 10 پست
    آقای delphiArea واقعا ممنون.به زودی یک حال اساسی به سایت میخواهم بدهم.
    واقعا از شما دوستانی که اینقدر با حوصله جواب میدهید ممنون هستم.ان شاالله جبران میکنم.
    در ضمن به امضا من مخصوصا قسمت Share or die توجه کنید. :D
    delphi area = the delphi area 51 :wink:

  6. #6
    مدیر کل سایت آواتار vcldeveloper
    تاریخ عضویت
    بهمن 1382
    پست
    13,922
    تشکر کردن
    1,363
    9,099 بار تشکر شده در 4,754 پست
    از رجیستری ویندوز هم می شه نام و version ویندوز رو بدست آورد. اتفاقا راحتر هم هست

  7. #7
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1382
    پست
    1,119
    تشکر کردن
    26
    9 بار تشکر شده در 9 پست
    سلام
    دوست عزیز از داخل رجیستری چطوری می توان نوع ویندوز را تشخیص داد
    زکات علم نشر علم است (یا علی مدد)
    09131085012

  8. #8
    مدیر کل سایت آواتار vcldeveloper
    تاریخ عضویت
    بهمن 1382
    پست
    13,922
    تشکر کردن
    1,363
    9,099 بار تشکر شده در 4,754 پست
    دوست عزیز از داخل رجیستری چطوری می توان نوع ویندوز را تشخیص داد
    در ویندوزهای NT Base:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

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


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

  9. #9
    VIP آواتار m-khorsandi
    تاریخ عضویت
    آبان 1383
    محل زندگی
    تهران
    پست
    2,098
    تشکر کردن
    44
    1,063 بار تشکر شده در 384 پست
    درود


    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, 20:04 بعد از ظهر

بوک مارک کردن این تاپیک

بوک مارک کردن این تاپیک

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

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