Home > Back-end >  How can the teacher BCB2010 access to CPU model, hard disk, the network card address?
How can the teacher BCB2010 access to CPU model, hard disk, the network card address?

Time:10-13

BCB2010, give some code! Thank you very much!

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