Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi CPU Name (https://www.delphipraxis.net/174586-cpu-name.html)

Madara Uchiha 30. Apr 2013 13:44

CPU Name
 
Hallo,

Ich wollte mal fragen wie ich mit Delphi (Konsolenanwendung) den Namen meiner CPU auslesen kann ;)

bernerbaer 30. Apr 2013 14:11

AW: CPU Name
 
Ich würde es mal über WMI versuchen. Im Moment ist mir nur der PROCESSOR_IDENTIFIER bekannt

[edit]
oder gemäss Stackoverflow sollte es auch über die Registry möglich sein: Stackoverflow WMI
Stackoverflow Registry
[/edit]

Madara Uchiha 30. Apr 2013 14:37

AW: CPU Name
 
Ja, das mit der Registry habe ich auch schon gesehen, das hat bei mir allerdings nicht funktioniert. Wurde nichts angezeigt.
Danach kam ich ebenfalls auf die Idee mit PROCCESSOR_IDENTIFIER auszulesen, das hat auch bedingt geklappt.

Es wird das hier ausgelesen:
Intel64 Family 6 Model 42 Stepping 7, GenuineIntel

Es soll aber das hier angezeigt werden:

http://s14.directupload.net/images/130430/9627iv5l.png

sx2008 30. Apr 2013 14:42

AW: CPU Name
 
Liste der Anhänge anzeigen (Anzahl: 1)
Den Code im Anhang habe ich irgendwann (wahrscheinlich hier in der DP) aufgeschappt.
Author unbekannt.

DeddyH 30. Apr 2013 14:47

AW: CPU Name
 
Delphi-Quellcode:
//-----------------------------------------------------------------------------------------------------
//     This code was generated by the Wmi Delphi Code Creator (WDCC) Version 1.7.7.1
//     http://code.google.com/p/wmi-delphi-code-creator/
//     Blog http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/
//     Author Rodrigo Ruz V. (RRUZ) Copyright (C) 2011-2012 
//----------------------------------------------------------------------------------------------------- 
//
//     LIABILITY DISCLAIMER
//     THIS GENERATED CODE IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED.
//     YOU USE IT AT YOUR OWN RISK. THE AUTHOR NOT WILL BE LIABLE FOR DATA LOSS,
//     DAMAGES AND LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS CODE.
//
//----------------------------------------------------------------------------------------------------
program GetWMI_Info;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  ComObj,
  Variants;
 

   
// Die Klasse "Win32_Processor" stellt eine Gerät zum Übersetzen von sequentiellen
// Computeranweisungen in einem Win32-Computersystem dar. Für jeden Prozessor ist
// eine Instanz dieser Klasse vorhanden.

procedure GetWin32_ProcessorInfo;
const
  WbemUser           ='';
  WbemPassword       ='';
  WbemComputer       ='localhost';
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService  : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject  : OLEVariant;
  oEnum        : IEnumvariant;
  iValue       : LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService  := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_Processor','WQL',wbemFlagForwardOnly);
  oEnum        := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    Writeln(Format('Name   %s',[String(FWbemObject.Name)]));// String
      
    Writeln('');
    FWbemObject:=Unassigned;
  end;
end;


begin
 try
    CoInitialize(nil);
    try
      GetWin32_ProcessorInfo;
    finally
      CoUninitialize;
    end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 end;
 Writeln('Press Enter to exit');
 Readln;    
end.
Für mehr Infos einfach den Wmi Delphi Code Creator herunterladen und selbst damit herumprobieren ;)

Madara Uchiha 30. Apr 2013 16:58

AW: CPU Name
 
Danke :)

MeierZwoo 1. Mai 2013 05:05

AW: CPU Name
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich mische für die CPU-Daten die Werte aus den Umgebungs-Parametern (Environment) und der Registry, weil die Werte im Environment teils eindeutiger sind und die Hampelei mit der Anzahl der Kerne in der Registry zu aufwändig ist (und ich saufaul bin). Allerdings bekommt man den "echten" CPU-Namen und den Takt nur aus der Registry - deshalb die Mischung.
Code:
Aus Registry (-> liefert)

HKEY_LOCAL_MACHINE,'Hardware\Description\System\CentralProcessor\0'
(Kern 0..n)
'ProcessorNameString'   -> AMD Phenom(tm) II X4 965 Processor [Nur in Reg.]
'Identifer'             -> x86 Family 16 Model 4 Stepping 3 [Identisch mit Environment]
'VendorIdentifer'       -> AuthenticAMD [Identisch mit Environment]
'~MHz'                  -> 3415 [Nur in Reg.]

Aus Umgebungs-Parametern (Environment) (-> liefert)

'PROCESSOR_IDENTIFIER'   -> x86 Family 16 Model 4 Stepping 3, AuthenticAMD
'PROCESSOR_ARCHITECTURE' -> x86
'NUMBER_OF_PROCESSORS'   -> 4


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz