我尝试在firefox中获取所选文本和鼠标下的单词
经过大量搜索后,我得到的解决方案是我必须使用IAccessible在Firefox中访问文档的HTML
我在这个链接中找到了c ++中的解决方案 How to access a document's HTML in Firefox using IAccessible
解决方案使用ISimpleDOMNode.idl文件,因此将该解决方案从c ++转换为c#的第一步是转换
ISimpleDOMNode.idl到tlb文件并将tlb转换为dll填充
我尝试使用此命令的VS命令提示符转换为tlb文件 midl ISimpleDOMNode.idl
但是生成了ISimpleDOMNode.h和ISimpleDOMDocument.h,它们定义了接口。它还创建了ISimpleDOMNode_i.c和ISimpleDOMDocument_i.c,但是没有tlb文件
有什么不对?
这是ISimpleDOMNode.idl文件的链接
答案 0 :(得分:1)
interface ISimpleDOMNode : IUnknown {
// etc..
}
这就是降压停止的地方,IUnknown派生接口不兼容自动化。它们可以从C ++代码中使用,请注意midl生成的.h文件和.idl文件中的cpp_quote()数量。自动化兼容的COM接口派生自IDispatch,并使用自动化兼容类型的子集作为函数参数。 Variant,BSTR和SafeArray是很受欢迎的选择。
从技术上讲,可以在C#代码中重新声明接口类型,你只是没有得到类型库的任何帮助来实现这一点。你必须处理无多重继承问题(不是这个问题)。没有类型库,Tlbimp.exe无能为力。
使用C ++ / CLI实现此目的,您可以编写一个ref类包装器,并且可以#include .h文件。