说实话,我在图书馆里看过一本叫《C语言编程实战105例》的一本书,是半年前看的,那里面有相关的代码,但是你要CPU号这种高级的东东就不好办了。我从昨天开始想你的问题。也没有什么进展,就到网上就找了找,发现网上有关于这方面的贴子,但那位高手用的是linux的环境做的,在win下不能运行,
http://topic.csdn.net/t/20061110/09/5147214.html这个是那个贴的链接。可能对你有点用吧。
对了要求CPU的序列号的话是要一个api及相关的库,要是没用这个是不可能做出正来的。我从别的地方搞了一个cpu信息函数,对你有用的:
DWORD MyCPUSpeed()
{
BSTR bstrMyCpuName=NULL;
BSTR bstrMyPropName = NULL;
VARIANT pVal;
char szText[256];
int nCpuNum=0;
DWORD dwCpuSpeed=0;
IWbemClassObject *pCpuInst=NULL;
IWbemQualifierSet* pQualSet = NULL;
bstrMyPropName = SysAllocString(L"CurrentClockSpeed");
if(bstrMyPropName == NULL)
{
return dwCpuSpeed;
}
while(1)
{
memset(szText,0,sizeof(szText));
sprintf(szText,"Win32_Processor.DeviceID=\"CPU%d\"", nCpuNum);
bstrMyCpuName = _bstr_t(szText);
if(bstrMyCpuName == NULL)
{
break;
}
if(pSvc->GetObject(bstrMyCpuName, 0L, NULL, &pCpuInst, NULL) != S_OK)
{
break;
}
if(pCpuInst->Get(bstrMyPropName, 0L, &pVal, NULL, NULL) == S_OK)
{
nCpuNum++;
dwCpuSpeed += pVal.lVal;
}
VariantClear(&pVal);
SysFreeString(bstrMyCpuName);
bstrMyCpuName = NULL;
}
if(bstrMyPropName != NULL)
{
SysFreeString(bstrMyPropName);
bstrMyPropName = NULL;
}
if(bstrMyCpuName != NULL)
{
SysFreeString(bstrMyCpuName);
bstrMyCpuName = NULL;
}
memset(szText,0,sizeof(szText));
sprintf(szText, "CPU个数: %d, CPU频率: %ld Mhz", nCpuNum, dwCpuSpeed);
cout<<"------------------------"<<szText<<"-------------------------"<<endl;
return dwCpuSpeed;
}
还有一点,我在网上看到和你要求差不多的文章,但是它的代码好像少了一点什么,也做一下参考,我们一起研究一下也好。
http://e.codepub.com/2010/0523/22939_3.php
这是那个的链接,主要是没有头文件和宏什么的。
2. C语言课程设计:计算机设备管理系统设计
唉,小伙,你给的分太低了大家都不愿答。再一个,这种东西虽然不难,但是东西太多了。
给你个建议吧,你最好是自己学着做,定义一个结构体,里面包括计算机设备信息括编号、计算机名称、CPU型号、规格、基本配置、IP地址、MUC、厂家、硬盘序列号、管理人、到货日期、是否在用、金额等。
然后,把这些个东西直接存一个文件里就行。查找的时候,打开文件,从头到尾顺序查找,删除,增加都一个原理。很简单的。
如果你实在不会的话,你可以上网找找图书馆管理系统,那个东西和你这个是一样的,只要把里面的变量名改改就行了。
希望这些能帮到你,如果你以后想干软件,就自己动动手吧,这些东西从头学,有四五天全力弄也够了。如果以后不想干软件,那无所谓了,上网找个改改就能混过去。
3. 如何使用C语言编程读取从电脑usb接口的信息。
这个不是一下子,就可以的。你需要学习usb驱动的知识。建议看看usb驱动资料。
4. C语言读取指定行数据
#include<stdio.h>
#defineMAXC1024
intReadSpeacialLine(inti)
{
charfilename[]="test.c";//文件名
FILE*fp;
intret=0,L;
intWhichLine=i;//指定要读取哪一行
intCurrentIndex=0;//当前读取的行
charStrLine[MAXC];//每行最大读取的字符数,可据实际情况更改
if((fp=fopen(filename,"r"))==NULL)//打开文件
{
printf("openfileerror! ");
returnret;
}
while(1){
if(NULL==fgets(StrLine,MAXC,fp))break;
L=strlen(StrLine);
if(' '==StrLine[L-1]){
memset(ln+L-1,0,MAXC-L+1);
CurrentIndex++;
if(WhichLine==CurrentIndex)
{
fgets(StrLine,MAXC,fp);//读取一行
printf("%s",StrLine);//输出
ret=1;
returnret;
}
}
else{//行内容太多StrLine会读不到行结尾的情况
CurrentIndex++;
if(WhichLine==CurrentIndex)
{
fgets(StrLine,MAXC,fp);//读取一行
printf("%s",StrLine);//输出
ret=1;
returnret;
}
while(1){
if(NULL==fgets(StrLine,MAXC,fp))gotoEND;
L=strlen(ln);
if(' '==ln[L-1])break;
}
}
}
end:
fclose(fp);//关闭文件
returnret;
}
使用fgets函数,fgets是每次读取一行。
使用memset来清除StrLine,防止上一次StrLine中的内容未清除。
满意请采纳,不懂请追问。
5. 如何用c语言程序获取计算机信息
开机密码不能获取哦。用户名很简单。只要用个GetUserName这个API就行了。详细的代码我给你看看:
//#include"stdafx.h"
//#include"GetSysInfo.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
CWinApptheApp;
usingnamespacestd;
//获取CPU相关信息
voidGetCPUInfo()
{
CStringCPU;
SYSTEM_INFOsysteminfo;
//获取CPU型号
GetSystemInfo(&systeminfo);
switch(systeminfo.dwProcessorType)
{
casePROCESSOR_INTEL_386://386系列
CPU="PROCESSOR_INTEL_386";
break;
casePROCESSOR_INTEL_486://486系列
CPU="PROCESSOR_INTEL_486";
break;
casePROCESSOR_INTEL_PENTIUM://奔腾系列
CPU="PROCESSOR_INTEL_PENTIUM";
break;
casePROCESSOR_MIPS_R4000:
CPU="PROCESSOR_MIPS_R4000";
break;
casePROCESSOR_HITACHI_SH3:
CPU="PROCESSOR_HITACHI_SH3";
break;
casePROCESSOR_HITACHI_SH4:
CPU="PROCESSOR_HITACHI_SH4";
break;
casePROCESSOR_STRONGARM:
CPU="PROCESSOR_STRONGARM";
break;
casePROCESSOR_ARM720:
CPU="PROCESSOR_ARM720";
break;
default:
CPU="UnknownType";
break;
}
printf(" CPU型号:%s ",CPU);
}
//获取内存信息
voidGetMemoryInfo()
{
CStringMemoryTotal;//总内存大小
CStringMemoryAvail;//可用内存大小
MEMORYSTATUSmemory;
memory.dwLength=sizeof(memory);//初始化
//获取内存信息
GlobalMemoryStatus(&memory);
MemoryTotal.Format(_T("%dMb"),int(memory.dwTotalPhys/1024/1024));
MemoryAvail.Format(_T("%dMb"),int(memory.dwAvailPhys/1024/1024));
printf("主机总内存:%s ",MemoryTotal);
printf("主机可用内存:%s ",MemoryAvail);
}
//获取磁盘信息
voidGetDiskInfo()
{
DWORDsector,byte,cluster,free;
longintfreespace,totalspace;
UINTtype;
charname;
CStringstrname;
//循环检测A~Z,找到磁盘即输出
//0—未知盘、1—不存在、2—可移动磁盘、3—固定磁盘
//4—网络磁盘、5—CD-ROM、6—内存虚拟盘
for(name='A';name<='Z';name++)
{
strname.Format(_T("%c:"),name);
type=GetDriveType(strname);//获得磁盘类型
switch(type)
{
case0:
printf("未知类型磁盘:%s",strname);
break;
case2:
printf("可移动类型磁盘:%s",strname);
break;
case3:
printf("固定磁盘:%s",strname);
break;
case4:
printf("网络映射磁盘:%s",strname);
break;
case5:
printf("光驱:%s",strname);
break;
case6:
printf("内存虚拟磁盘:%s",strname);
break;
default:
break;
}
if(type!=1)
{
//获取磁盘空间信息
GetDiskFreeSpace(strname,§or,&byte,&free,&cluster);
//磁盘总大小
totalspace=int(cluster)*byte*sector/1024/1024;
//磁盘可用空间大小
freespace=int(free)*byte*sector/1024/1024;
printf("总大小%dMb",totalspace);
printf("可用空间%dMb",freespace);
printf(" ");
}
}
}
int_tmain(intargc,TCHAR*argv[],TCHAR*envp[])
{
intnRetCode=0;
//
if(!AfxWinInit(::GetMoleHandle(NULL),NULL,::GetCommandLine(),0))
{
//TODO:
cerr<<_T("FatalError:MFCinitializationfailed")<<endl;
nRetCode=1;
}
else
{
//TODO:codeyourapplication'sbehaviorhere.
//输出CPU信息
GetCPUInfo();
//输出内存信息
GetMemoryInfo();
//输出磁盘信息
GetDiskInfo();
}
returnnRetCode;
}
其中获取了系统的很多相关信息。像cpu内存硬盘用户名等等。你可以参考一下,呵呵。