Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.09;
Скачать: CL | DM;

Вниз

Как прочитать версию Windows и поместить в Edit?   Найти похожие ветки 

 
Чужой   (2002-04-25 15:43) [0]

Нашел процедурку, а как использовать ее не знаю.
Пожалуйста, помогите.
Что нужно подставить вместо многоточий, чтобы значение параметра VersionNumber было отображено в Edit?


var
R:TRegistry;
No:String;
begin
R:=TRegistry.Create;
R.RootKey:=HKEY_LOCAL_MACHINE;
R.OpenKey("\SOFTWARE\Microsoft\Windows\CurrentVersion", False) {если false то пытается откpыть не создавая}
No:=R.ReadString("VersionNumber");
if No=..... then ...... else ......
end;


 
Johnmen ©   (2002-04-25 15:51) [1]

После того, как в Edit будет номер версии, отредактируй его и нажми OK - версия обновится !
Я себе так сделал из Win95 -> WinXP ! Сэкономил деньги на сидюке с XP !
:-)))))))))))))))))))))))))))))


 
Игорь Шевченко ©   (2002-04-25 15:55) [2]

День добрый,

Не надо мучиться с реестром, всю информацию можно получить вызовом GetVersionEx

unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TOsVersionInfoExA = packed record
old : TOsVersionInfoA;
wServicePackMajor : Word;
wServicePackMinor : Word;
{
wSuiteMask
A set of bit flags that identify the product suites available on the system. This member can be a combination of the following values. Value Meaning
VER_SUITE_BACKOFFICE Microsoft BackOffice components are installed.
VER_SUITE_BLADE Windows .NET Web Server is installed.
VER_SUITE_DATACENTER Windows 2000 or Windows .NET Datacenter Server is installed.
VER_SUITE_ENTERPRISE Windows 2000 Advanced Server or Windows .NET Enterprise Server is installed.
VER_SUITE_PERSONAL Windows XP Home Edition is installed.
VER_SUITE_SMALLBUSINESS Microsoft Small Business Server is installed.
VER_SUITE_SMALLBUSINESS_RESTRICTED Microsoft Small Business Server is installed with the restrictive client license in force.
VER_SUITE_TERMINAL Terminal Services is installed.
}

wSuiteMask : Word;
{wProductType
Indicates additional information about the system. This member can be one of the following values. Value Meaning
VER_NT_WORKSTATION The system is running Windows NT 4.0 Workstation, Windows 2000 Professional, Windows XP Home Edition, or Windows XP Professional.
VER_NT_DOMAIN_CONTROLLER The system is a domain controller.
VER_NT_SERVER The system is a server.
}

wProductType : Byte;
wReserved : Byte;
end;

TfrmMain = class(TForm)
emSP: TEdit;
emSPMajor: TEdit;
emSPMinor: TEdit;
emProductID: TEdit;
emSuiteMask: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmMain: TfrmMain;

implementation

{$R *.DFM}

function WhatWindowsIsInstalled : String;
var VerInfo : TOsVersionInfoExA;
begin
FillChar(VerInfo, sizeof(VerInfo), 0);
VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoExA);
if NOT GetVersionExA(VerInfo.old) then begin
VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoA);
GetVersionExA(VerInfo.old);
end;
case VerInfo.old.dwPlatformId of
VER_PLATFORM_WIN32_WINDOWS:
if (Verinfo.old.dwMajorVersion = 4) AND
(Verinfo.old.dwBuildNumber = 950) then
Result := "Windows 95"
else if (Verinfo.old.dwMajorVersion = 4) AND
(Verinfo.old.dwMinorVersion = 10) AND
(Verinfo.old.dwBuildNumber = 1998) then
Result := "Windows 98"
else if (Verinfo.old.dwMinorVersion = 90) then
Result := "Windows Me";
VER_PLATFORM_WIN32_NT:
if Verinfo.old.dwMajorVersion = 3 then
Result := "Windows NT 3.51"
else if Verinfo.old.dwMajorVersion = 4 then
Result := "Windows NT 4.0"
else if Verinfo.old.dwMajorVersion = 5 then
if Verinfo.old.dwMinorVersion = 0 then
Result := "Windows 2000"
else if Verinfo.old.dwMinorVersion = 1 then
Result := "Windows XP";
VER_PLATFORM_WIN32s:
Result := "Win32s";
end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
var VerInfo : TOsVersionInfoExA;
begin
FillChar(VerInfo, sizeof(VerInfo), 0);
VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoExA);
if NOT GetVersionExA(VerInfo.old) then begin
VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoA);
GetVersionExA(VerInfo.old);
end;
emSP.Text := StrPas(VerInfo.old.szCSDVersion);
emSPMajor.Text := Format("%d", [VerInfo.wServicePackMajor]);
emSPMinor.Text := Format("%d", [VerInfo.wServicePackMinor]);
emSuiteMask.Text := Format("%.4x", [VerInfo.wSuiteMask]);
emProductID.Text := Format("%.2x", [VerInfo.wProductID]);
end;

end.


С уважением,


 
Чужой   (2002-04-25 16:22) [3]

> Johnmen ©

Прочитайте, пожалуйста, внимательно мой вопрос.


> Игорь Шевченко ©

Получение версии в этом случае округляется, т.е. например, у моей Винды98 версия 4.10.222. Применяя данную "читалку", я получу значение 4.10.
За код спасибо.


 
Игорь Шевченко ©   (2002-04-25 17:00) [4]

День добрый,

Применяя Help к структуре OSVERSIONINFO увидите, что там есть поля dwMajorVersion, dwMinorVersion, dwBuildNumber,
совокупность которых и даст вам 4.10.222

С уважением,



Страницы: 1 вся ветка

Текущий архив: 2002.05.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
6-26207
McSimm
2002-02-24 12:24
2002.05.09
Удалить ISAPI DLL


1-26165
d_oleg
2002-04-25 10:48
2002.05.09
Application Icon


1-26129
Basilio
2002-04-23 16:59
2002.05.09
try..except не работает


7-26284
ray_wagner
2002-02-05 15:57
2002.05.09
Эмуляция активной деятельности компа :-)


1-26142
Новенький в Делфи
2002-04-24 02:49
2002.05.09
Проблемы с чтением файлов