随时锁定你的计算机

Author: 许开全 Date: 2001年 19期

?牐犠源覹in2000问世后,同宿舍的兄弟们便纷纷搭乘上了Win2000快车。而我却只能望尘莫及我的“老战友”硬件条件太差,享受不了Win2000的星级服务,特别当吃饭或有点小事要出去时,Win2000客户只须轻轻一按“Ctrl+Alt+Del”便扬长而去,回来后又只须轻轻一按便可Go On。而我却忧心忡忡的离去,胆战心惊的回来,因为一些重要的东西,若被“不知情”的旁观者不小心给点坏了,那麻烦可就大了,因而我试着自己编了个能随时锁定计算机的小程序,以便从软件上弥补“老战友”的硬件不足。
  ?牐犗劝阎饕枷虢惨幌拢M蠹夷芄餐写瑁餐晟扑?
  ?牐牨境绦虻墓丶牵河萌燃せ詈筇ǔ绦颍绦蛑卸匀燃M_HOTKEY进行捕获,并通过消息参数了解哪个键被按下,从而将后台程序调至前台锁定计算机。
  #2?牐?1.主窗体的设计
  ?牐犘陆ㄒ换诙曰翱虻墓こ倘∶鸏ock,其余选项保持默认方式,将取消按钮删掉,将确定按钮的Caption改为“进入”将Static Text的Caption改为“本机已被锁定,请单击进入按钮解除”,将窗体Styles属性中的Title Bar去掉。
  #2?牐?2.口令窗体的设计
  ?牐犘乱胍欢曰翱颍尤肓礁鯯tatic Text控件Caption分别为:“用户”和“口令”。在加入两个Edit控件,ID分别为:IDC_USER、IDC_PASSWORD,并将IDC_PASSWORD控件的Styles属性的PASSWORD选上;用ClassWizard为对话框新建一个类CPasswordDlg,分别为IDC_USER和IDC_PASSWORD设定CString类型的变量m_User和m_Password。
  #2?牐?3.向系统登记热键和解出热键
  ?牐燙LockDlg::OnCreat()中写入:??
  ?牐燫egisterHotKey (m_hWnd,1001,MOD_CONTROL|MOD_ALT,'L');//此处热键设为Ctrl+Alt+l。
  ?牐燙lockDlg::OnDestroy()中写入??
  ?牐燯nregisterHotKey (m_hWnd,1001);//解除热键。
  #2?牐?4.全屏显示和屏蔽“Ctrl+Alt+Del”等热键以及禁止关闭窗口
  ?牐燙LockDlg::OnInitDialog()中写入:??
  ?牐燬ystemParametersInfo(SPI_SETSCREENSAVERRUNNING,TRUE,NULL,0);//屏蔽热键“Ctrl+Alt+Del”等。
  ?牐燬etWindowPos (&wndTopMost,0,0,::GetSystemMetrics(SM_CXSCREEN),
  ?牐牔煢?::GetSystemMetrics (SM_CYSCREEN),SWP_SHOWWINDOW);//全屏显示。
  ?牐燙LockDlg::OnClose()中去掉CDialog::OnClose();//禁止用“Alt+F4”关闭窗口。
  #2?牐?5.热键的处理
  ?牐犜贑lockDlg中加入函数:LRESULT OnHotKey (WPARAM wParam,LPARAM lParam);并在ClockDlg.cpp中消息映射宏写入ON_MESSAGE(WM_HOTKEY,OnHotKey)??
  ?牐犜贑LockDlg::OnHotKey()中写入:
  ?牐爄f(wParam==1001)??
     {
  ?牐燬ystemParametersInfo (SPI_SETSCREENSAVERRUNNING,TRUE,NULL,0);?牔?
  ?牐?//屏蔽热键Ctrl+Alt+Del等。
  ?牐燬etForegroundWindow();//将后台程序调至前台从而锁定计算机。
  ?牐燬howWindow(TRUE);
       }?牔?
  ?牐爎eturn 0;
  #2?牐?6.解锁
  ?牐犜贑LockDlg中加入CPasswordDlg类对象PasswordDlg,在CLockDlg(OnOK)中去掉CDialog(OnOK)并写入:
  ?牐燿o??
     {    ?牓?
  ?牐爄f(PasswordDlg.DoModal==IDOK)
     {??
  ?牐牓?     if((PasswordDlg.m_User=="Administrator")&&(PasswordDlg.m_Password=="Password"))//此处用户设为“Administrator”,口令设为:"Password"。
     {?牐牓?
  ?牐燗fxGetMainWnd()->ShowWindow(SW_HIDE);//将程序隐藏至后台。         
  SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,FALSE,NULL,0);//解除“Ctrl+Alt+Del”等热键锁定。
  ?牐燽reak;
       }?牐牐牓?
  ?牐爀lse//输入不正确。
  ?牐燤essageBox(“口令不正确,或是由于忘记将Caps Lock按下”,“警告”MB_OK|MB_ICONINFORMATION);
       }?牔牐牐牓?
  ?牐爀lse
       ?牐燽reak;
       }
  ?牐爓hile(1);
  ?牐牻绦蛐薷囊幌拢憧芍С侄嘤没В嗫诹睿辉倮圩浮W詈蠼绦蚣咏⒉岜硪员忝看魏筇ㄔ诵小J砸皇孕Ч绾危浚ū境绦蛟赩c6.0/Win98下通过)。