IEの位置・サイズ指定はできますか?

解決


kしろー  2008-11-06 20:57:25  No: 69199

開発環境は.NET2003で、MFCを使用、IEはMicrosoft Internet Explorer6.0です。

ダイアログからShellExecuteやCreateProcessを使ってIEを起動させることはできましたが、位置ともにサイズ指定のやり方がわからず、検索して
探してみたのですが解決しませんでした。

ShellExecuteのパラメータでSW_MINIMIZEなどありましたが、IEでは使えないみたいですし…

どなたかわかる人がいましたらよろしくお願いします。


Blue  2008-11-07 22:42:01  No: 69200

COMを使って操作するとか。

SHDocVw::IWebBrowser::Top
SHDocVw::IWebBrowser::Left
SHDocVw::IWebBrowser::Width
SHDocVw::IWebBrowser::Height

でプロパティあたり。

参考
http://www.ujasiri.com/prglib/vc/ie/vc_ie.html


kしろー  2008-11-13 23:49:22  No: 69201

Blueさん、お返事ありがとうございます。

COMを初めて使うのですが、プロパティの指定の仕方がわかりません。
IE起動、終了、ツールバーの非表示とかは参考サイトに書いてあって理解したのですが…

もし知っていたら教えていただけないでしょうか?


subaru  2008-11-14 19:24:16  No: 69202

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));
}


Blue  2008-11-16 02:18:22  No: 69203

2003環境がないので微妙ですが、参考サイトのとおり

SHDocVw::IWebBrowser2Ptr

の変数を使っているのであればメンバ関数にありませんか?

pIE->PutLeft(COleVariant(0L)); // pIE->PutLeft(0L); 

とか

pIE->Left = COleVarinat(0L); // pIE->Left = 0L; かも


kしろー  2008-11-19 01:34:35  No: 69204

subaruさん、Blueさん  返信どうもありがとうございます。無事解決いたしました。

subaruさんのCComPtr<IDispatch>でIEを制御できたけどURLの開き方がわからなかったので、元から使ってたIWebBrowser2でやりました。
ちなみにpIE->Left = 0L;で大丈夫でした。どうもありがとうございました。


subaru  2008-11-19 19:35:29  No: 69205

>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に定義されている
#インターフェースを使ってもいいです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加