Ver Mensaje Individual
  #3  
Antiguo 26-06-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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
    { Private declarations }
  public
    { Public declarations }
  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

  // Obtiene Acceso a WMI
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

  // Obtiene Acceso al NameSpace root\CIMV2 localmente que contiene la Clase Win32_Process
  FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');

  // Contruye la Consulta SQL WMI (WQL) a la Clase Win32_Process
  SQLWMI := 'SELECT * FROM Win32_OperatingSystem';

  // Ejecuta la Consulta
  FWbemObjectSet := FWMIService.ExecQuery(SQLWMI,'WQL',wbemFlagForwardOnly);

  // Interface a los objetos COM de la consulta por medio de enumeración
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;

  // Accesa las propiedades de los objetos de la enumeración
  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
    { Private declarations }
  public
    { Public declarations }
  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
    { Private declarations }
  public
    { Public declarations }
  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.

Última edición por nlsgarcia fecha: 26-06-2014 a las 08:05:37.
Responder Con Cita