• 締切済み

BHO のサンプルを拡張して、トラブル

いつも、お世話になっています。 http://msdn.microsoft.com/ja-jp/library/bb250489(v=vs.85).aspx を参考にして、BHOのプログラムを始めてみました。 機能を追加しようとして、他のサイトを参考にして BOOL CHelloWorldBHO::PutElementData(IHTMLDocument3 *pDocument3) { BSTR bstrId, bstrHref, bstrText; IHTMLElement *pElement; IHTMLAnchorElement *pAnchorElement; bstrId = SysAllocString(L"sample"); pDocument3->getElementById(bstrId, &pElement); if (pElement == NULL) { SysFreeString(bstrId); return FALSE; } bstrText = SysAllocString(L"トップページへ戻ります"); pElement->put_innerText(bstrText); pElement->QueryInterface(IID_PPV_ARGS(&pAnchorElement)); bstrHref = SysAllocString(L"http://eternalwindows.jp/"); pAnchorElement->put_href(bstrHref); MessageBox(NULL, TEXT("エレメントのデータを変更しました。"), TEXT("OK"), MB_OK); SysFreeString(bstrText); SysFreeString(bstrHref); SysFreeString(bstrId); pAnchorElement->Release(); pElement->Release(); return TRUE; } を追加してみました。他にも3つの関数を追加しました。 コンパイルすると、 'IID_PPV_ARGS': 識別子が見つかりませんでした とのメッセージが出ます。 どのように対処すればよいのでしょうか? OSはWin7(64ビット) + VS2005 で作業しています。 よろしくご指導ください。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

なんかヘッダを #include し忘れてるんじゃない?

isiyaki33
質問者

お礼

ありがとうございます。 pElement->QueryInterface(IID_IHTMLAnchorElement, (void**)&pAnchorElement); と変えたら動きました。 IID_PPV_ARGSマクロは、割り出したIIDと変数のアドレスをカンマで区切って返すため、 CoCreateInstanceのようなIIDと変数のアドレスが連続した引数の関数には、問題なく指定することができます。 古いSDKのヘッダファールには、IID_PPV_ARGSマクロが定義されていないことに注意してください。 とありましたので、ついでにSDKも新しくしました。 でも、前の形では動きませんでした。

関連するQ&A