Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   version de windows.... Como?? :S (https://www.clubdelphi.com/foros/showthread.php?t=61454)

advancexz 08-11-2008 02:35:21

version de windows.... Como?? :S
 
es todo... solo quiero saber que windows estoy utilizando

[EDITADO]

sorry, sorry... pense que seria obvio entrando a un foro de delphi.

COMO OBTENER EN CODIGO DELPHI LA VERSION DE WINDOWS.
encontre varios en internet, pero no me han funcionado, uno de ellos me decia que yo tenia windows xp y tengo vista ultimate...
otro dos usaban una libreria que no pude usar...

enecumene 08-11-2008 14:57:18

Cita:

Empezado por advancexz (Mensaje 324779)
es todo... solo quiero saber que windows estoy utilizando

Hola, ¿pero cómo lo quieres saber? :confused: :confused:, ¿desde Delphi o windows?.

Saludos.

ContraVeneno 08-11-2008 16:26:51

En tu escritorio hay un icono que se llama MiPc (también lo encuentras en el panel de control), dale click con el botón derecho y selecciona "Propiedades". Ahí dice que windows tienes. Si no encuentras "Mi PC", entonces no estas usando Windows.


jojojo, no me pude resistir

cHackAll 08-11-2008 16:27:24

Busca "GetVersion", "GetVersionEx" o ejecuta "winver"


Edito;

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Size: Cardinal;
 hKey: Windows.HKEY;
 Buffer: ShortString;
begin
 Size := SizeOf(Buffer);
 RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', hKey);
 RegQueryValueEx(hKey, 'productname', nil, nil, @Buffer, @Size);
 RegCloseKey(hKey);
 ShowMessage(string(PChar(@Buffer)));
end;

enecumene 08-11-2008 16:29:53

Cita:

Empezado por ContraVeneno (Mensaje 324825)
En tu escritorio hay un icono que se llama MiPc (también lo encuentras en el panel de control), dale click con el botón derecho y selecciona "Propiedades". Ahí dice que windows tienes. Si no encuentras "Mi PC", entonces no estas usando Windows.


jojojo, no me pude resistir

:D :D :D :D

FGarcia 12-12-2008 01:49:49

Cita:

Empezado por cHackAll (Mensaje 324826)
Busca "GetVersion", "GetVersionEx" o ejecuta "winver"


Edito;


Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject);
var
Size: Cardinal;
hKey: Windows.HKEY;
Buffer: ShortString;
begin
Size := SizeOf(Buffer);
RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', hKey);
RegQueryValueEx(hKey, 'productname', nil, nil, @Buffer, @Size);
RegCloseKey(hKey);
ShowMessage(string(PChar(@Buffer)));
end;



Copiando y modificando (que no es lo mismo que entendiendo) el codigo de cHackAll quedo asi para una ventana de Acerca de:

Código Delphi [-]
procedure TfrmAbout.FormShow(Sender: TObject);
var
 Size, Size2: Cardinal;
 hKey, cbKey, csdKey: Windows.HKEY;
 Buffer, Buffer1, Buffer2: ShortString;
begin
  Size := SizeOf(Buffer);
  RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', hKey);
  RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', cbKey);
  RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', csdKey);
  RegQueryValueEx(hKey, 'productname', nil, nil, @Buffer, @Size);
  RegQueryValueEx(cbKey, 'currentbuildnumber', nil, nil, @Buffer1, @Size);
  RegQueryValueEx(csdKey, 'CSDVersion', nil, nil, @Buffer2, @Size2);
  RegCloseKey(hKey);
  RegCloseKey(cbKey);
  RegCloseKey(CSDKey);
  //ShowMessage(string(PChar(@Buffer)) + ' (Build ' + string(PChar(@Buffer1)) + ') ' + string(PChar(@Buffer2)));
  Comments.caption := string(PChar(@Buffer)) + ' (Build ' + string(PChar(@Buffer1)) + ') ' + string(PChar(@Buffer2)); //Este es un label dentro del form
end;

Lo que no entiendo es porque en el label me escribe asi:

Cita:

Microsoft
Windows
XP(Build
2600)
Service
Pack 3
sin embargo si uso el showmessage lo escribe correctamente en una linea.
Mientras escribo y reviso el codigo me doy cuenta que tampoco inicialize Size2

Como siempre agradesco la ayuda!

cHackAll 12-12-2008 02:12:27

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 Size: Cardinal;
 hKey: Windows.HKEY;
 Buffer: ShortString;
 Str: string;
begin
 RegOpenKey(HKEY_LOCAL_MACHINE, 'software\microsoft\windows nt\currentversion', hKey);
 Size := SizeOf(Buffer);
 RegQueryValueEx(hKey, 'productname', nil, nil, @Buffer, @Size);
 Str := string(PChar(@Buffer)) + ' (Build '; Size := SizeOf(Buffer);
 RegQueryValueEx(hKey, 'currentbuildnumber', nil, nil, @Buffer, @Size);
 Str := Str + string(PChar(@Buffer)) + ') ';
 RegQueryValueEx(hKey, 'csdversion', nil, nil, @Buffer, @Size);
 Str := Str + string(PChar(@Buffer));
 RegCloseKey(hKey);
 Caption := Str;
end;

BlackDaemon 12-12-2008 17:26:04

Hola

El mensaje de chakall a deformado el estilo de la página del foro, a salido todo en una sola línea jeje

Saludos!

cHackAll 12-12-2008 17:49:34

Cita:

Empezado por BlackDaemon (Mensaje 330683)
Hola

El mensaje de chakall a deformado el estilo de la página del foro, a salido todo en una sola línea jeje

Saludos!

:eek::D jajajaja

Al parecer el Clipboard se agarró conmigo :rolleyes:, gracias por hacerlo notar BlackDaemon.

FGarcia 12-12-2008 18:14:21

:D:D

De hecho desde hace unos dias hace cosas raras al pegar codigo. Al final asi quedo:

Código Delphi [-]
procedure TfrmAbout.FormShow(Sender: TObject);
var
 Size: Cardinal;
 hKey: Windows.HKEY;
 Buffer: ShortString;
 Str: string;
begin
  RegOpenKey(HKEY_LOCAL_MACHINE,'software\microsoft\windows nt\currentversion',hKey);
  
  Size := SizeOf(Buffer);
  RegQueryValueEx(hKey, 'productname', nil, nil,@Buffer, @Size);
  Str := string(PChar(@Buffer)) + ' (Build ';
  
  Size := SizeOf(Buffer);
  RegQueryValueEx(hKey, 'currentbuildnumber', nil,nil, @Buffer, @Size);
  Str := Str + string(PChar(@Buffer)) + ') ';
  
  Size := SizeOf(Buffer); //Si no se actualiza el tamaño muestra basura
  RegQueryValueEx(hKey, 'csdversion', nil, nil,@Buffer, @Size);
  Str := Str + string(PChar(@Buffer));
  
  RegCloseKey(hKey);
  label1.Caption := Str; //Tuve que modificarla para que no fuese AutoSize
                                //De otro modo lo da en varias lineas
end;

Gracias por la ayuda


La franja horaria es GMT +2. Ahora son las 03:59:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi