4

私はC#でInternet Explorer用のブラウザヘルパーオブジェクト(BHO)を書いています!

DOMでテキストノードを探したいのですが、テキストノードと他のタイプのノードを区別したい場合は、DOMツリー全体をトラバースする必要があります。これは、C#ではおそらく時間がかかりますが、C ++(?)ではほぼ瞬時に実行されるはずです。

代わりにC++でトラバースを実行する方法はありますか?おそらくDllImportを使用してC#から呼び出すことができるdll?HTMLDocumentを外部に公開されたc++メソッドに渡すのは簡単ですか?

他のアイデアはありますか?

乾杯!

4

2 に答える 2

3

「おそらく」はどこから得たのですか?ほとんどの時間は、DOM を実装するコードに費やされます。これは、Microsoft によって C++ で記述されました。

Marshal.GetIUnknownForObject() は、ネイティブ コードに渡すことができる未加工のインターフェイス ポインターを取得します。IHtmlDocument2 のポインターを QI し、そこから取得する必要があります。

于 2010-10-31T19:56:16.940 に答える
0
これは C# ではおそらく時間がかかりますが、

これは間違っています。

ユーザーの時間のほとんどは、HTML がブラウザーに到着し、ブラウザーが画面に描画するのを待つために費やされます。それに比べて、DOM を (任意の言語で) 歩くのは簡単です。

于 2010-10-31T23:34:14.217 に答える