santiago14,
Cita:
Empezado por santiago14
...tengo que incluir una unit si el ejecutable está corriendo en Win7 o Win8...
|
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ActiveX, ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetWindowsVersion : String;
const
wbemFlagForwardOnly = $00000020;
var
FSWbemLocator : OLEVariant;
FWMIService : OLEVariant;
FWbemObjectSet : OLEVariant;
FWbemObject : OLEVariant;
oEnum : IEnumvariant;
iValue : LongWord;
SQLWMI : String;
begin
FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
SQLWMI := 'SELECT * FROM Win32_OperatingSystem';
FWbemObjectSet := FWMIService.ExecQuery(SQLWMI,'WQL',wbemFlagForwardOnly);
oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
if oEnum.Next(1, FWbemObject, iValue) = 0 then
begin
Result := Format('%s %s',[FWbemObject.Caption, FWbemObject.Version]);
FWbemObject:=Unassigned;
end
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetWindowsVersion);
end;
end.
El código anterior en Delphi 7
permite obtener por medio de WMI (Windows Management Instrumentation) el nombre y la versión del Sistema Operativo Windows instalado.
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetWindowsVersion : String;
var
OSVersionInfo: TOSVersionInfo;
MajorVersion, MinorVersion: Integer;
begin
Result := 'Windows Unknown';
OSVersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(OSVersionInfo) then
begin
MajorVersion := OSVersionInfo.dwMajorVersion;
MinorVersion := OSVersionInfo.dwMinorVersion;
if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
begin
if MajorVersion <= 4 then
Result := Format('%s %d',['Windows NT',MajorVersion])
else if (MajorVersion = 5) and (MinorVersion = 0) then
Result := Format('%s %d.%d',['Windows 2000',MajorVersion,MinorVersion])
else if (MajorVersion = 5) and (MinorVersion = 1) then
Result := Format('%s %d.%d',['Windows XP',MajorVersion,MinorVersion])
else if (MajorVersion = 6) and (MinorVersion = 0) then
Result := Format('%s %d.%d',['Windows Vista',MajorVersion,MinorVersion])
else if (MajorVersion = 6) and (MinorVersion = 1) then
Result := Format('%s %d.%d',['Windows 7',MajorVersion,MinorVersion])
else if (MajorVersion = 6) and (MinorVersion = 2) then
Result := Format('%s %d.%d',['Windows 8',MajorVersion,MinorVersion])
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetWindowsVersion);
end;
end.
El código anterior en Delphi 2010
permite obtener el nombre y la versión del Sistema Operativo Windows instalado.
Nota: En Delphi 7, el código propuesto
identifica erróneamente el SO Windows 7 x32 y x64 como Windows XP.
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetWindowsVersion : String;
var
OSVersion : TOSVersion;
begin
Result := Format('%s %d.%d Build %d',[OSVersion.Name,
OSVersion.Major,
OSVersion.Minor,
OSVersion.Build]);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetWindowsVersion);
end;
end.
El código anterior en Delphi XE6
permite obtener el nombre y la versión del Sistema Operativo Windows instalado.
Revisa esta información:
Espero sea útil
Nelson.