Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2009
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cool Sobre los Componentes de MITEC para obtener Datos del Hardware

Hola a todos, y sigo aqui preguntando

Hace algun tiempo, Neftali me recomendo usar estos componentes para obtener los datos del hardware, con los cuales hice mi programa.
Todo funciono bien hasta que adquiri una nueva PC, Core 2 Duo a 3.0 GHz, y para mi sorpresa el componente de MITEC (y su ultima version MiTeC System Information X 1.0.0) me detectan mi PC como un Pentium III
Y en el caso de mi Soft, no me pone nada en la RAM

Al parecer, ese componente no me va a servir, pues cada vez hay mas Core Duo, Dual Core, etc., y ya el mismo no me da la informacion correcta

Mi pregunta es: Hay algun otro componente similar mas actualizado?
O de que forma puedo obtener los datos del Microprocesador y de la Memoria RAM: Tipo (SDRAM, DDR o DDR2) y capacidad
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #2  
Antiguo 27-03-2009
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Considerando solo el caso, entre c2d, c2d movil, c2q, c2q movil, Extreme, Xeon, modelo 17h contra los Pentium III-; debemos reconocer que el Model Number de los Intel Core 2 TM … es el máximo posible (15 ~1111b).

Es difícil que un programa pueda reconocer a los futuros microprocesadores, mucho más si consideramos que entre las dos empresas lideres actualmente sobrepasamos las 200 firmas de microprocesadores. Ahora imaginemos con el resto; (Intel, AMD), Centaur, Cyrix, Transmeta, National Semiconductor, NexGen, Rise, SiS, UMC, VIA,…

Para poder obtener dicha firma se debe utilizar la instrucción CPUID que obtiene información directamente del microprocesador. Entre las funciones que soporta dicha instrucción tenemos un grupo "extendido" que debería simplificarnos el problema expuesto;

Cita:
Empezado por Intel
Functions 8000_0002h, 8000_0003h, and 8000_0004h each return up to 16 ASCII bytes of the processor name in the EAX, EBX, ECX, and EDX registers. The processor name is constructed by concatenating each 16-byte ASCII string returned by the three functions. The processor name is right justified with leading space characters. It is returned in little-endian format and NULL terminated. The processor name can be a maximum of 48 bytes including the NULL terminator character. In addition to the processor name, these functions return the maximum supported speed of the processor in ASCII.
Codifiquemos;

Código Delphi [-]
function ProcessorName: PChar;
const Buffer: array [0..47] of Char = '';
asm
 push  esi
 push  edi
 mov   esi, 80000001h
 lea   edi, Buffer
 push  ebx
 push  edi
@next: inc  esi
 mov   eax, esi
 cmp   al, 5
 je   @done
 cpuid
 stosd
 xchg  eax, ebx
 stosd
 xchg  eax, ecx
 stosd
 xchg  eax, edx
 stosd
 jmp  @next
@done:
 pop   eax
 pop   ebx
 pop   edi
 pop   esi
end; // by cHackAll

procedure TForm1.Button1Click(Sender: TObject);
begin
 Label1.Caption := ProcessorName;
end;

Con seguridad, el anterior código será suficiente porque ha sido creado con "ese" objetivo. Aunque también podemos obtener la misma información desde el registro del SO;

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 hKey: Windows.HKEY;
 ProcessorNameString: array [0..47] of Char;
 cbData: Cardinal;
begin
 cbData := SizeOf(ProcessorNameString);
 RegOpenKey(HKEY_LOCAL_MACHINE, 'HARDWARE\DESCRIPTION\System\CentralProcessor\0', hKey);
 RegQueryValueEx(hKey, 'ProcessorNameString', nil, nil, @ProcessorNameString, @cbData);
 RegCloseKey(hKey);
 ProcessorNameString[cbData] := #0;
 Label1.Caption := ProcessorNameString;
end;

Es más complicado obtener las capacidades de los módulos DIMM (u otros) instalados en el ordenador, pero podemos apoyarnos en una API para obtener la cantidad de memoria física (por ahora hasta aqui llego );

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var MemoryStatus: TMemoryStatus;
begin
 MemoryStatus.dwLength := SizeOf(MemoryStatus);
 GlobalMemoryStatus(MemoryStatus);
 Label1.Caption := IntToStr(MemoryStatus.dwTotalPhys div (1024 * 1024)) + ' Mb.';
end;

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener información de hardware a través de API's de Windows (no componentes) n3mohack API de Windows 7 15-10-2010 13:21:12
Obtener datos del hardware (MB, RAM y Micro) Marca y/o Modelo JoAnCa API de Windows 7 19-02-2010 17:03:47
Obtener datos del Hardware, especificamente Modem e Impresora JoAnCa API de Windows 0 20-10-2008 16:43:54
Como obtener e instalar algunos componentes para trabajar Bases de Datos JoAnCa Varios 3 12-05-2008 23:57:59
Como obtener datos del hardware (RAM, MB, Video) JoAnCa API de Windows 4 22-10-2007 22:30:44


La franja horaria es GMT +2. Ahora son las 15:20:29.


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
Copyright 1996-2007 Club Delphi