已经获得IE窗口句柄,如何获得窗口中type = submit的控件的ID

解决方案 »

  1.   

    CComPtr<IHTMLDocument2> spDoc;
    LRESULT lRes;

    UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
    ::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes ); LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
    if ( pfObjectFromLresult != NULL )
    {
    HRESULT hr;
    hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument, 0, (void**)&spDoc );
    if ( SUCCEEDED(hr) )
    {
    CComPtr<IDispatch> spDisp;
    CComQIPtr<IHTMLWindow2> spWin;
    spDoc->get_Script( &spDisp );
    spWin = spDisp;
    spWin->get_document( &spDoc.p );
    // Change background color to red
    spDoc->put_bgColor( CComVariant("red") );
    }
    }
      

  2.   

    简单说通过Microsoft Active Accessibility得到IHTMLDocument2.
    Then get the IHTMLElement object you want
      

  3.   

    或者通过AccessibleObjectFromWindow获取IAccessible接口,
    然后再查找