問題タブ [ihtmldocument2]

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.

0 投票する
1 に答える
1986 参照

c++ - C ++でx XPath式を使用してHTMLをクエリする方法は?

Web ブラウザーがあり、DocumentComplete を使用して Web ブラウザーから現在のドキュメントを (IHTMLDocument2 として) 読み取ります。

その html ドキュメントで xpath クエリを実行する最も簡単な方法は何ですか? 軽くて使いやすいものを探しています。

Visual Studio C++ 2010 を使用しています。

0 投票する
2 に答える
1965 参照

c++ - イベント DISPID_TITLECHANGE から IWebBrowser2 ポインターを取得する

私はブラウザ ヘルパー オブジェクトに取り組んでおり、イベントを発生させる IWebBrowser2 にアクセスしようとしています。NavigateComplete2 やその他のイベントを使用すると、Invoke のパラメーターへのポインターを取得できるため、簡単に実行できます。

しかし、私はmsdn でこれを読んでいて、TitleChange イベントの唯一のパラメーターはタイトルであると言っているので、イベント TitleChange から webbrowser インターフェイスへのポインターを取得するにはどうすればよいですか?

他のイベントでそれを取得する方法は次のとおりです。

Visual Studio 2010 を使用しています。

0 投票する
1 に答える
706 参照

delphi - IHTMLInputTextElement の値を設定するときにアクセス違反が発生するのはなぜですか?

次のエラーが表示されます。

モジュール「project1.exe」のアドレス 0050AA07 でアクセス違反が発生しました。アドレス 00000000 の読み取り。

TWebBrowser でフォームに自動入力しようとしています。フォームの「ログイン」と呼ばれるフィールドです。

どういう意味ですか?どうすれば解決できますか?

0 投票する
1 に答える
1096 参照

c++ - IHTMLEventObj::put_keyCode が IE9 RC で失敗する

IHTMLEventObj::put_keyCode 関数を使用する 3 年以上前に作成された IE BHO があります。この関数は、IE6、IE7、および IE8 で文書化されているとおりに機能します。ただし、IE9 RC でテストすると、ドキュメントどおりに動作しなくなります。関数は同じ方法で呼び出され、結果は S_OK になりますが、キーは入力フィールドに表示されません。私のInvoke()関数でも、DISPID_HTMLELEMENTEVENTS2_ONKEYPRESSで呼び出しが行われています。

同様の問題を抱えている人を見つけました: http://social.msdn.microsoft.com/Forums/is/ieextensiondevelopment/thread/abcbaffd-ed8a-45b8-840b-8ad8d7d10081、しかし、何らかの理由で問題を表示できません. Google キャッシュを使用して表示できました: http://webcache.googleusercontent.com/search?q=cache:3OkEceoi6jwJ:social.msdn.microsoft.com/Forums/is/ieextensiondevelopment/thread/abcbaffd-ed8a-45b8- 840b-8ad8d7d10081+put_keyCode+IE9&cd=1&hl=pt-BR&ct=clnk&gl=br&source=www.google.com.br .

これは早急に対処する必要がある重大な問題です。

前もって感謝します。

更新: ここにいくつかのコードがありますが、このコードが IE6、IE7、および IE8 で完全に機能することを強調したいと思います。IE9 では S_OK を返しますが、キーは変更されません。

更新 2

私たちは MSDN ケースを提出しました。彼らは問題を発見しました。最後に彼らから聞いたのは、それを修正しようとしているということです。

0 投票する
2 に答える
1598 参照

delphi - GetFormFieldNames が常に機能するとは限らない

どのフォームと要素が属しているかを調べようとしています。私がこのウェブサイトから理解しているコード:

http://www.cryer.co.uk/brian/delphi/twebbrowser/read_write_form_elements.htm

このコードを含む

ほとんどのサイトで問題なく動作しているようです。ただし、次のような Web サイトがいくつかあります。

http://service.mail.com/registration.html#.1258-bluestripe-product1-undef

そのコードを見て、アクティブな ID と比較すると、フォームを見つけることができます。ただし、その Web サイトでは機能しません。何らかの理由で、このコードがhtmldocument2用であることはhtmldocument3と関係があると思います。しかし、よくわかりません。

だから私の質問は、このWebサイトからすべての要素名を含むtstringlistを抽出するにはどうすればよいですか? あなたが助けてくれることを願っています!

