View Full Version : بدست آوردن اطلاعات ویندوز در دلفی
  
sina_ali
دوشنبه 26 مهر 1389, 02:38 صبح
سلام 
میخواستم بدونم در دلفی چطوری میشه اطلاعات ویندوز مثل ورژن (ویستا ،7)و.... بهمون بده
کد های که در اینترنت و.... هست ویستا و 7 رو نمیشناسه
ممنون
Felony
دوشنبه 26 مهر 1389, 07:16 صبح
ورژن ویندوز رو از روی شماره Major و Minor به دست میارن ، تا جایی که من اطلاع دارم این شماره در ویستا و 7 یکی هست چون 7 نسخه تکمیل شده ویستا هست ، پس کد زیر در ویندوز ویستا و 7 یک نتیجه داره و نمیتونه این دو سیستم عامل رو از هم تشخیص بده (اگر راه حل جدیدی برای حل این مشکل پیدا کردم همین جا ذکر میکنم ) :
type TWinVersion = (wvUnknown, wvWin95, wvWin98, wvWin98SE, wvWinNT, wvWinME, wvWin2000, wvWinXP, wvWinVista) ;
function GetWinVersion: TWinVersion;
var
  osVerInfo: TOSVersionInfo;
  majorVersion, minorVersion: Integer;
begin
  Result := wvUnknown;
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo) ;
  if GetVersionEx(osVerInfo) then
  begin
    minorVersion := osVerInfo.dwMinorVersion;
    majorVersion := osVerInfo.dwMajorVersion;
    case osVerInfo.dwPlatformId of
      VER_PLATFORM_WIN32_NT:
      begin
        if majorVersion <= 4 then
          Result := wvWinNT
        else if (majorVersion = 5) and (minorVersion = 0) then
          Result := wvWin2000
        else if (majorVersion = 5) and (minorVersion = 1) then
          Result := wvWinXP
        else if (majorVersion = 6) then
          Result := wvWinVista;
      end;
      VER_PLATFORM_WIN32_WINDOWS:
      begin
        if (majorVersion = 4) and (minorVersion = 0) then
          Result := wvWin95
        else if (majorVersion = 4) and (minorVersion = 10) then
        begin
          if osVerInfo.szCSDVersion[1] = 'A' then
            Result := wvWin98SE
          else
            Result := wvWin98;
        end
        else if (majorVersion = 4) and (minorVersion = 90) then
          Result := wvWinME
        else
          Result := wvUnknown;
      end;
    end;
  end;
