• ベストアンサー

"Internet Explorer_Server"クラスのウィンドウからURLを取得する方法

こんにちは、boundaryといいます。 "Internet Explorer_Server"というウィンドウクラスの からURLを取得する方法をご存知の方教えていただけないで しょうか? Internet ExplorerからURLを取得する事はできるのですが・・・ どうかよろしくおねがいします。 windows2000sp3 vc6sp5使ってます。

noname#4877
noname#4877

質問者が選んだベストアンサー

  • ベストアンサー
  • darksky
  • ベストアンサー率66% (38/57)
回答No.1

Internet ExplorerからURLを取得するにはInternetExplorerが公開しているCOMインターフェースを使用します。 IWebBrowser2インターフェースから取得するのが一般的で、get_LocationURLメソッドから取得できます。 本題の"Internet Explorer_Server"は、Internet Explorerが使用しているブラウザーコントロールのウィンドウのクラス名です。 このウィンドウからCOMインターフェースを取得することが必要になります。 手順としては、以下のようになります。 1.何らかの手段で"Internet Explorer_Server"のウィンドウハンドル  を取得する。 2.取得したウィンドウハンドルからIHTMLDocument2インターフェース  のポインタを取得する。  IHTMLDocument2->get_URL メソッドからURLを取得することも可能  です。  ※IHTMLDocument2からIWebBrowser2インターフェースポインタを   取得することも可能です。 問題は2のIHTMLDocument2インターフェースを取得することですが、 以下の処理で取得できます。(エラー処理は省略してあります) #include <exdisp.h> #include <mshtml.h> #include <oleacc.h> IHTMLDocument2* pHTMLDocument2; HINSTANCE hInstance; hInstance = LoadLibrary(_T("OLEACC.DLL")); UINT nMsg; nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT")); SendMessageTimeout(hwnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes); LPFNOBJECTFROMLRESULT pfObjectFromLresult; pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hInstance, _T("ObjectFromLresult")); HRESULT hresult; hresult = (*pfObjectFromLresult)(lRes, IID_IHTMLDocument2, 0, (void**)&pHTMLDocument2); BSTR bstrLocationURL; pHTMLDocument2->get_URL(&bstrLocationURL); pHTMLDocument2->Release(); SysFreeString(bstrLocationURL); ■ソースは変な個所で改行されているかも・・・

noname#4877
質問者

お礼

darkskyさん、回答ありがとうございます。 返事遅くなって申し訳ありません。 教えていただいたコードを元に試行錯誤してみようと思います。 この様な質問をした理由は、MSのとあるネットワーククライアントプログラム(だいたい察しはつくと思いますが) をシステムフックで制御したいと思い質問しました。 ですがその後、OleView.exeをながめていると該当プログラムのCOMオブトェクトの登録があるのを知り、現在COMの勉強中です。(^◇^) ありがとうございました。

