0

HTML ページまたは XPS ドキュメントをユーザーに表示するために、ネイティブの非 .NET WebBrowser コントロールを使用しています。私は単にNavigateどちらかになります。

HTML 部分には満足していますが、通常、XPS ドキュメントはブラウザーの境界に適合しません。幅に合わせたい。これは、コンテンツをダブルクリックすると発生しますが、ドキュメントの読み込み時にプログラムで実行したいと考えています。

ホストされたドキュメントに対して を返すことが文書化されています。当然、このプロパティを取得して、 のようなことをしたいと思います。WebBrowser.DocumentIDispatchWebbrowser1.Document.Parent.FitToWidth()

問題は、返されたメソッドがIDispatch実際に持っているものと、それをどのように操作するかを理解できないことです。
でクラス/インターフェース情報を取得しようとしましたがTypeLib Info、うまくいきませんでした。オブジェクトはそれをサポートしていません。または
などの一般的なプロパティをいくつか試しましたが、どちらも存在しないようです。 に似たものではないかと思いましたが、やはり「オブジェクトはこのアクションをサポートしていません。」NameParent
DocumentViewer

では、コンテンツが XPS の場合に Webbrowser.Document プロパティを使用するにはどうすればよいでしょうか。

(ところで、エラーは奇妙です。VBA の世界では、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」となるはずですが、実際には「オブジェクトはこのアクションをサポートしていません。」ドキュメントを使用する (たとえば、スクリプトを作成するのに安全ではないため)?)

ブラウザの境界内でのダブルクリックのシミュレートを避けたい。

4

1 に答える 1

0

@GSeryは、BeforeNavigate2やDocumentCompleteなどのイベントからpDispを取得して、pDisp(およびイベントによって渡された他の引数)を試して、他に何ができるかを確認しましたか?

もちろん、WBControl.Documentは.Widthプロパティと.Heightプロパティを提供します。まだ試していない場合は、試してみてください。もう1つの方法は、ドキュメントウィンドウでjavascriptを実行することです。このように(WBはWebBrowserコントロール名です)、sScriptはwindow.heightとwindow.widthを変更するjavascriptファイルであり、jsコードの新しい行はそれぞれ;で区切ることができます。1行には、;で区切られた多くの行を含めることができます。また、sLanguageを「JScript」と等しく設定する必要があります。これで準備が整います。

WB.Document.parentWindow.execScript sScript, sLanguage

それ以外の場合は、別のトリックを使用して、メイン/親ドキュメント内のiframeに.XPSをロードし、親/メインドキュメントによってホストされるHTMLにiframeの幅を設定できます。これにより、XPSが強制的に動作するようになります。もちろん、メイン/親ドキュメントでも.execScript(javascript lines od code)を実行できます(そしてそこからフレームにアクセスできます)。

また、WBコントロールで.NETバージョンを使用している場合は、.execScriptの代わりに.InvokeScriptを使用できます(ただし、両方とも機能するはずです)。

また、親/フレームウィンドウ階層を解決する場合は、WB.Document.parentWindowで解決するか、実行しているJavaScript内で解決するか、exeアプリケーションコードとjavascriptコードの両方を使用してドキュメント階層を組み合わせて解決できます。

あなたがどうやって仲良くなるか、そして私が助けるために何かできることがあれば、私に教えてください。

于 2012-08-31T13:08:32.143 に答える