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中使用它。任何帮助将不胜感激。
#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库?
–马修·塔伯特(Matthew Talbert)
09年8月26日在7:24
我没有链接到xulrunner库,而是使用从提供的.IDL文件生成的对象。我使用MIDL从.IDL生成.H文件。我想知道.H文件中的IID_ISimpleDOMNode值是否错误,但是我不确定如何进行验证。
–琼·塔卡伯里(Jon Tackabury)
09年8月26日在13:36
我在这里使用第一个示例解决了该问题,然后递归处理每个节点,直到到达HTML节点。然后,innerHTML调用将成功。
–琼·塔卡伯里(Jon Tackabury)
09年8月27日在17:35