說實話,我在圖書館里看過一本叫《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內存硬碟用戶名等等。你可以參考一下,呵呵。