関連するQ&A

  • Internet Explorer にURLを引き渡す方法教えてください。

    VB6のshell関数でInternet Explorerを起動し、Internet Explorerが起動するときに表示するページのURLをInternet Explorerに送る方法ご存知の方教えてください。 Internet Explorerの起動は出来たのですが、URLを送る方法が分かりません。 WebBrowserを使ってVB6のフォーム上では表示しようとするホームページのURLの記述が出来ますが、VB6のフォーム上で表示したくない事情があります。 よろしくお願いいたします。

  • Internet Explorer 6 SP1は、 Windows s

    Internet Explorer 6 SP1は、 Windows server 2000に対応しているのでしょうか。 アプリケーションの関係で、Windows server 2000を使用しなければならないのですが、 Internet Explorer 6 SP1 も使用したいと思っています。

  • Windows Internet Explorerに戻したい

    Windows Internet Explorerに戻したい Windows Internet Explorer8を入れたまま他のソフトに変更してインターネットを使用しました。 しかし使い勝手が自分に合わないので、他のソフトを削除してWindows Internet Explorerに戻したのですが、メールなどのURLリンク、インターネットショートカットキイより開こうとすると、「URL:アプリケーションが見つかりません」と表示され接続できません。 元に戻す方法がわからないので、戻す手順をご教授ください。

  • URLの取得

    myframeという名前のiframe内に表示されているページのURLを取得するためのスクリプトです。 <SCRIPT TYPE="text/javascript"> <!-- function geturl(){ url = document.myframe.location; } --> </SCRIPT> これを実行した際に、www等のサブドメインが無いURLの場合はURLを取得出来るのですが、サブドメインがあるURLの場合URLが取得出来ませんでした。 原因が分からず困っています。 解決方法を教えていただけますでしょうか。 また、WEBサーバの設定によってはURLが取得出来ないという事はあるのでしょうか? よろしくお願いいたします。

  • Internet Explorer6に戻す方法

    Windows XP SP3です。 Internet Explorer7→Internet Explorer6に戻したいのですが、「コントロールパネル」→「プログラムの追加と削除」のInternet Explorer7の項目に「変更/削除」の表示が無くなっていました。 ほかにInternet Explorer6に戻す方法は無いでしょうか? 最初はInternet Explorer6が入っていました。

  • 複数URL取得可能なレンタルサーバー

    レンタルサーバーの宣伝、説明の中に、メールアドレスは無制限に取得可能というのはあるのですが、URLの取得については、説明がありません。1レンタルサーバーにつき、一つのURLしか取得、登録は出来ないのでしょうか?独自ドメインを取得すれば、サブドメインは自由に無料で取得出来るのでしょうか?専用サーバーではなく、50MB~100MB程度のスペースを借りるだけでいいのですが、但し、メールアドレスが10個ほど、URLが10個ほど利用出来ればいいのです。 できれば、cgiが自由で、ML機能があって、ウイルスチェックがあって、サクサク動いて、サーバーダウンの心配が少なく、サポートも素早く、親切で、予算は月々3000円前後というのがあればいいのですが、 ロリポップとかバルフェネットとか安くて安心なレンタルサーバーもあるのですが、1URLと1メールアドレスなので、複数のHPを運営している私にとっては、一つずつ契約するよりも、一カ所で複数のURLが取得、登録出来る方が、何かと便利かなと思っております。 それと、出来れば、独自ドメインも欲しいし、同じ予算の範囲内であれば、機能的にも充実しているほうがよいと思ってます。 どなたか、教えて頂ければ幸いです。 追伸、例えば、J-NAVIなどは、そういう機能はあるのでしょうか? よろしくお願いします。

  • 別のサーバURLの子ウィンドウから親ウィンドウを制御したい。

    親ウィンドウから、別のサーバURLの子ウィンドウを開き、開いた子ウィンドウから親ウィンドウの制御を行ないたいと考えています。どのようにすればできるでしょうか? 同一サーバ内であれば、子ウィンドウのスクリプトで、 opener.name.value="Nakai"; というように記述すればよいですが、別のサーバ上のスクリプトから実行すると。 「書き込みできません」 と表示されます。(ブラウザIE6,サーバTomcat3) openerが使えないようであれば、ウィンドウ名を使用する方法などが無いか考えましたが、windowの取得方法ももわかりません。 よろしくお願いします。

  • Internet Explorer再インストール方法を教えてください。

    Internet Explorer6.0の再インストールをする事にしました。 Windows XP および Windows XP SP1 : レジストリを編集してから Internet Explorer 6 をインストールする http://support.microsoft.com/kb/318378​ に従い、レジストリエディタでキーをたどり「IsInstalled」の値を0にしたのですが、Internet Explorerのセットアップファイルを開こうとすると「このコンピュータには、最新バージョンのInternet Explorerが既にインストールされています。セットアップは続行できません。」と出て、インストールする事ができません。 もしかしたらSP2には別のやり方があるのでしょうか?

  • 実行ファイルのURLを自動取得

    PHPでの質問です。 実行している自ファイルのURLを自動で取得する方法は無いのでしょうか? 今現在は解らないのでSERVER関数で以下の様にして自動生成しています。 実行している自ファイルのURLを簡単取得する関数とか無いのでしょうか? 実行ファイルのURL = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] 上記の様な感じで自動生成してたのですが、ひょんな事からバグが出て しまったので別の方法で取得出来ればと思っています。

    • ベストアンサー
    • PHP
  • 【Internet Explorer6.0】【Excel2003】新しいウインドウが立ち上がるのを防ぐ方法を教えてください。

    Internet Explorerを利用してホームページを見ていて、excelのファイルを開くとき、必ず新しいウインドウというか、excelが別に立ち上がります。wordの場合は同じウインドウ内で見られます。 以前、同じブラウザ内で見られるような設定になっていて、そのままだと印刷ができなくて不便だったので、どこかのヘルプを見てどこかの設定を変更して今のようにしたのですが、だいぶ前のことなので、どのようにしたのか忘れてしまいました。 Internet Explorer、excel2003のどちらの設定を変更したのかも分からず、アプリケーションのヘルプもこちらの既出の質問も色々な言葉で検索してはみたのですが、キーワードがよくなかったようで(excel、Internet Explorer、新しいウインドウ など)求める回答にいきあたりません。 もし方法をご存じの方がいらっしゃいましたら教えてください。 また、以前同じブラウザ内で見られていたとき、word文書だと印刷や保存などのボタンがあるのにexcelファイルではボタンが一切表示されなかったので、もし表示する方法があれば、併せて教えていただければ助かります。もちろん、どちらか一方のみでも結構です。 現在使用しているのは、Internet Explorer6.0、excel2003です。 どうぞよろしくお願いいたします。