中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 系统
《系统飞狐》中获取系统信息的方法
作者:未知 时间:2005-07-20 14:21 出处:VC知识库 责编:chinaitpower
              摘要:《系统飞狐》中获取系统信息的方法
一个获取系统信息的程序

《系统飞狐》中获取系统信息的方法

华北电力大学(保定) 程锋章

下载源代码

一、在我的系统设置软件《系统飞狐》中,应用到一个获取系统信息的源代码 ,在VC++中经过巧妙转换应用到我的软件中,取得了良好的效果,也许很多人都见过这个简单的获取系统信息的类sysinfo,在系统飞狐中充分扩展了它的功能 。该类首先需要编译一个DLL文件然后再调用它根据需要生成我们自己的应用程序。


图一 sysinfo界面

二、先编译DLL文件SysInfo.dll,然后在工程SysInfoTester中调用它,示例代码为DOS程序:

//在头文件中先调用DLL文件
#if !defined(SYSINFO_LINKSTATIC)
# if defined(SYSINFO_EXPORTS)
# undef DLL_CLASS
# define DLL_CLASS __declspec(dllexport)
# else 
# undef DLL_CLASS
# define DLL_CLASS __declspec(dllimport)
# if defined(_DEBUG)
# pragma comment(lib, "SysInfoD.lib")
# else
# pragma comment(lib, "SysInfo.lib")
# endif
# endif
#else
# define DLL_CLASS
# if defined(_DEBUG)
# pragma comment(lib, "SysInfosD.lib")
# else
# pragma comment(lib, "SysInfos.lib")
# endif
#endif 

在主函数中实现获取系统信息的功能,以CPU为例子

using namespace std; 
void main(int argc, char* argv[])
{ 
  SysInfo sysInfo; 
  cout << "---------------------" << endl;
  cout << "CPU信息" << endl;
  cout << "---------------------" << endl;
  cout << "CPU型号: " << sysInfo.getCpuIdentification() << endl;//显示cpu型号
  cout << "CPU速度: " << sysInfo.getCpuSpeed() << endl;
  cout << "CPU个数: " << sysInfo.getNumProcessors() << endl;
  cout << "Family: " << sysInfo.getCpuFamily() << endl;
  cout << "Model: " << sysInfo.getCpuModel() << endl;
  cout << "Stepping: " << sysInfo.getCpuStepping() << endl;

  system("pause");
  system("cls"); 
}

三、在系统飞狐中,充分发掘sysinfo类的强大功能,经过相应的转换就可以生成基于windows平台的代码,首先要调用本文源代码中的头文件,以便于系统飞狐获取相应的功能,在这里我不一一详细介绍,只列举关键的代码起一个抛砖引玉的作用 :

// DiskinfoDlg.cpp :
#include "stdafx.h"
#include "fox.h"
#include "DiskinfoDlg.h"
#include "sys/SysInfo.h" //调用sysinfo.h
#include <string>
#include <iostream> 

vector<DriveStats> const* pvDriveStats = info.getDriveStats();
vector<DriveStats>::const_iterator i;
for (i = pvDriveStats->begin(); i != pvDriveStats->end(); i++)
{
  using namespace std;
  std::string str1,str2,str3; //注意,这个不同于一般的CString类
  CString string1,string2,string3; 
  str1=i->getName();//关键代码
  int c=str1.length();
  char cfz[10];
  str1.copy(cfz,c,0); 
  string1=cfz; //巧妙的转换把namespace类型转换为CString类型

  str2=i->getTotalSpace();
  c=str2.length();
  str2.copy(cfz,c,0); 
  string2=cfz;

  str3=i->getFreeSpace();
  c=str3.length();
  str3.copy(cfz,c,0); 
  string3=cfz;
  Str.Format("Subarea %s (Total:%s Avail:%s)",string1,string2,string3);
  m_DiskTree.InsertItem(Str, root1);
}



图二. 调用sysinfo得到系统信息

四、结束语
  sysinfo系列代码是我以前从网上下载的老代码,同时在原有的基础上扩展了它的功能,然后在系统飞狐中以旧翻新,也算是一条捷径吧,不然以本人的个人能力和时间是无法完成系统飞狐这么多程序的编制 。作者拙见,代码永远是写不完的,重要的是如何吸收以前的经验然后转变为自己的东东,同时充分考虑它以后的扩展性和适用性就能取得事半功倍的效果,恳请大家批评指正,时间有限不能一一详细叙述了,如有任何问题请到作者的VC++资源中心上发帖子,由于邮件过多无法保证一一回复!

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有