CodePudding user response:
I remember that a lot of online, random search, I have saved some, choose one to read the registry for you!I am BCB6, BCB2010 you try it yourself..
Attach CSDN favorites, by the way, everything!
http://bbs.csdn.net/topics/50472441
//- CPU Name + Network Card -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
TRegistry * regCPUName=new TRegistry;
TRegistry * regNetName=new TRegistry;
String strCPUName strNetName;
Try {
RegCPUName - & gt; RootKey=HKEY_LOCAL_MACHINE;
RegCPUName - & gt; OpenKey (" HARDWARE \ \ DESCRIPTION \ \ System \ \ CentralProcessor \ \ 0 ", false);
StrCPUName=regCPUName - & gt; ReadString (" ProcessorNameString ");
RegNetName - & gt; RootKey=HKEY_LOCAL_MACHINE;
RegNetName - & gt; OpenKey (" SOFTWARE \ \ Microsoft \ \ Windows NT \ \ CurrentVersion \ \ NetworkCards \ \ 8 ", false);
StrNetName=regNetName - & gt; ReadString (" Description ");
WORD wVersionRequested=MAKEWORD (1, 1);
WSADATA WSADATA;
WSAStartup (wVersionRequested, & amp; WsaData);
Hostent * p;
Char s [128];
Char * (p2);
Gethostname (s, 128);
P=gethostbyname (s);
The p2=inet_ntoa (* (p - (in_addr *) & gt; H_addr));
WSACleanup();
Memo1 - & gt; Lines - & gt; Add (" CPU: "+ strCPUName);
Memo1 - & gt; Lines - & gt; Add (" NetCard: "+ strNetName);
Memo1 - & gt; Lines - & gt; Add (" Net IP: "+ String (p2));
} __finally {
The delete regCPUName;
}
//HDD LogicalDrivesID -- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
DWORD Drives=: : GetLogicalDrives ();
For (int x=0; X & lt; 32. X++)
If (Drives & amp; (1 & lt;{
String fs.
String Drive=AnsiString (char (' A '+ x)) + ": \ ";
DWORD sn, the FSF;
SNB char Volume [80], [80], FSFB [80].
If (: : GetVolumeInformation (Drive c_str (), Volume,
Sizeof (Volume), & amp; Sn, 0, & amp; The FSF, FSFB, sizeof (FSFB)))
Sprintf (SNB, "% X", sn);
Memo1 - & gt; Lines - & gt; The Add (String (Volume));
Memo1 - & gt; Lines - & gt; The Add (String (SNB));
Memo1 - & gt; Lines - & gt; The Add (String (FSFB));
}
CodePudding user response:
I finish the class, in assembly taking CPU information, including CPU name, type and speed
# include "classCPUInfo. H"//take CPU information
//# include "classCPUInfo. CPP"//take CPU information
# # ifndef _classCPUInfo_cpp_
# define _classCPUInfo_cpp_
/*
www.plm.hk
*/
//-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
ClassCCPUInfo: : classCCPUInfo ()
{
Cpuname=new char [128].
Temp=new char [128].
Char OEMString [13].
//OEMString=new char [13].
Int iEAXValue iEBXValue, iECXValue iEDXValue;
//for CPU brand:
_asm
{
Mov eax, 0
Cpuid
Mov DWORD PTR OEMString, ebx
Mov DWORD PTR OEMString + 4, edx
Mov DWORD PTR OEMString + 8, ecx
Mov BYTE PTR OEMString + 12, 0
}
Name=new char [15].
Strcpy (Name, OEMString);
//more CPU information:
_asm
{
Mov eax, 1
Cpuid
Mov iEAXValue, eax
Mov iEBXValue, ebx
Mov iECXValue, ecx
Mov iEDXValue, edx
}
MMX=bool (iEDXValue & amp; 0 x800000);
IFamily=(0 xf00 & amp; IEAXValue) & gt;> 8;
FPU=bool (iEDXValue & amp; 0 x1);
//H_DMAT ();//get the CPU information, the slower the
}
ClassCCPUInfo: : ~ classCCPUInfo ()
{
The delete [] Name;
The delete [] cpuname;
The delete [] temp;
//delete [] OEMString;
}
Int classCCPUInfo: : GetSpeed ()
{
Int PriorityClass, Priority;
HANDLE hThread hProcess;
HThread=GetCurrentThread ();
HProcess=GetCurrentProcess ();
PriorityClass=GetPriorityClass (hProcess);
Priority=GetThreadPriority (hThread);
SetPriorityClass (hProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority (hThread THREAD_PRIORITY_TIME_CRITICAL);
Long lEAXValue lEDXValue;
SleepEx (50, false);
_asm
{
Xor eax, eax
RDTSC
Mov lEAXValue, eax
Mov lEDXValue, edx
}
If (SleepEx (500, false)==0)
{
_asm
{
Xor eax, eax
RDTSC
Sub eax, lEAXValue
SBB edx, lEDXValue
Mov lEAXValue, eax
Mov lEDXValue, edx
}
}
SetThreadPriority (hThread, Priority);
SetPriorityClass (hProcess, PriorityClass);
Return lEAXValue/(1000.0 * 500);
}
Bool classCCPUInfo: : withMMX ()
{
Return MMX.
}
Int classCCPUInfo: : GetFamily ()
{
Return iFamily;
}
Int classCCPUInfo: : GetName (char * name)
{
If (name==NULL) return 1;
Strcpy (name, name);
return 0;
}
Int classCCPUInfo: : GetTypeName (char * type)
{
//EAX 8 to 11 showed a few 86:
//3-386
//4 - i486
//5 - Pentium
//6 - Pentium Pro Pentium II
//2 - Dual Processors
nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull