admin管理员组

文章数量:1535426

2024年2月17日发(作者:)

#pragma once

#ifndef __AFXWIN_H__

#error include 'stdafx.h' before including this file for PCH

#endif

#include "resource.h"// 主符号

// CgetinfoApp:

// 有关此类的实现,请参阅

//

class CgetinfoApp : public CWinApp

{

public:

CgetinfoApp();

// 重写

public:

virtual BOOL InitInstance();

// 实现

DECLARE_MESSAGE_MAP()

};

extern CgetinfoApp theApp;

// getinfoDlg.h : 头文件

//

#pragma once

// CgetinfoDlg 对话框

class CgetinfoDlg : public CDialog

{

// 构造

public:

CgetinfoDlg(CWnd* pParent = NULL);// 标准构造函数

// 对话框数据

enum { IDD = IDD_GETINFO_DIALOG };

protected:

virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持

// 实现

protected:

HICON m_hIcon;

// 生成的消息映射函数

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

public:

afx_msg void OnBnClickedOk();

};

//{{NO_DEPENDENCIES}}

// Microsoft Visual C++ generated include file.

// Used by

//

#define IDR_MAINFRAME128

#define IDM_ABOUTBOX0x0010

#define IDD_ABOUTBOX100

#define IDS_ABOUTBOX101

#define IDD_GETINFO_DIALOG102

#define IDR_MANIFESTCREATEPROCESS_MANIFEST_RESOURCE_ID

// 新对象的下一组默认值

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE129

#define _APS_NEXT_CONTROL_VALUE1000

#define _APS_NEXT_SYMED_VALUE101

#define _APS_NEXT_COMMAND_VALUE32771

#endif

#endif

// stdafx.h : 标准系统包含文件的包含文件,

// 或是经常使用但不常更改的

// 项目特定的包含文件

#pragma once

#ifndef VC_EXTRALEAN

#define VC_EXTRALEAN// 从 Windows 标头中排除不常使用的资料

#endif

// 如果您必须使用下列所指定的平台之前的平台,则修改下面的定义。

// 有关不同平台的相应值的最新信息,请参考 MSDN。

#ifndef WINVER// 允许使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。

#define WINVER 0x0400//为 Windows98 和 Windows 2000 及更新版本改变为适当的值。

#endif

#ifndef _WIN32_WINNT// 允许使用 Windows NT 4 或更高版本的特定功能。

#define _WIN32_WINNT 0x0400//为 Windows98 和 Windows 2000 及更新版本改变为适当的值。

#endif

#ifndef _WIN32_WINDOWS// 允许使用 Windows 98 或更高版本的特定功能。

#define _WIN32_WINDOWS 0x0410 //为 Windows Me 及更新版本改变为适当的值。

#endif

#ifndef _WIN32_IE// 允许使用 IE 4.0 或更高版本的特定功能。

#define _WIN32_IE 0x0400//为 IE 5.0 及更新版本改变为适当的值。

#endif

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS// 某些 CString 构造函数将是显式的

// 关闭 MFC 对某些常见但经常被安全忽略的警告消息的隐藏

#define _AFX_ALL_WARNINGS

#include // MFC 核心和标准组件

#include // MFC 扩展

#include // MFC 自动化类

#include // Internet Explorer 4 公共控件的 MFC 支持

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include // Windows 公共控件的 MFC 支持

#endif // _AFX_NO_AFXCMN_SUPPORT

// : 定义应用程序的类行为。

//

#include "stdafx.h"

#include "getinfo.h"

#include "getinfoDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CgetinfoApp

BEGIN_MESSAGE_MAP(CgetinfoApp, CWinApp)

ON_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP()

// CgetinfoApp 构造

CgetinfoApp::CgetinfoApp()

{

// TODO: 在此处添加构造代码,

// 将所有重要的初始化放置在 InitInstance 中

}

// 唯一的一个 CgetinfoApp 对象

CgetinfoApp theApp;

// CgetinfoApp 初始化

BOOL CgetinfoApp::InitInstance()

{

// 如果一个运行在 Windows XP 上的应用程序清单指定要

// 使用 版本 6 或更高版本来启用可视化方式,

//则需要 InitCommonControls()。否则,将无法创建窗口。

InitCommonControls();

CWinApp::InitInstance();

AfxEnableControlContainer();

CgetinfoDlg dlg;

m_pMainWnd = &dlg;

INT_PTR nResponse = l();

if (nResponse == IDOK)

{

// TODO:在此放置处理何时用“确定”来关闭

//对话框的代码

}

else if (nResponse == IDCANCEL)

{

// TODO:在此放置处理何时用“取消”来关闭

//对话框的代码

}

// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,

// 而不是启动应用程序的消息泵。

return FALSE;

}

// : 实现文件

//

#include "stdafx.h"

#include "getinfo.h"

#include "getinfoDlg.h"

//下面两句是我们增加的

#include "MMSystem.h"

#pragma comment(lib,"")

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// 对话框数据

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

