問題タブ [mshtml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - マウスクリック中にMSHTMLでカレットの位置を変更するにはどうすればよいですか?
アプリケーションにMSHTMLベースのコントロールが埋め込まれていて、ContentEditableモードを使用してその中のドキュメントを編集しています。HTMLドキュメントの本文には、最初は次の行が含まれています。
カレットは、ドキュメントの先頭、つまり最初のDIV要素内に配置されます。これで、ユーザーがコントロール内の最後の行の下の場所でマウスをクリックすると、カレットは2番目のDIV要素に移動します。これは、ユーザーがクリックしたポイントに最も近い要素であるためです。
マウスクリックで最初のDIVの終わりにポインタを移動したいと思います。これで、キャレットの意図された位置をととして計算するコードができましIMarkupPointer
た IDisplayPointer
。私が知る必要があるのは、実際のカレット移動を行うためにMSHTMLイベントパイプラインをインターセプトする場所です。
IHTMLEditDesigner
を使用してカレットを実装IHTMLCaret.MoveCaretToPointer
し、目的の位置に移動するコードを作成しました。問題は、イベントをインターセプトする場所(PreHandleEvent、PostHandleEvent、またはPostEditorEventNotify)に関係なく、シングルクリックで最終的にカレットの位置がデフォルトの位置に戻ることです(ただし、マウスの左ボタンをしばらく押したままにした場合、またはマウスの右ボタンでクリックします)。
c# - 「特別なフォルダ」の内容を表示するc#webbrowserコントロール:DocumentとDocumentDomが常にnullになるのはなぜですか?
C#WinForms、.NET Framework 3.5では、フォームにWebBrowerコントロールを使用してプロジェクトを作成します。
...プロジェクト参照をMSHTMLdllに設定し、WinFormコードを使用: "using mshtml;" ..。
お気に入りフォルダのような「特別なフォルダ」をブラウザに簡単にロードできます。
「特別なフォルダ」をロードした後:WebBrowserに表示されるのは本質的に一種の「エクスプローラ」ビューです:「詳細」ビューの「詳細」などの典型的な「エクスプローラ」ビュースタイルを選択できます。行-列マトリックス、典型的な「エクスプローラー」スタイルの列ヘッドなど。
通常、ドキュメントまたはドキュメントのDomDocumentをmshtml.dllによって公開されているIHTMLDocument2インターフェイスにキャストすることで、WebブラウザのDOMに「アクセス」します。
IHTMLDocument2 HTMLDocument =(IHTMLDocument2)webBrowser1.Document;
//これも試しました
// IHTMLDocument2 HTMLDocument =(IHTMLDocument2)webBrowser1.Document.DomDocument;
//これも試しました
// HTMLDocumentClass HTMLDocument = webBrowser1.Document.DomDocument as HTMLDocumentClass;
しかし、この場合、「特別なフォルダ」のコンテンツを表示すると、常にドキュメントがnullとして表示されます。
お気に入りなどの特別なフォルダを表示しているときに、新しいフォルダを作成して他の「ファイル操作」を実行できるのは興味深いことです。IE8でプロテクトモードをオフにしているので、「これでうまくいく」のではないでしょうか。
WebBrowserコントロールで特別なフォルダーを表示しながらDOMにアクセスする方法についてのアイデアに感謝します。
ありがとう !明細書
c# - C# の URL モニカーの例 (IMoniker)
(アプリケーション内の) ストレージから HTML Edit コントロールに画像を提供するために使用される MSHTML の URL モニカーを実装しようとしています。これを行うには IMoniker インターフェイスを実装する必要があることを理解しました。
これに関する適切なドキュメントやサンプル コードはどこにも見つかりませんでした。(この件に関するすべての MSDN ドキュメントは、C++/COM プログラミングとOLE の非常に深い理解を暗示しているようですが、私が持っているとは言えません)。
C# で URL モニカーと IMoniker インターフェイスを実装するにはどうすればよいですか?
c# - C#を使用してHTML要素の座標を取得するには?
Webページからhtml要素の座標を抽出するWebクローラーを開発する予定です。「mshtml」アセンブリを使用すると、html 要素の座標を取得できることがわかりました。今、私はそれが可能かどうか、そしてどのようにWebページから必要な情報(html、css)だけを取得し、適切なmshtmlクラスを使用してすべてのhtml要素の正しい座標を取得するかを知りたいですか?
ありがとうございました!
html - MSHTMLを使用してonclick javascriptイベントパラメータを解析するには?
次のマークアップで定義されている onlick イベントで JavaScript 呼び出しを抽出する必要があります。
これは、onclick からテキスト文字列として抽出したいものです: 'javascript:start("a", "b", "code");'
私は MSHTML を使用する初心者です。多分これを行うためのより良い方法がありますか?
mfc - MSHTML MFC チュートリアル
これは以前に 2 回質問されたことは知っていますが、どちらも適切な回答がなく、日付が付けられているため、最近誰かが何かを見つけた場合に備えて、もう一度質問します!.
MSHTML - MFC でさまざまな操作を実行する方法を理解するために読むことができる、MSHTML またはオープン ソース プロジェクトの優れたチュートリアルを知っている人はいますか?
ありがとう
c# - ドキュメントのプロパティが変更されたときに、WPFWebBrowserコントロールがデザインモードになりません
イライラする問題があります。これが私がしていることの単純化されたバージョンです:
c#のUserControlには、ツールバーと埋め込みWebBrowserオブジェクトが含まれています。ツールバーには「編集」ボタンがあり、クリックするとWebブラウザコントロールがデザインモードに設定されます。別のボタン「キャンセル」は、デザインモードをオフにします。
擬似コード(非常に単純化):
問題: 表示されたWebページをクリックしてから、[編集]ボタンをクリックすると、WebBrowserコントロールが編集可能になりません。写真/リンクにカーソルを合わせると、マウスポインターは、編集用のマウスポインターではなく、Webブラウザーナビゲーションのマウスポインターを表示します。テキストをクリックしても、カレットが表示されません。
デバッグすると、この状況ではドキュメントのdesignModeプロパティが実際には「オン」に設定されていることがわかりますが、コントロールは「オフ」に設定されているかのように動作しています。
[編集]ボタンをクリックする前にWebページをクリックしないと、すべてが期待どおりに機能します。
詳細: コントロールがデザインモードのときに[キャンセル]ボタンをクリックすると、ドキュメントがクリックされた場合に対応する(誤った)動作が発生します。
ドキュメントをクリックせずに[編集]、[キャンセル]、[編集]などをクリックするだけで問題なく動作します(マウスオーバーテストでは適切なマウスポインターが表示され、デザインモードに応じてリンクナビゲーションまたは編集が行われます。表示されたドキュメントのリンクをクリックします)。
designModeプロパティを変更する前に、別のコントロールがフォーカスを取得するようにさまざまな手法を試しましたが、違いはありません。私はMSDNと既知のインターネットの半分を検索しましたが、この種の問題についての言及は見つかりませんでした。このようにdesignModeプロパティを反転することは、非常に珍しいようです。
もう1つの情報:ユーザーコントロールによって実装されたシンクを使用してドキュメントにアドバイスすることにより、ドキュメントイベントを設定しています。これが問題に関係しているとは思えませんが、完全を期すためにここに含めました。更新:これを無効にしても、問題に関しては何も変わりません。
誰かがこの問題を認識していますか?
更新: SetDesignMode()でWebブラウザーコントロールを再作成することにより、問題を回避しました。これは醜い解決策ですが、機能し、実際には問題ないように見えます。ただし、この問題に関するフィードバックには非常に興味があります。MSHTMLのバグだと思います。
c# - C#で異なるバージョンのMSHTMLを使用する
C#アプリケーションに特定のバージョンのMSHTML DLLを使用させる方法はありますか?
さまざまなバージョンのIEレンダリングエンジンを使用して、WebデザイナーがIE6、IE7などとの下位互換性について作成をテストできるようにするアプリケーションを作成しようとしています...
私がこれまでに理解している限り、SHDOCVWDLLはMSHTMLDLL(http://msdn.microsoft.com/en-us/library/aa741313 (VS.85).aspx)を「ホスト」または「実行」します。
バージョン6.0.2900.2877SHDOCVW.DLLをVisualC#2008 ExpressEditionのツールボックスにドラッグすることでアプリケーションフォームにMicrosoftWebブラウザ(COMコンポーネントバージョン1.1)を作成し、で標準のWebBrowser.NETコンポーネントを作成することができました。 COMコンポーネントがMSHTMLのv6(v6 SHDOCVW DLLと同じフォルダーにあります)を使用することを期待しています...ただし、両方のコンポーネントが同じ(おそらくシステム?)バージョンのMSHTMLを使用しているようです。
私はIE6を搭載したXPSP2とIE7を搭載したXPSP3でアプリを実行しました。
IE6を使用するSP2では、両方のブラウザーコンポーネント$_SERVER['HTTP_USER_AGENT']
がMSIE 6.0として報告され、IE7を使用するSP3では、両方のブラウザーコンポーネントがMSIE7.0として報告$_SERVER['HTTP_USER_AGENT']
されます。
MSHTML DLLの特定のバージョンの使用を強制することが可能かどうか誰かが知っていますか?もしそうなら、どのように?
visual-c++ - MSHTML で現在のユーザー選択 (IHTMLTxtRangePtr) を取得する
HTML ドキュメント内の現在のユーザー選択または現在のカーソル位置を取得するにはどうすればよいですか? MFC で MSHTML インターフェイスを使用しています。