http://www.vckbase.com/document/viewdoc/?id=242
http://www.vckbase.com/document/viewdoc/?id=424

解决方案 »

  1.   

    Ctrl + Alt + Del 好像用一般的方法 Hook 不到吧,微软好像对这几个键做过手脚。
      

  2.   

    对SAS窗口进行子类化,就可以截取ALT+CTRL+DEL键了。其实最好的办法还是系统办法。
    创建一个桌面,屏蔽掉ALT+CTRL+DEL键,
    显示一个对话框。
    开锁后切换回默认桌面。参考APICreateDesktop
    SwicthDesktop我以前写过。
      

  3.   

    对ALT+CTRL+DEL键
    用GINA就好。
      

  4.   

    我在一本书上看到他好像是用SystemParametersInfo()这个函数,但我没有在Windows XP下运行成功,这可能是因为XP安全方面考虑到这一点所以屏蔽掉了。如果是在98等条件下可以试试这个函数。SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, 1, NULL,0);
    EnableWindow(GetDesktopWindow(),FALSE);我是新手,初次发贴,望大虾们不要见笑。
      

  5.   

    typedef BOOL (__stdcall * _EnabledKey)(const char* sa);
    HINSTANCE hDLLInst = ::LoadLibrary("RunDLL.dll");      
        if(hDLLInst)
    {
    _EnabledKey EnabledKey=(_EnabledKey)::GetProcAddress(hDLLInst, "EnabledKey");
    if(EnabledKey)
    {
    char szPath[MAX_PATH];
    ::GetCurrentDirectory(MAX_PATH,szPath);
    strcat(szPath,"\\SASHOOK.dll");
      
    if (EnabledKey(szPath));
    MessageBox("成功屏蔽");
    }
    ::FreeLibrary(hDLLInst);
    }需要RunDLL.dll和SASHOOK.dll要的话发邮件给我[email protected]
      

  6.   

    可以遇到taskmgr.exe就把它结束掉
    有个StopProcess9x函数
    设立一个定时器
    每隔100毫秒就StopProcess9x("taskmgr.exe");  ^_^BOOL CExample2Dlg::StopProcess9x   (char*   WillStopName) 
      {     
              HANDLE                   hProcessSnap   =   NULL;     
              BOOL                       bRet             =   FALSE;     
              PROCESSENTRY32   pe32             =   {0};     
              hProcessSnap   =   CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,   0);     
        
              if   (hProcessSnap   ==   INVALID_HANDLE_VALUE)     
                      return   (FALSE);     
          
              pe32.dwSize   =   sizeof(PROCESSENTRY32);     
         if   (Process32First(hProcessSnap,   &pe32))     
              {     
                      BOOL  bGotModule   =   FALSE;     
                      MODULEENTRY32   me32  =   {0};     
                      do     
                      {     
                              HANDLE   hProcess;     
                              hProcess   =   OpenProcess   (PROCESS_ALL_ACCESS,     
                                                                              FALSE,   pe32.th32ProcessID);     
                              strupr(pe32.szExeFile);   
                              char   ProcessName[100];   
                              strcpy(ProcessName,WillStopName);   
                              strupr(ProcessName);   
                              if(strcmp(pe32.szExeFile,ProcessName)==0)   
                              {   
                                      DWORD   result=TerminateProcess(   hProcess,   0   );   
                                      if(result!=0)   
                                            return   TRUE;   
                              }   
                              CloseHandle   (hProcess);     
                      }     
                      while   (Process32Next(hProcessSnap,   &pe32));     
              }     
              else     
                      bRet   =   FALSE;             
              CloseHandle   (hProcessSnap);     
              return   (bRet);     
      }
      

  7.   

    windows98下的是: SystemParametersInfo(SPI_SETSCREENSAVEACTIVE);
    NT的就不能这样了。