李嘉图啊李嘉图 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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?