end;
vcldeveloper
دوشنبه 26 مهر 1389, 13:28 عصر
تا جایی که من اطلاع دارم این شماره در ویستا و 7 یکی هست چون 7 نسخه تکمیل شده ویستا هست
خیر، فقط Major Version شون یکسان هست. Minor Version شون فرق میکنه.
برای بررسی ورژن ویندوز، یونیت SysUtils خودش تابع CheckWin32Version رو داره.
اطلاعات ویندوز مثل ورژن (ویستا ،7)و.... بهمون بده
اون سه نقطه شامل چه اطلاعاتی میشه؟ می تونید با استفاده از WMI و کوئری گرفتن از Win32_OperatingSystem، اطلاعات کاملی از وضعیت سیستم عامل دریافت کنید.
Felony
دوشنبه 26 مهر 1389, 14:16 عصر
خیر، فقط Major Version شون یکسان هست. Minor Version شون فرق میکنه.
درسته ، من تو کدی که قرار دادم دقت نکرده بودم که Minor Version برای ویستا بررسی نشده .
Mahmood_M
دوشنبه 26 مهر 1389, 14:44 عصر
با خوندن این مقاله ی 6 قسمتی (http://www.delphidabbler.com/articles?article=23&part=1) تقریبا می تونید تمام اطلاعات مورد نیاز رو بدست بیارید ...
sina_ali
چهارشنبه 28 مهر 1389, 02:02 صبح
خیر، فقط Major Version شون یکسان هست. Minor Version شون فرق میکنه.
برای بررسی ورژن ویندوز، یونیت SysUtils خودش تابع CheckWin32Version رو داره.
اون سه نقطه شامل چه اطلاعاتی میشه؟ می تونید با استفاده از WMI و کوئری گرفتن از Win32_OperatingSystem، اطلاعات کاملی از وضعیت سیستم عامل دریافت کنید.
من دارم رو یه برنامه کار می کنم که باید error هایی که برنامه با توجه به ورژن و سایر خصوصیات سیستم عامل  میده رو واسم بفرسته تا تصحیحش کنم
بخاطر همین دارم دنبال یه کد میگردم که تمام اطلاعات رو در مورد سیستم عامل بهم بده
Felony
چهارشنبه 28 مهر 1389, 06:39 صبح
من دارم رو یه برنامه کار می کنم که باید error هایی که برنامه با توجه به ورژن و سایر خصوصیات سیستم عامل  میده رو واسم بفرسته تا تصحیحش کنم
بخاطر همین دارم دنبال یه کد میگردم که تمام اطلاعات رو در مورد سیستم عامل بهم بده
خوب جوابتون هم که داده شد !
sina_ali
پنج شنبه 29 مهر 1389, 02:48 صبح
خوب جوابتون هم که داده شد !
چطور میشه 7 رو تشخیص داد اصلا قاعده تشخیصش چیه؟
سایر مشخصات سیستم عامل مثل اکانت کاربری (ادمین و ...) ، مشخصات سخت افزاری و ......
اینجا فقط ورژن بدون 7 گذاشته شده
Felony
پنج شنبه 29 مهر 1389, 06:26 صبح
چطور میشه 7 رو تشخیص داد اصلا قاعده تشخیصش چیه؟
قاعده تشخیص رو که من در پست قبلیم گفتم Major Version و Minor Version هست ، در کد زیر ویندوز 7 رو هم اضافه کردم :
type
  TWinVersion = (wvUnknown, wvWin95, wvWin98, wvWin98SE, wvWinNT, wvWinME, wvWin2000, wvWinXP, wvWinVista, wvWin7) ;
function GetWinVersion: TWinVersion;
var
  osVerInfo: TOSVersionInfo;
  majorVersion, minorVersion: Integer;
begin
  Result := wvUnknown;
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo) ;
  if GetVersionEx(osVerInfo) then
  begin
    minorVersion := osVerInfo.dwMinorVersion;
    majorVersion := osVerInfo.dwMajorVersion;
    case osVerInfo.dwPlatformId of
      VER_PLATFORM_WIN32_NT:
      begin
        if majorVersion <= 4 then
          Result := wvWinNT
        else if (majorVersion = 5) and (minorVersion = 0) then
          Result := wvWin2000
        else if (majorVersion = 5) and (minorVersion = 1) then
          Result := wvWinXP
        else if (majorVersion = 6) and (minorVersion = 1) then
          Result := wvWin7
        else if (majorVersion = 6)  then
          Result := wvWinVista;
      end;
      VER_PLATFORM_WIN32_WINDOWS:
      begin
        if (majorVersion = 4) and (minorVersion = 0) then
          Result := wvWin95
        else if (majorVersion = 4) and (minorVersion = 10) then
        begin
          if osVerInfo.szCSDVersion[1] = 'A' then
            Result := wvWin98SE
          else
            Result := wvWin98;
        end
        else if (majorVersion = 4) and (minorVersion = 90) then
          Result := wvWinME
        else
          Result := wvUnknown;
      end;
    end;
  end;
end;
سایر مشخصات سیستم عامل مثل اکانت کاربری (ادمین و ...) ، مشخصات سخت افزاری و ......
در مورد اکانت کاربری یا ادمین بودن و نبودن کد در همین بخش زیاد هست ، در ضمن اینجور سوالات رو کافی هست در گوگل کلید واژه های زبان اصلیشون رو جست و جو کنید .
اینجا فقط ورژن بدون 7 گذاشته شده
اینجا شما سوال پرسیدید و یک راه حل در مورد سوال اصلیتون و چند منبع در مورد سوال کلیتون بهتون پیشنهاد شد ، قرار نیست تمام اطلاعاتی که میشه از ویندوز گرفت رو ما به صورت کد اینجا قرار بدیم ، کافیه یکم وقت بزراید و اون منابع رو مطالعه کنید .
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.