من میخواهم در دلفی 7 برنامه ای بنویسم که در منطق برنامه نیاز به دانستن نوع ویندوز نصب شده است؟
لطفا راهنمایی کنید.ممنون
اگر api خاصی دارد....آیا این api در مام ویتدوز ها مشترک است؟
ممنون.
من میخواهم در دلفی 7 برنامه ای بنویسم که در منطق برنامه نیاز به دانستن نوع ویندوز نصب شده است؟
لطفا راهنمایی کنید.ممنون
اگر api خاصی دارد....آیا این api در مام ویتدوز ها مشترک است؟
ممنون.
{$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;
متاسفانه این سورس کد فقط یک سرس اعداد در اختیار ما قرار میدهد؟!!!
اگر میشود راه بهتری را پیشنهاد کنید.من به دنبال نوع ویندوز هستم!!
win98,xp,2000
آیا api برای این منظور وجود دارد؟
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;
آقای delphiArea واقعا ممنون.به زودی یک حال اساسی به سایت میخواهم بدهم.
واقعا از شما دوستانی که اینقدر با حوصله جواب میدهید ممنون هستم.ان شاالله جبران میکنم.
در ضمن به امضا من مخصوصا قسمت Share or die توجه کنید. :D
delphi area = the delphi area 51 :wink:
از رجیستری ویندوز هم می شه نام و version ویندوز رو بدست آورد. اتفاقا راحتر هم هست
سلام
دوست عزیز از داخل رجیستری چطوری می توان نوع ویندوز را تشخیص داد
در ویندوزهای NT Base:دوست عزیز از داخل رجیستری چطوری می توان نوع ویندوز را تشخیص داد
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
مقادیر زیر:
CurrentBuildNumber
CurrentVersion
CSDVersion
ProductName
در ویندوزهای 9X فکر کنم بجای زیرشاخه Windows NT در زیر شاخه Windows باشه.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
درود
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 1;);
end;