微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题随时锁定你的计算机
栏目软件世界
作者许开全
发布2001年19期
  自从Win2000问世后,同宿舍的兄弟们便纷纷搭乘上了Win2000快车。而我却只能望尘莫及我的“老战友”硬件条件太差,享受不了Win2000的星级服务,特别当吃饭或有点小事要出去时,Win2000客户只须轻轻一按“Ctrl+Alt+Del”便扬长而去,回来后又只须轻轻一按便可Go On。而我却忧心忡忡的离去,胆战心惊的回来,因为一些重要的东西,若被“不知情”的旁观者不小心给点坏了,那麻烦可就大了,因而我试着自己编了个能随时锁定计算机的小程序,以便从软件上弥补“老战友”的硬件不足。
  先把主要思想讲一下,希望大家能共同切磋,共同完善它。
  本程序的关键是:用热键激活后台程序,程序中对热键消息WM_HOTKEY进行捕获,并通过消息参数了解哪个键被按下,从而将后台程序调至前台锁定计算机。
   1.主窗体的设计
  新建一基于对话框的工程取名Lock,其余选项保持默认方式,将取消按钮删掉,将确定按钮的Caption改为“进入”将Static Text的Caption改为“本机已被锁定,请单击进入按钮解除”,将窗体Styles属性中的Title Bar去掉。
   2.口令窗体的设计
  新引入一对话框,加入两个Static Text控件Caption分别为:“用户”和“口令”。在加入两个Edit控件,ID分别为:IDC_USER、IDC_PASSWORD,并将IDC_PASSWORD控件的Styles属性的PASSWORD选上;用ClassWizard为对话框新建一个类CPasswordDlg,分别为IDC_USER和IDC_PASSWORD设定CString类型的变量m_User和m_Password。
   3.向系统登记热键和解出热键
  CLockDlg::OnCreat()中写入:
  RegisterHotKey (m_hWnd,1001,MOD_CONTROL|MOD_ALT,'L');//此处热键设为Ctrl+Alt+l。
  ClockDlg::OnDestroy()中写入
  UnregisterHotKey (m_hWnd,1001);//解除热键。
   4.全屏显示和屏蔽“Ctrl+Alt+Del”等热键以及禁止关闭窗口
  CLockDlg::OnInitDialog()中写入:
  SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,TRUE,NULL,0);//屏蔽热键“Ctrl+Alt+Del”等。
  SetWindowPos (&wndTopMost,0,0,::GetSystemMetrics(SM_CXSCREEN),
  ::GetSystemMetrics (SM_CYSCREEN),SWP_SHOWWINDOW);//全屏显示。
  CLockDlg::OnClose()中去掉CDialog::OnClose();//禁止用“Alt+F4”关闭窗口。
   5.热键的处理
  在ClockDlg中加入函数:LRESULT OnHotKey (WPARAM wParam,LPARAM lParam);并在ClockDlg.cpp中消息映射宏写入ON_MESSAGE(WM_HOTKEY,OnHotKey)
  在CLockDlg::OnHotKey()中写入:
  if(wParam==1001)
   {
  SystemParametersInfo (SPI_SETSCREENSAVERRUNNING,TRUE,NULL,0);
  //屏蔽热键Ctrl+Alt+Del等。
  SetForegroundWindow();//将后台程序调至前台从而锁定计算机。
  ShowWindow(TRUE);
   }
  return 0;
   6.解锁
  在CLockDlg中加入CPasswordDlg类对象PasswordDlg,在CLockDlg(OnOK)中去掉CDialog(OnOK)并写入:
  do
   {  
  if(PasswordDlg.DoModal==IDOK)
   {
        if((PasswordDlg.m_User=="Administrator")&&(PasswordDlg.m_Password=="Password"))//此处用户设为“Administrator”,口令设为:"Password"。
   {  
  AfxGetMainWnd()->ShowWindow(SW_HIDE);//将程序隐藏至后台。  
  SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,FALSE,NULL,0);//解除“Ctrl+Alt+Del”等热键锁定。
  break;
   }  
  else//输入不正确。
  MessageBox(“口令不正确,或是由于忘记将Caps Lock按下”,“警告”MB_OK|MB_ICONINFORMATION);
   }  
  else
     break;
   }
  while(1);
  将程序修改一下,便可支持多用户,多口令,不再累赘。最后将程序加进注册表以便每次后台运行。试一试效果如何?(本程序在Vc6.0/Win98下通过)。