C
语
获
取
统
信
息
光影
C 语言】【控制台】--系统信息获取
01.程序简介
程序名称:系统信息
编译器:vs2010(其它也可以……)
程序大小:115K
文件包括:系统信息.exe, skinh.she,SkinH.dll,msvcr100.dll
程序界面:全屏模式
02.相关技术
01. 程序界面全屏模式:
一开使用 SetConsoleDisplayMode 设置全屏模式,但是不成功。GetLastError 得到的结果是系统不支持这个函数(我的 WIN7 64 位)。于是使用 API 函数 对黑窗体进行全屏显示。
//得到窗体的句柄
HWND hwnd=GetForegroundWindow(); //设置标题
SetWindowTextA(hwnd,"系统信息"); //得到屏幕的长宽
int x=GetSystemMetrics(SM_CXSCREEN)+300, y=GetSystemMetrics(SM_CYSCREEN)+300;
//设置控制台的宽度和高度
char setting[30];
sprintf(setting,"mode con:cols=%d lines=%d",x,y); system(setting);
//置顶窗口
::SetWindowPos(hwnd, HWND_TOPMOST,0,0,x+300,y+300,NULL);
//去掉标题
SetWindowRgn(hwnd, CreateRectRgn(30,30,x+1300,y+1300),true);
//移动窗体。实现全屏
MoveWindow(hwnd,-30,-40,x+300,y+300,true);
02. 相关的自定义函数。
得到操作系统版本信息:
void GetVersionInfo();
得到系统硬件信息:
void SystemInfonation();
得到电脑名和用户名:
void GetUser();
得到鼠标的速度
void GetMouseMoveSpeed();
得到当前系统时间
void GetSystemTimeInfo();
得到摄像头信息
void GetCapInfo();
得到磁盘信息:
void GetDiskTypeInfo();
得到当前进程:
void GetProcessInf();
主函数里面使用循环,创建菜单(和那啥 XX 管理系统之类的一样)。然后 根据用户输入的数值调用以上不同的函数。
003. 获取当前系统版本
获取当前系统版本函数
BOOL GetVersionEx(
LPOSVERSIONINFO lpVersionInformation );
参数一:结构体指针
指向的结构体
typedef struct _OSVERSIONINFO{
DWORD dwOSVersionInfoSize; 本结构体大小调用前必须设置
DWORD dwMajorVersion; 操作系统主版本号 5xp
DWORD dwMinorVersion; 操作系统次版本号 1
DWORD dwBuildNumber; 操作系统编译版本号
DWORD dwPlatformId; 操作系统的平台
TCHAR szCSDVersion[ 128 ]; 指定安装在系统上的服务包 } OSVERSIONINFO;
记得使用结构体前需要初始化,即 ZeroMemory。
dwMajorVersion>=5的系统就是 XP以上(包括XP)的系统。 然后打印本系统的主版本号,此版本号等信息即可。
这个函数也是很常用的,用于检测系统版本。根据系统版本判断是否需要进行提权。
004. 系统硬件信息
获取系统硬件信息
VOID GetSystemInfo(
LPSYSTEM_INFO lpSystemInfo // 参数指向 SYSTEM_INFO 结构 );
参数指向结构 SYSTEM_INFO typedef struct _SYSTEM_INFO { union {
DWORD dwOemId;
struct {
WORD wProcessorArchitecture;// 处理器架构
WORD wReserved;
};
};
DWORDdwPageSize;// 内存分页大小
LPVOIDlpMinimumApplicationAddress;// 可以用内存起始
LPVOIDlpMaximumApplicationAddress;// 可用内存
DWORD_PTR dwActiveProcessorMask;
DWORDdwNumberOfProcessors;// 处理器个数
DWORDdwProcessorType;// 处理器类型
DWORDdw