如何获取其它窗口的句柄

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;
} 


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值