/* ************************************
*《精通Windows API》
* 示例代码
* osinfo.c
* 10.1 系统信息
**************************************/
/* Windows 2k */
#define _WIN32_WINNT 0x0500
/* 头文件 */
#include <windows.h>
#include <Lmcons.h>
#include <stdio.h>
/* 函数声明 */
void ShowVersionInfo();
void ShowSystemInfo();
void GetFolders();
void GetNames();
void MouseSpeed();
/* ************************************
* int main()
* 功能 依次调用各示例函数
**************************************/
int main()
{
ShowVersionInfo();
ShowSystemInfo();
GetFolders();
GetNames();
MouseSpeed();
}
/* ************************************
* void ShowVersionInfo()
* 功能 获取并显示系统版本信息
**************************************/
void ShowVersionInfo()
{
OSVERSIONINFOEX ovex;
CHAR szVersionInfo[1024];
*szVersionInfo = ‘\x00‘;
// 设置参数大小,调用并判断是否成功
ovex.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if(!GetVersionEx(&ovex))
{
printf("error %d\n",GetLastError());
return;
}
// 判断版本
if(ovex.dwMajorVersion==5)
{
if(ovex.dwMinorVersion==0)
lstrcat(szVersionInfo,"Windows 2000 ");
else if(ovex.dwMinorVersion==1)
lstrcat(szVersionInfo,"Windows XP ");
else if(ovex.dwMinorVersion==2)
lstrcat(szVersionInfo,"Windows Server 2003 ");
}
else if(ovex.dwMajorVersion == 6)
lstrcat(szVersionInfo,"Windows Vista ");
else
lstrcat(szVersionInfo,"Windows NT 4.0 或者其他 ");
// 安装的SP,字符串
lstrcat(szVersionInfo,ovex.szCSDVersion);
// 判断wProductType,产品类型
switch(ovex.wProductType)
{
case VER_NT_DOMAIN_CONTROLLER:
lstrcat(szVersionInfo,"\n域控制器");
break;
case VER_NT_SERVER:
lstrcat(szVersionInfo,"\n服务器");
break;
case VER_NT_WORKSTATION :
lstrcat(szVersionInfo,"\n独立工作站");
break;
}
// 判断wSuiteMask
if(ovex.wSuiteMask & VER_SUITE_PERSONAL)
{
lstrcat(szVersionInfo,"\nWindows XP Home Edition");
}
if(ovex.wSuiteMask & VER_SUITE_SINGLEUSERTS)
{
lstrcat(szVersionInfo,"\n安装了终端服务,但只支持一个会话");
}
// wSuiteMask成员还可能是以下值的组合
//VER_SUITE_BLADE
//VER_SUITE_COMPUTE_SERVER
//VER_SUITE_DATACENTER
//VER_SUITE_ENTERPRISE
//VER_SUITE_EMBEDDEDNT
//VER_SUITE_PERSONAL
//VER_SUITE_SINGLEUSERTS
//VER_SUITE_SMALLBUSINESS
//VER_SUITE_SMALLBUSINESS_RESTRICTED
//VER_SUITE_STORAGE_SERVER
//VER_SUITE_TERMINAL
printf("%s\n",szVersionInfo);
}
/* ************************************
* void ShowSystemInfo()
* 功能 获取并显示硬件相关信息
**************************************/
void ShowSystemInfo()
{
SYSTEM_INFO si;
GetSystemInfo(&si);
printf("内存分页大小:0x%.8X,可用内存起始:0x%.8X,可用内存结束:0x%.8X,\n"
"处理器个数:%d,处理器类型:",
si.dwPageSize,
si.lpMinimumApplicationAddress,
si.lpMaximumApplicationAddress,
si.dwNumberOfProcessors);
switch (si.dwProcessorType)
{
case PROCESSOR_INTEL_386:
printf("386");
break;
case PROCESSOR_INTEL_486:
printf("486");
break;
case PROCESSOR_INTEL_PENTIUM:
printf("pentium");
printf(", Cpu Model 0x%.2X, Stepping 0x%.2X",
(BYTE)(si.wProcessorRevision>>8),
(BYTE)si.wProcessorRevision);
break;
}
printf("\n处理器架构:");
switch (si.wProcessorArchitecture)
{
case PROCESSOR_ARCHITECTURE_INTEL:
printf("intel");
printf(" CPU vendor is %d",si.wProcessorLevel);
break;
case PROCESSOR_ARCHITECTURE_IA64:
printf("64 bits intel");
break;
case PROCESSOR_ARCHITECTURE_AMD64:
printf("64 bits AMD");
break;
case PROCESSOR_ARCHITECTURE_UNKNOWN:
printf("UNKNOWN");
break;
}
printf("\n");
}
/* ************************************
*void GetFolders()
* 功能 获取系统目录等信息
**************************************/
void GetFolders()
{
TCHAR szSystemDirectory[MAX_PATH];
TCHAR szWindowsDirectory[MAX_PATH];
GetSystemDirectory(szSystemDirectory,MAX_PATH);
GetWindowsDirectory(szWindowsDirectory,MAX_PATH);
printf("系统目录:\t%s\nWindows目录:\t%s\n",
szSystemDirectory,
szWindowsDirectory);
}
/* ************************************
* void GetNames()
* 功能 获取计算机名、用户名等信息
**************************************/
void GetNames()
{
DWORD dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;
DWORD dwUserNameLen = UNLEN+1;
TCHAR szComputerName[MAX_COMPUTERNAME_LENGTH+1];
TCHAR szUserName[UNLEN + 1];
if(!SetComputerName("My_Computer"))
{
printf("Set Error %d",GetLastError());
}
GetComputerName(szComputerName,&dwComputerNameLen);
printf("计算机名:%s\n",szComputerName);
//ComputerNameNetBIOS
//ComputerNameDnsHostname
//ComputerNameDnsFullyQualified
//ComputerNamePhysicalNetBIOS
//ComputerNamePhysicalDnsHostname
//ComputerNamePhysicalDnsDomain
//ComputerNamePhysicalDnsFullyQualified
dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;
GetComputerNameEx(ComputerNameDnsHostname,szComputerName,&dwComputerNameLen);
printf("ComputerNameDnsHostname: %s\n",szComputerName);
dwComputerNameLen = MAX_COMPUTERNAME_LENGTH+1;
GetComputerNameEx(ComputerNamePhysicalNetBIOS,szComputerName,&dwComputerNameLen);
printf("ComputerNamePhysicalNetBIOS: %s\n",szComputerName);
GetUserName(szUserName,&dwUserNameLen);
printf("用户名:%s\n",szUserName);
}
/* ************************************
* void MouseSpeed()
* 功能 获取系统目录等信息
**************************************/
void MouseSpeed()
{
BOOL fResult;
int aMouseInfo[3]; // 保存数据信息的数组
// 调用 SystemParametersInfo
fResult = SystemParametersInfo(
SPI_GETMOUSE, // 获取鼠标信息
0, // 未使用
&aMouseInfo, // 用于保存鼠标信息
0); // 未使用
// 把鼠标速度加倍
if( fResult )
{
aMouseInfo[2] = 2 * aMouseInfo[2];
SystemParametersInfo(
SPI_SETMOUSE, // 设置鼠标信息
0, // 未使用
aMouseInfo, // 鼠标信息
SPIF_SENDCHANGE); // 更新 win.ini
}
}
原文:http://www.cnblogs.com/hungryvampire/p/5299285.html