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;
}
使用该函数,可以实现获取其他窗口句柄,并可以操作该窗口