開発環境は.NET2003で、MFCを使用、IEはMicrosoft Internet Explorer6.0です。
ダイアログからShellExecuteやCreateProcessを使ってIEを起動させることはできましたが、位置ともにサイズ指定のやり方がわからず、検索して
探してみたのですが解決しませんでした。
ShellExecuteのパラメータでSW_MINIMIZEなどありましたが、IEでは使えないみたいですし…
どなたかわかる人がいましたらよろしくお願いします。
COMを使って操作するとか。
SHDocVw::IWebBrowser::Top
SHDocVw::IWebBrowser::Left
SHDocVw::IWebBrowser::Width
SHDocVw::IWebBrowser::Height
でプロパティあたり。
参考
http://www.ujasiri.com/prglib/vc/ie/vc_ie.html
Blueさん、お返事ありがとうございます。
COMを初めて使うのですが、プロパティの指定の仕方がわかりません。
IE起動、終了、ツールバーの非表示とかは参考サイトに書いてあって理解したのですが…
もし知っていたら教えていただけないでしょうか?
CoInitializeは呼ばれていると仮定して、レイトバインドならこんな感じ。
CComPtr<IDispatch> wb;
if(SUCCEEDED(wb.CoCreateInstance(CLSID_InternetExplorer))) {
wb.PutPropertyByName(L"Left", &CComVariant(0));
wb.PutPropertyByName(L"Top", &CComVariant(0));
wb.PutPropertyByName(L"Width", &CComVariant(500));
wb.PutPropertyByName(L"Height", &CComVariant(500));
wb.PutPropertyByName(L"Visible", &CComVariant(true));
}
2003環境がないので微妙ですが、参考サイトのとおり
SHDocVw::IWebBrowser2Ptr
の変数を使っているのであればメンバ関数にありませんか?
pIE->PutLeft(COleVariant(0L)); // pIE->PutLeft(0L);
とか
pIE->Left = COleVarinat(0L); // pIE->Left = 0L; かも
subaruさん、Blueさん 返信どうもありがとうございます。無事解決いたしました。
subaruさんのCComPtr<IDispatch>でIEを制御できたけどURLの開き方がわからなかったので、元から使ってたIWebBrowser2でやりました。
ちなみにpIE->Left = 0L;で大丈夫でした。どうもありがとうございました。
>subaruさんのCComPtr<IDispatch>でIEを制御できたけどURLの開き方がわからなかったので、元から使ってたIWebBrowser2でやりました。
蛇足だけどCComPtr<IDispatch>でのメソッド呼び出しはこんな感じ。
:
wb.Invoke1(L"Navigate2", &CComVariant(L"http:://〜"));
この場合、Navigate2は最初の引数以外は省略可能なのでInvoke1を使用していますが
InvokeNを使う場合はパラメーターに渡す配列が引数と逆順になるので注意が必要です。
また上記のやり方では戻り値にHRESULT値を取りますが
SHDocVw::IWebBrowser2を使う方法はプロパティやメソッドにより
_com_error例外が投げられて例外処理方法が異なりますのでこの点もご注意を。
#この辺のサポートがいらないのであればexdisp.hに定義されている
#インターフェースを使ってもいいです。
ツイート | ![]() |