您的位置:首页 > 其它

【转载加修改】VC6 MFC怎么检测当前操作系统?

2017-07-07 19:58 169 查看
原文地址: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、编译并运行程序,点击检测系统按钮即可看到当前系统。





 

再次声明:本文章部分核心源代码为转载,请尊重原创,点此查看原文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: