【问题标题】:How to access a document's HTML in Firefox using IAccessible如何使用 IAccessible 在 Firefox 中访问文档的 HTML
【发布时间】:2009-02-12 17:19:31
【问题描述】:

我可以使用以下代码从 Firefox 窗口获取 IAccessible 对象:

Guid guid = new Guid("{618736E0-3C3D-11CF-810C-00AA00389B71}");
object obj = null;
int ret = AccessibleObjectFromWindow(hWnd, 
    (uint) OBJID.WINDOW, ref guid, ref obj);
Accessibility.IAccessible acc = (Accessibility.IAccessible)obj;

但是,我不确定从这里去哪里。我需要从文档中获取完整的 HTML。我知道 IAccessible.get_accValue() 方法,但我不确定如何在 Firefox 中使用它。任何帮助将不胜感激。

【问题讨论】:

    标签: c# firefox accessibility iaccessible


    【解决方案1】:

    显然您无法使用 IAccessible 获得完整的 HTML 源代码。我发现了这个,但它在 FF3.5 中不起作用:

    IServiceProvider *pServProv = NULL;
    pAccessible->QueryInterface(IID_IServiceProvider, (void**)&pServProv);
    ISimpleDOMNode *pSimpleDOMNode;
    if (pServProv) {
      const GUID refguid = {0x0c539790, 0x12e4, 0x11cf, 0xb6, 0x61,
                            0x00, 0xaa, 0x00, 0x4c, 0xd6, 0xd8};
      HRESULT result = pServProv->QueryService(refguid, IID_ISimpleDOMNode,
                                               (void**)&pSimpleDOMNode);
      if (SUCCEEDED(hresult) && pSimpleDOMNode != NULL) {
        /* This is a Mozilla node! Use special ISimpleDOMNode methods described in
          ISimpleDOMNode.idl. */
      }
    }
    

    我也发现了这个,它在 FF3.5 中也不起作用:

    HRESULT hr = AccessibleObjectFromWindow(hwnd, OBJID_CLIENT,
          IID_IAccessible, (void**)&pAccessible);
    if (SUCCEEDED(hr) && pAccessible != NULL) {
    HRESULT hr = pAccessible->QueryInterface(
          IID_ISimpleDOMNode, (void**)&pSimpleDOMNode);
    }
    

    我被困住了。 :(

    【讨论】:

    • 您使用的是 C++ 吗?如果是,您是否链接了 xulrunner 库?
    • 我没有链接到 xulrunner 库,我使用的是从提供的 .IDL 文件生成的对象。我使用 MIDL 从 .IDL 生成 .H 文件。我想知道 .H 文件中的 IID_ISimpleDOMNode 值是否错误,但我不确定如何验证它。
    • 我在这里使用第一个示例解决了它,并递归处理每个节点,直到我们到达一个 HTML 节点。那么innerHTML调用就会成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多