李嘉图啊李嘉图 2019-09-11 14:00 采纳率: 0%
浏览 235
已结题

获取IE输入input标签的输入内容,获得doc2文档GetgetElementById为什么为空?

获得的Docment文档后无法获取指定ID元素怎么办

32位Dll注入获取Internet Explorer_Server,替换了窗口之后获得Docment2使用GetelementByid
获得指定元素对象为空是为什么

CComPtr<IHTMLDocument2> GetDocmentInterface(HWND hwnd)
{
    CoInitialize(NULL);
    HINSTANCE  hInst = ::LoadLibrary(_T("OLEACC.DLL"));
    CComPtr<IHTMLDocument2> pDoc2 = NULL;
    if (hInst != NULL)
    {
        printfMessage("加载dll成功");
        if (hwnd != NULL)
        {
            CComPtr<IHTMLDocument> spDoc = NULL;
            LRESULT lRes;
            UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));//定义一个新的窗口消息
            SendMessageTimeout(hwnd, nMsg, 0L, 0L, SMTO_BLOCK, 2000, (PDWORD_PTR)&lRes);//将指定的消息发送到一个或多个窗口
            LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hInst, "ObjectFromLresult");
            if (pfObjectFromLresult != NULL)
                printfMessage("窗口替换成功");
            pfObjectFromLresult(lRes, IID_IHTMLDocument2, 0, (void**)&pDoc2);
        }
        ::FreeLibrary(hInst);
    }
    else
        printfMessage("获取文档失败");
    if (pDoc2 != NULL)
    {
        printfMessage("获取文档成功");
    }
    return pDoc2;
}

void GetNameEdit(HWND hwnd)
{
    CComPtr<IHTMLDocument2>&pDoc2 = GetDocmentInterface(hwnd);
    if (pDoc2)
    {
        printfMessage("doc2不为空");
        CComQIPtr<IHTMLDocument3> doc3 = pDoc2;
        CComPtr<IHTMLElement> spElement;
        if (doc3)
        {
            printfMessage("doc3不为空");
            HRESULT hr;
        hr= doc3->getElementById(L"pw_box", &spElement);
        char str[20];
        sprintf(str, "%#x", hr);    
            printfMessage(str);
            if (spElement!=NULL)
            {
                int Error = GetLastError();
                printfMessage("Ele错误码2:", Error);
                printfMessage("Ele不为空");
  • 写回答

2条回答 默认 最新

  • dabocaiqq 2019-09-11 18:03
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析