检测dll是32/64位 ?

检测dll是32/64位 ?

void CCheck32Or64Dlg::OnButton2()
{
	CString fileName = "";
	CFileDialog *fileDialog = new CFileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY,"Dll Files(*.dll)|*.dll|Exe Files(*.exe)|*.exe||",NULL);
	if(fileDialog->DoModal()==IDOK)
	{
		fileName = fileDialog->GetPathName();
		byte buf[4];
		CFile file(fileName,CFile::modeRead);
		file.Seek(0x40-4,0);
		file.Read(buf,4);
		int a,b,c,d;
		a = int(buf[0]);
		b = int(buf[1])*256;
		c = int(buf[2])*256*256;
		d = int(buf[3])*256*256*256;
		int sum = a+b+c+d;
		file.Seek(sum+4,0);
		byte bufMachine[2];
		file.Read(bufMachine,2);
		int machine = (int)bufMachine[0] + (int)(bufMachine[1])*256;
		if(machine == 0x14C)
		{
			MessageBox(fileDialog->GetFileName()+"是32位PE文件","检测结果");
		}
		else if(machine == 0x8664)
		{
			MessageBox(fileDialog->GetFileName()+"是64位PE文件","检测结果");
		}
		else
		{
			MessageBox("未能识别:"+fileDialog->GetFileName()+"多少位的PE文件!","检测结果");
		}
	}
}
上一篇:coco2dx c++ HTTP实现


下一篇:html5 游戏源码下载网站,你值得拥有!