要求:
1.硬件包括CUP、硬盘、主板、网卡、声卡、光区等
2.程序代码应是完整的、准确的、适用各种操作系统
3.需要说明适用范围、注意事项
……请各位高手把自己的优秀成果给大家共享一下!
1.硬件包括CUP、硬盘、主板、网卡、声卡、光区等
2.程序代码应是完整的、准确的、适用各种操作系统
3.需要说明适用范围、注意事项
……请各位高手把自己的优秀成果给大家共享一下!
调试欢乐多
#include < conio.h >
#include < iostream.h >
#pragma hdrstop
struct tagCPUInf
{
CString m_strOem; //CPUオトノ嵂嵭ァノフ,マ・クヌ・エエ惲・・トラ「ハヘ
CString m_strOemShort;//CPUオトノ嵂嵭ァノフオトシエテ・
CString m_strLevel; //CPUオトエ摠,ネ・86, 586オネ
CString m_strFamily; //CPUヒトFamily
CString m_strCPUID; //CPUミミコナ
BOOL m_bFPU; //ハヌキァウヨFPU,TRUEホェヨァウヨ
BOOL m_bMMX; //ハヌキァウヨMMX,TRUEホェヨァウヨ
BOOL m_bP6; //ハヌキヌP6シワケケ};
/*
コッ ハ テ・GetCPUInformation
ヒトタ・
コッハケヲトワ:ネ。オテCPUオトマ犹リミナマ「,セ゚フ蠏トヌ・エtagCPUInfオトカィメ・
ー・アセ コナ:1.0
ヘ・ノネユニレ:2004/07/01
キオ サリ ヨオ:キオサリCPUオトマ犹リミナマ「,セ゚フ蠏トヌ・エtagCPUInfオトカィメ・
イホ ハ 1:ボ
イホ ハ 2:
ウノヤアタ獎ヘ:
ニ萢・オテ・
モヲモテハセタ:
tagCPUInf cpuinf;
cpuinf=GetCPUInformation();
*/
tagCPUInf GetCPUInformation(void)
{
/*
ナミカマCPUウァノフ
マネ ネテEAX=0,ヤルオテCPUID InelオトCPUスォキオサリ:
EBX:756E6547H 'Genu'
EDX:49656E69H 'ineI'
ECX:6C65746EH 'ntel'
EBX,EDX,ECXスォチャウノ"GenuineIntel", ヨミホトメ簍シホェ"ユ贏オトIntel". CyrixオトCPUスォキオサリ:
EBX:43797269H
EDX:78496E73H
ECX:74656164H
"CyrixInstead",ヨミホトメ簍シホェ"Cyrixタエエ擎・.
AMDオトCPUスォキオサリ:
EBX:41757468H
EDX:656E7469H
ECX:63414D44H
"AuthenticAMD",ヨミホトメ簍シホェ"ソノミナオトAMD".
*/
tagCPUInf CPUInf;
//ZeroMemory(&CPUInf, sizeof(CPUInf));
char OEMString[13];//ネ。オテCPUイ揵フテ・
_asm
{
mov eax,0
cpuid //ネ。オテCPUミナマ「オトヨクチ・
mov DWORD PTR OEMString,ebx
mov DWORD PTR OEMString+4,edx
mov DWORD PTR OEMString+8,ecx
mov BYTE PTR OEMString+12,0
}
CPUInf.m_strOem=OEMString;//ネ。オテノ嵂嵭ァノフテ・
CString strTmp=OEMString;
strTmp.MakeUpper();
if(strTmp.Find("INTEL")!=-1)//intel CPU
{
CPUInf.m_strOemShort="Intel";
/*
CPUオスオラハヌシク86,ハヌキァウヨMMX
マネネテEAX=1,ヤルオテCPUID,EAXオト8オス11ホサセヘア朎ヌシク86ネ醯ツ:
2:Dual Processors
3:386
4:i486
5:Pentium
6:Pentium Pro Pentium II
EDXオトオレ0ホサ:モミボFPU
EDXオトオレ23ホサ:CPUハヌキァウヨIAMMX,コワヨリメェー。!ネ郢鈺耘・テトヌ57フツヤトヨクチ・マネシ・鰈簫サホサーノ,キヘオネラナソエ
Windowsオト"クテウフミエミミチヒキヌキィヨクチ・スォアサケリアユ"ーノ.
*/
int iEAXValue,iEBXValue,iECXValue,iEDXValue;
{
mov eax,1
cpuid
mov iEAXValue,eax
mov iEBXValue,ebx
mov iECXValue,ecx
mov iEDXValue,edx
} int iLevel=iEAXValue & 0xF00;//カヤイサカヤトリ」ソ
iLevel>>=8;
if(iLevel==2)
{
CPUInf.m_strLevel="Dual Processors";
}
else if(iLevel==3)
{
CPUInf.m_strLevel="386";
}
else if(iLevel==4)
{
CPUInf.m_strLevel="i486";
}
else if(iLevel==5)
{
CPUInf.m_strLevel="Pentium";
}
else if(iLevel==6)
{
CPUInf.m_strLevel="Pentium Pro Pentium II";
}
CPUInf.m_bFPU=(BOOL)iEDXValue & 0x1;
//int c=iEDXValue & 0x10;
CPUInf.m_bMMX=(BOOL)(iEDXValue & 0x800000)>>23; int iCPUFamily=(0xF00 & iEAXValue)>>8;
CPUInf.m_strFamily.Format("CPU Family is:%d", iCPUFamily); /*
ラィテナシ・簗ヌキヌP6シワケケ
マネネテEAX=1,ヤルオテCPUID.ネ郢涬L=1,セヘハヌPentiumProサentiumII
*/
BYTE _AL;
_asm
{
mov eax,2
CPUID
mov _AL, AL
}
CPUInf.m_bP6=(BOOL)_AL;//Pentium Pro or Pentium II Found
}
else if(strTmp.Find("AMD")!=-1)//AMD CPU
{
CPUInf.m_strOemShort="AMD"; /*ラィテナシ・磚MDオトCPUミナマ「
マネネテEAX=80000001H,ヤルオテCPUID
ネ郢淼AX=51H,ハヌAMD K5
ネ郢淼AX=66H,ハヌK6
K7ハヌハイテエア・セ,ヨサモミオネエメトテオスK7オトミセヤルヒオチヒ.
EDXオレ0ホサ:ハヌキミFPU(カ獗犒ト.ヒュモテケテサFPUオトK5,K6)
EDXオレ23ホサCPUハヌキァウヨMMX.
*/
int iEAXValue,iEBXValue,iECXValue,iEDXValue;
_asm
{
mov eax, 0x80000001
cpuid
mov iEAXValue,eax
mov iEBXValue,ebx
mov iECXValue,ecx
mov iEDXValue,edx
}
if(iEAXValue==0x51)//AMD K5
{
CPUInf.m_strLevel="AMD K5";
}
else if(iEAXValue==0x66)//AMD K6 K7ホエヨェ
{
CPUInf.m_strLevel="AMD K6";
}
CPUInf.m_bFPU=(BOOL)iEDXValue & 0x1;//ハヌキァウヨFPU
CPUInf.m_bMMX=(BOOL)(iEDXValue&0x800000>>23);//ハヌキァウヨMMX
CPUInf.m_strFamily="AMD";
CPUInf.m_bP6=FALSE;
}
else if(strTmp.Find("CYRIX")!=-1)//CYRIX CPU ケタシニメムテサモミチヒ
{
CPUInf.m_strOemShort="Cyrix";
} char szCPUID[129] = {NULL};
char szTmp[33] = {NULL};
unsigned long s1 = 0, s2 = 0;
_asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcpy(szCPUID, szTmp);
_asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
sprintf(szTmp, "%08X%08X", s1, s2);
strcat(szCPUID, szTmp);
CPUInf.m_strCPUID=szCPUID; return CPUInf;
}
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=195689获得计算机的主板的ID ,网卡的ID,CUP的ID等应该怎样获得,谢谢
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=186094