編集:いくつかのコードを追加

0 投票する
1 に答える
618 参照

windows - MHTML の IHTMLDocument: URL からロードした後の文字セットが正しくない

Web ページは、将来の DOM の微調整のために、インターネットからウィンドウのない IHTMLDocument に読み込まれます。文字セットが間違っていることを除いて、すべて問題ありません。META セクションの Web ページで宣伝されている文字セットに関係なく、IHTMLDocument の文字セット プロパティは、ドキュメントが読み込まれた直後に常に "Windows-1251" になります。

後で変更したドキュメントを書き出すと、エンコーディングの不一致が原因でファイルを読み取ることができません。テキストは元のエンコーディングですが、新しいドキュメントの META charset タグは「Windows-1251」です。

ドキュメントをロードするために使用するコードは次のとおりです (エラー処理とクリーンアップは省略されています)。

エンコーディングが間違っているのはなぜですか?どうすれば正しくなりますか? ありがとう。

0 投票する
1 に答える
849 参照

c# - IHTMLDocument2 が IHTMLDocument2.body.document と等しくないのはなぜですか?

次の doc2 が doc22 と異なるのはなぜですか?

0 投票する
1 に答える
9741 参照

c# - IHTMLDocument2はどこでも機能するわけではありません

WinFormアプリケーションでは、WebBrowserコントロールとがありPictureBoxます。DocumentComplete以下のコードで画像を(後のwebbrowserコントロールから)pictureBox1にロードしています

画像は私のPCのpicturebox1に表示されますが、私の友人の画像には表示されません。別のWindowsXPでは、VS2008をインストールした後はうまく機能しました。したがって、IHTMLDocument2が正しく機能するには、WindowsUpdateが必要だと思います。

それはどのアップデートですか?または、インターネットから画像を再ダウンロードする必要がない、このコードの他の代替手段はありますか?

0 投票する
2 に答える
993 参照

c# - htmldocumentにonmouseoverイベントを割り当てることが機能していません

Internet Explorerの実行中のインスタンスからカーソルの下にある現在の要素を取得したいac# windowsアプリケーションを作成しているプロジェクトに取り組んでいます。

IEの実行中のインスタンスのIHtmlDocument2のハンドルを取得でき、次のようにonmouseoverイベントを割り当てたいと思います。

また、IEに他のイベント(有名ですが解決された質問)を食べさせたくなかったので、次のようなDHTMLEventHandlerクラスを作成する必要があります。

そして、私のBrowserEventHandlerメソッドは次のようになります。

まだ空です(ただし、要素の下カーソルを取得したいのですがinnerHtml )、それでもこのメソッドは空であり、次のようになります。

FindText.exeでタイプ「System.InvalidCastException」の最初のチャンスの例外が発生しました

マウスを動かすたびに。

質問:

  1. なぜこの例外が発生するのですか?
  2. 変数でe.srcElement.innerhtmlを取得し、C#アプリケーションで使用することは可能ですか?

不明確で曖昧なことがあれば教えてください。ヘルプやアイデアを事前に感謝します。私はコメントと助けに大いに感謝します。

アップデート:

私の2番目の質問に答えるために、を取得することは可能のようですがe.srcElement.innerHTML、メソッドが呼び出されないIHTMLEventObj e理由は本当にわかりません。BrowserEventHandlerアイデアやヒントはありますか?

update2:

わかりました、問題が見つかりました。最初に、プロジェクトのいくつかの設定を変更して、例外が最初に発生する行を取得しました(これは最初のチャンスの例外であるため)。

Visual Studioの場合:メニュー>>デバッグ>>例外>> CLR例外>>システムを選択し、SystemInvalidCastExceptionのスローオプションを確認します。

問題はこのDHTMLEventHandlerクラスの行にあることがわかりました。

最近の検索によると、sにInvalid Cast Exception関連していると思うスローです。Thread

ApartmentStateをに設定する必要があると思いApartmentState.STAます。しかし、私は方法がわかりません。何か案は?

0 投票する
1 に答える
628 参照

save - IPersistStreamInit::Save() は IE9 で動作しませんか?

このコードは IE8 以前で機能しました。IE9 では、IPersistStreamInit::Save() が E_NOTIMPL を返すようです。どんな助けでも大歓迎です!