IHTMLDocument2 を HWND を取得する方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:249232
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
ここは、IHTMLDocument2 インターフェイス、HWND を取得する方法についてを説明します。Microsoft アクティブ アクセシビリティ (MSAA) がインストールされている場合は、WM_HTML_GETOBJECT メッセージを送信するのには、ドキュメントのウィンドウ (ウィンドウ クラスで「インターネット Explorer_Server」)、から 1 つ、IHTMLDocument2 完全にマーシャ リングされたポインターを取得するにはObjectFromLresultが、MSAA 関数に結果を渡します。
詳細
このセクションで説明されているコードをシステムにインストールされているアクティブなユーザー補助コンポーネントを持つ必要があります。クライアントの開発者は、SDK の開発およびアクティブなユーザー補助機能を更新します。アクティブなアクセシビリティの最新版を組み込むし、ユーザー補助機能の新しいバージョンを配布する場合は、Microsoft Windows 95、Windows 98、または Windows NT 4.0 Service Pack 4 または 5 で開発されたクライアントの実行時コンポーネント (RDK) を分散してください。RDK の Windows 2000 または Windows NT 4.0 Service Pack 6 で開発されたクライアントを含める必要はありません。新しいコンポーネントは、これらのオペレーティング システムに既に含まれています。

アクティブなユーザー補助の設定とアクティブなユーザー補助の SDK をダウンロードできる場所については、この資料の「関連情報」を参照してください。
#include <mshtml.h>#include <atlbase.h>#include <oleacc.h>BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam){	TCHAR	buf[100];	::GetClassName( hwnd, (LPTSTR)&buf, 100 );	if ( _tcscmp( buf, _T("Internet Explorer_Server") ) == 0 )	{		*(HWND*)lParam = hwnd;		return FALSE;	}	else		return TRUE;};//You can store the interface pointer in a member variable //for easier accessvoid CDlg::OnGetDocInterface(HWND hWnd) {	CoInitialize( NULL );	// Explicitly load MSAA so we know if it's installed	HINSTANCE hInst = ::LoadLibrary( _T("OLEACC.DLL") );	if ( hInst != NULL )	{		if ( hWnd != NULL )		{			HWND hWndChild=NULL;			// Get 1st document window			::EnumChildWindows( hWnd, EnumChildProc, (LPARAM)&hWndChild );			if ( hWndChild )			{				CComPtr<IHTMLDocument2> spDoc;				LRESULT lRes;							UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );				::SendMessageTimeout( hWndChild, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );				LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );				if ( pfObjectFromLresult != NULL )				{					HRESULT hr;					hr = (*pfObjectFromLresult)( lRes, IID_IHTMLDocument, 0, (void**)&spDoc );					if ( SUCCEEDED(hr) )					{						// Change background color to red						spDoc->put_bgColor( CComVariant("red") );					}				}			} // else document not ready		} // else Internet Explorer is not running		::FreeLibrary( hInst );	} // else Active Accessibility is not installed	CoUninitialize();}				
注:Internet Explorer 5.5 は、前にフレームの Shdocvw.dll の新しいインスタンスをホストすることによって実装されているし、各フレームは別のウィンドウに関連付けられていた。Internet Explorer 5.5 のネイティブ フレームによるパフォーマンスの向上、実装、Shdocvw.dll の同一のインスタンスでのすべてのフレームが表示されます。HWND の各フレームを Internet Explorer 5.5 とされるので、ここに記載されているサンプル コードは、メイン ・ ウィンドウは、ドキュメントへに取り組みます。でも、frames コレクションのメイン文書を使用して各フレームのドキュメントを取得できます。
関連情報
開発者向け SDK およびオペレーティング システム上にアクティブなアクセシビリティをランタイム コンポーネントをインストール、RDK は、次のマイクロソフト Web サイトからダウンロードできます。Microsoft Internet Explorer MSHTML コンポーネントによって提供される Microsoft アクティブなユーザー補助サポートの詳細については、次の Web サイトを参照してください。詳細については、以下の記事番号をクリックして、マイクロソフト サポート技術情報資料を参照してください。
176792Internet Explorer の実行中のインスタンスに接続する方法
active accessibility ドキュメントのオブジェクト モデルの hwnd

警告: この記事は自動翻訳されています

プロパティ

文書番号:249232 - 最終更新日: 12/05/2015 18:00:49 - リビジョン: 6.0

Microsoft Internet Explorer 4.01 Service Pack 1

  • kbnosurvey kbarchive kbhowto kbmshtml kbwebbrowser kbmt KB249232 KbMtja
フィードバック