218上位机VC MFC系统启动模式及系统鼠标相关信息获取
218上位机VC MFC系统启动模式及系统鼠标相关信息获 功能展示 当我们电脑启动时,按F8等快捷键会看到各种启动电脑的选项如正常启动,安全模式等等,我们当前例程通过自己编写代码实现当前系统启动方式的获取,额外通过相同的方法,还可获取鼠标相关的信息,效果如图,点击获得系统启动模式,会从组合框的启动模式中选择出当前系统的启动模式; 要点提示 系统启动模式的获取是通过GetSystemMetrics()函数来获得的; GetSystemMetrics ()用于得到被定义的系统数据或者系统配置信息; 函数原型:intWINAPI GetSystemMetrics( __in intnIndex);函数仅跟一个参数,参数的取值众多,可以查阅MSDN手册;系统启动模式的获取可以用int nIndex=::GetSystemMetrics(SM_CLEANBOOT);来取得 返回的值就是对应系统的启动模式; 实现功能 1.新建基于对话框的应用程序 2.拖拽 按钮<获得系统启动模式><鼠标上按键数><是否有鼠标安装><鼠标左右键对调了><系统处理器水平>关联函数;拖拽编辑框IDC_EDIT1, IDC_EDIT2,组合框ID为IDC_COMBO1用于罗列出系统的全部启动模式 3.在对话框OnInitDialog()函数中初始化 CComboBox* pCombo= (CComboBox*)GetDlgItem(IDC_COMBO1); pCombo->InsertString(0,"Normalboot");//插入文本 pCombo->InsertString(0,"Fail-safeboot"); pCombo->InsertString(0,"Fail-safewith network boot"); pCombo->SetCurSel(0);//选择当前显示文本 4.实现各个按钮的关联函数 - void CGkbc8Dlg::OnProcessor()
- {
- BOOL bMouseSwap = GetSystemMetrics(SM_SLOWMACHINE);
- if(bMouseSwap)
- MessageBox("系统拥有低处理器");
- else
- MessageBox("系统拥有高处理器");
- }
复制代码- void CGkbc8Dlg::OnMouseswap()
- {
- BOOL bMouseSwap = GetSystemMetrics(SM_SLOWMACHINE);
- if(bMouseSwap)
- MessageBox("鼠标左右键已对调");
- else
- MessageBox("鼠标左右键未对调");
- }
- #define SM_MOUSEWHEELPRESENT 75
- void CGkbc8Dlg::OnMousenums()
- {
- BOOL bMouse = GetSystemMetrics(SM_MOUSEPRESENT);//是否有鼠标安装
- BOOL bMouseWhile = GetSystemMetrics(SM_MOUSEWHEELPRESENT);//安装的鼠标是否有中键
- CString sText;
- if(bMouse)
- sText.Format("有鼠标安装,鼠标有%d个中键",bMouseWhile);
- else
- sText="系统未安装鼠标";
- SetDlgItemText(IDC_EDIT2,sText);
-
- }
- void CGkbc8Dlg::OnMousenum()
- {
- int nNum = GetSystemMetrics(SM_CMOUSEBUTTONS);
- CString sText;
- sText.Format("共%d个鼠标按键数",nNum);
- SetDlgItemText(IDC_EDIT1,sText);
- }
- void CGkbc8Dlg::OnSysmode()
- {
- CComboBox* pCombo = (CComboBox*)GetDlgItem(IDC_COMBO1);//获得组合框指针
- int nCount = pCombo->GetCount();
- CString sComText; int i;
- int nIndex=::GetSystemMetrics(SM_CLEANBOOT);//获取系统启动模式
- switch(nIndex)
- {case 0:
- for(i=0;i<nCount;i++)
- {
- pCombo->GetLBText(i,sComText);
- if(sComText=="Normal boot")
- pCombo->SetCurSel(i);
- }
- break;
复制代码- case 1:
- for(i=0;i<nCount;i++)
- {
- pCombo->GetLBText(i,sComText);
- if(sComText=="Fail-safe boot")
- pCombo->SetCurSel(i);
- }
- break;
- case 2:
- for(i=0;i<nCount;i++)
- {
- pCombo->GetLBText(i,sComText);
- if(sComText=="Fail-safe with network boot")
- pCombo->SetCurSel(i);
- }
- break;
- default:
- break;
- }
- }
复制代码我们来演示下功能实现的整个过程
|