如何获取其它窗口的句柄

来源:互联网 发布:阶层算法 编辑:程序博客网 时间:2024/04/30 03:51
BOOL AutoInstallDeviceDriver( CWnd *pHostWnd, CString strTargetText, CString strButtonText ){ char BUF[MAX_PATH_LENGTH]; if ( pHostWnd )  {  char *pControlName = new char[MAX_PATH_LENGTH];  CWnd *pClientWnd = pHostWnd->GetWindow( GW_CHILD );  while ( pClientWnd )  {   ::GetClassName( pClientWnd->GetSafeHwnd(), pControlName, MAX_PATH_LENGTH );   CString strControlName = pControlName;   strControlName.TrimRight();      if ( "#32770" == strControlName )   {    CWnd *pchildwnd = pClientWnd->GetWindow( GW_CHILD );    while ( pchildwnd ) {     ::GetClassName( pchildwnd->GetSafeHwnd(), pControlName, MAX_PATH_LENGTH );     CString strChild = pControlName;     strChild.TrimRight();          if ( strChild == "Button" )     {      pchildwnd->SendMessage( WM_GETTEXT, sizeof(BUF)/sizeof(TCHAR), (LPARAM)(VOID*)BUF );      CString strName = BUF;            //strTargetText  "否,暂时不(&T)"      //     "自动安装软件(推荐)(&I)"      if ( strTargetText == strName )      {       pHostWnd->SetForegroundWindow();       pHostWnd->SetActiveWindow();       ::SendMessage( pchildwnd->GetSafeHwnd(), BM_CLICK, 0, 0 );       break;      }     }          pchildwnd = pchildwnd->GetNextWindow();    }   }   if ( "Button" == strControlName )   {    pClientWnd->SendMessage( WM_GETTEXT, sizeof(BUF)/sizeof(TCHAR), (LPARAM)(VOID*)BUF );    CString strName = BUF;    //strButtonText  "下一步(&N) >"    //     "完成"    //     "仍然继续(&C)"    if ( strButtonText == strName )    {     pHostWnd->SetForegroundWindow();     pHostWnd->SetActiveWindow();     ::SendMessage( pClientWnd->GetSafeHwnd(), BM_CLICK, 0, 0 );     break;    }      }      pClientWnd = pClientWnd->GetNextWindow();     }  return TRUE; } return FALSE;} 


使用该函数,可以实现获取其他窗口句柄,并可以操作该窗口