// 实现

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

// CgetinfoDlg 对话框

CgetinfoDlg::CgetinfoDlg(CWnd* pParent /*=NULL*/)

: CDialog(CgetinfoDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CgetinfoDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CgetinfoDlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

ON_BN_CLICKED(IDOK, OnBnClickedOk)

END_MESSAGE_MAP()

// CgetinfoDlg 消息处理程序

BOOL CgetinfoDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

ring(IDS_ABOUTBOX);

if (!y())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动

// 执行此操作

SetIcon(m_hIcon, TRUE);// 设置大图标

SetIcon(m_hIcon, FALSE);// 设置小图标

// TODO:在此添加额外的初始化代码

return TRUE; // 除非设置了控件的焦点,否则返回 TRUE

}

void CgetinfoDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

l();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// 如果向对话框添加最小化按钮,则需要下面的代码

// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,

// 这将由框架自动完成。

void CgetinfoDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // 用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast(eHdc()), 0);

// 使图标在工作矩形中居中

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (() - cxIcon + 1) / 2;

int y = (() - cyIcon + 1) / 2;

// 绘制图标

on(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

//当用户拖动最小化窗口时系统调用此函数取得光标显示。

HCURSOR CgetinfoDlg::OnQueryDragIcon()

{

return static_cast(m_hIcon);

}

void CgetinfoDlg::OnBnClickedOk()

{

// TODO: 在此添加控件通知处理程序代码

CString cs;

FILE *fp;

fp = fopen("c:","w+");

//获得CPU的信息

char s[20];

//结构LPSYSTEM_INFO包含当前计算机信息,包括处理器的结构、类型和数量等。

LPSYSTEM_INFO mysys;

mysys = new SYSTEM_INFO;

GetSystemInfo(mysys);

// dwNumberOfProcessors为系统中CPU的数量。

_itoa(mysys->dwNumberOfProcessors,s,10);

("CPU的数量为:%sn",s);

fwrite(cs,1,gth(),fp);

// dwProcessorType为CPU的类型。

_itoa(mysys->dwProcessorType,s,10);

("CPU的类型为:%sn",s);

fwrite(cs,1,gth(),fp);

switch (mysys->wProcessorLevel)

{

case 3:

cs = "Intel 80386";

break;

case 4:

cs = "Intel 80486";

break;

case 5:

cs = "Pentium";

break;

default:

cs = "未知的CPU";

break;

}

cs = "CPU的型号为:" + cs + "n";

fwrite(cs,1,gth(),fp);

// wProcessorRevision为CPU的修订版本。Windows 95/98系统不用。

_itoa(mysys->wProcessorRevision,s,10);

("CPU的修订版本为:%sn",s);

fwrite(cs,1,gth(),fp);

delete mysys;

//获取内存情况

//结构MEMORYSTATUS包含了物理内存和虚拟内存的当前状态。

MEMORYSTATUS *mymem;

//获得系统内存情况

mymem = new MEMORYSTATUS;

mymem->dwLength = sizeof(mymem); //初始化

GlobalMemoryStatus(mymem);

// dwMemoryLoad标识当前内存可利用率,取值在0到100之间。

_itoa(mymem->dwMemoryLoad,s,10);

//内存可利用率

("当前可用内存的百分比:%s%%n",s);

fwrite(cs,1,gth(),fp);

// dwTotalPhys为实际整个物理内存的容量,以字节为单位。

_itoa(mymem->dwTotalPhys/1024,s,10);

//物理内存总量,以KB为单位

("物理总量为:%s KBn",s);

fwrite(cs,1,gth(),fp);

// dwTotalPageFile为全部页面文件大小,以字节为单位。

_itoa(mymem->dwTotalPageFile/1024,s,10);

//页面文件的大小,以KB为单位

("页面文件的大小:%s KBn",s);

fwrite(cs,1,gth(),fp);

// dwAvailPageFile为可用的页面文件大小,以字节为单位。

_itoa(mymem->dwAvailPageFile/1024,s,10);

//可用页面文件大小,以KB为单位

("可用页面文件大小:%s KBn",s);

fwrite(cs,1,gth(),fp);

// dwTotalVirtual所有用户进程的虚拟内存大小,以字节为单位。

_itoa(mymem->dwTotalVirtual/1024,s,10);

//虚拟内存总量,以KB为单位

("虚拟内存总量:%s KBn",s);

fwrite(cs,1,gth(),fp);

// dwAvailVirtual为可用虚拟内存大小。

_itoa(mymem->dwAvailVirtual/1024,s,10);

//可用虚拟内存大小,以KB为单位

("可用虚拟内存大小:%s KBn",s);

fwrite(cs,1,gth(),fp);

delete mymem;

//获得磁盘情况

DWORD sector, byte, cluster, free;

long int freespace,totalspace;

UINT type;

char name;

//0—未知盘、1—不存在、2—可移动磁盘、3—固定磁盘、4—网络磁盘、

//5—CD-ROM、6—内存虚拟盘

char volname[255], filename[100];

DWORD sno, maxl, fileflag;

//循环检测A~Z

for (name = 'A'; name <= 'Z'; name++)

{

//获得磁盘类型

("%c:",name);

type = GetDriveType(cs);

switch(type)

{

case DRIVE_UNKNOWN:

("未知类型磁盘:%cn",name);

fwrite(cs,gth(),1,fp);

break;

case DRIVE_REMOVABLE:

("可移动类型磁盘:%cn",name);

fwrite(cs,gth(),1,fp);

break;

case DRIVE_FIXED:

("固定磁盘:%cn",name);

fwrite(cs,gth(),1,fp);

break;

case DRIVE_REMOTE:

("网络映射磁盘:%cn",name);

fwrite(cs,gth(),1,fp);

break;

case DRIVE_CDROM:

("光驱:%cn",name);

fwrite(cs,gth(),1,fp);

break;

case DRIVE_RAMDISK:

("内存虚拟磁盘:%cn",name);

fwrite(cs,gth(),1,fp);

break;

}

//获得磁盘容量信息

("%c:",name);

//获得磁盘卷标和序号信息

if(GetVolumeInformation(cs, volname,255,&sno,&maxl,&fileflag,filename,100))

{

//磁盘的卷标信息

("%c盘卷标为:%sn",name,volname);

fwrite(cs,gth(),1,fp);

//磁盘序号

("%c盘序号为:%dn",name,sno);

fwrite(cs,gth(),1,fp);

//计算磁盘剩余空间

//获得返回参数,其中cluster指磁盘总簇数,free指空余的簇数,sector指每簇扇区数,byte指每扇区字节数

GetDiskFreeSpace(cs,§or,&byte,&free,&cluster);

//计算总容量,以MB为单位

totalspace = cluster*byte*sector/1024/1024;

//计算可用空间,以MB为单位

freespace = free*byte*sector/1024/1024;

//总空间

("%c盘总空间(MB):%dn",name,totalspace);

fwrite(cs,gth(),1,fp);

//可用空间

("%c盘可用空间(MB):%dn",name,freespace);

fwrite(cs,gth(),1,fp);

}

}

//获取音乐设备信息

int wavedevice,mididevice;

WAVEOUTCAPS wavecap;

// MIDIOUTCAPS结构体的成员跟WAVEOUTCAPS的差不多

MIDIOUTCAPS midicap;

//波形设备信息

wavedevice = (int)waveOutGetNumDevs();

// MIDI设备信息

mididevice = (int)midiOutGetNumDevs();

//波形设备

if (wavedevice != 0)

{

waveOutGetDevCaps(0,&wavecap,sizeof(WAVEOUTCAPS));

("当前波形设备:%sn",e);

fwrite(cs,gth(),1,fp);

}

//MIDI设备

if (mididevice != 0)

{

midiOutGetDevCaps(0,&midicap,sizeof(MIDIOUTCAPS));

("当前MIDI设备:%sn",e);

fwrite(cs,gth(),1,fp);

}

//获取屏幕信息

//获得屏幕分辨率,x为水平像素,y为垂直像素。

int x = GetSystemMetrics(SM_CXSCREEN);

int y = GetSystemMetrics(SM_CYSCREEN);

("当前分辨率为:%d * %dn",x,y);

fwrite(cs,gth(),1,fp);

//获得Windows信息

char windir[MAX_PATH];

//获得Windows目录

GetWindowsDirectory(windir,MAX_PATH);

("Windows所在的目录是:%sn",windir);

fwrite(cs,gth(),1,fp);

//获得Windows系统目录

GetSystemDirectory(windir,MAX_PATH);

("Windows的系统目录是:%sn",windir);

fwrite(cs,gth(),1,fp);

//结构OSVERSIONINFO包含操作系统的版本信息。

OSVERSIONINFO osvi;

CString os;

//获得操作系统信息

rsionInfoSize = sizeof(OSVERSIONINFO);

GetVersionEx (&osvi);

switch(formId)

{

case VER_PLATFORM_WIN32s:

os = "Windows 3.x";

break;

case VER_PLATFORM_WIN32_WINDOWS:

os = "Windows 95/98/Me";

break;

case VER_PLATFORM_WIN32_NT:

os = "Windows NT/2000/XP";

break;

default:

os = "未知的操作系统";

break;

}

// dwMajorVersion为版本高位,dwMinorVersion为版本低位。例如:如果操作系统是Windows NT 3.52,则dwMajorVersion等于3,dwMinorVersion等于52。

//DwBuildNumber为操作传统的编译号。

("操作系统是:%s,",os);

fwrite(cs,gth(),1,fp);

("版本号:%d.%d 编译号:%d",rVersion,rVersion,dNumber);

fwrite(cs,gth(),1,fp);

fclose(fp);

OnOK();

}

// : 只包括标准包含文件的源文件

// 将是预编译头

// 将包含预编译类型信息

#include "stdafx.h"

本文标签: 磁盘包含版本获得