原文地址:http://blog.csdn.net/lovton/article/details/6528246
1、首先,新建MFC对话框,命名为GetSys。向对话框拖入一个按钮,两个静态文本并设置标题。
2、修改ID:按钮:IDC_GET_SYSTEM;标题为“尚未检测”的静态文本:IDC_SYSTEM。
3、右键点击按钮,选择【建立类向导】(我没法给右键菜单截图,自己选择就好了)。
4、选择【Member Variables】,选择【IDC_GET_SYSTEM】,点击【Add Variable】。
5、Category选择【Control】,Variable type选择【CButton】,Variable name输入m_getsys,点【OK】。
6、选择【IDC_SYSTEM】,点【Add Variable】。
7、Category选择【Control】,Variable type选择【CStatic】,Variable name输入m_system,点【OK】。
8、点击【确定】。
9、双击窗体中的按钮,点【OK】。
10、在处理程序中添加代码:
int a = 0, b = 0, i = 0, j = 0;
_asm
{
pushad
mov ebx, fs:[0x18]; get self pointer from TEB
mov eax, fs:[0x30]; get pointer to PEB / database
mov ebx, [eax + 0A8h]; get OSMinorVersion
mov eax, [eax + 0A4h]; get OSMajorVersion
mov j, ebx
mov i, eax
popad
}
if ((i == 5) && (j == 0))
{
m_getsys.SetWindowText(_T("重新检测系统"));
m_system.SetWindowText(_T("Windows 2000"));
}
else if ((i == 5) && (j == 1))
{
m_getsys.SetWindowText(_T("重新检测系统"));
m_system.SetWindowText(_T("Windows XP"));
}
else if ((i == 5) && (j == 2))
{
m_getsys.SetWindowText(_T("重新检测系统"));
m_system.SetWindowText(_T("Windows Server 2003"));
}
else if ((i == 6) && (j == 0))
{
m_getsys.SetWindowText(_T("重新检测系统"));
m_system.SetWindowText(_T("Windows Vista"));
}
else if ((i == 6) && (j == 1))
{
m_getsys.SetWindowText(_T("重新检测系统"));
m_system.SetWindowText(_T("Windows 7"));
}
else
{
MessageBox(_T("抱歉,本工具目前只支持Win2000/XP/2003/Vista/7系统,无法识别您的系统!"), _T("错误"), MB_ICONERROR);
m_system.SetWindowText(_T("无法识别您的系统"));
m_getsys.SetWindowText(_T("重新检测系统"));
}
11、编译并运行程序,点击检测系统按钮即可看到当前系统。
再次声明:本文章部分核心源代码为转载,请尊重原创,点此查看原文。