IEのサイズ指定、ツールバーの非表示、URLの指定などをして1つのIEを開くプログラムをCOMで作成しました。
環境はOSがXP、C++.NET2003、IE7.0で、以下のプログラムで正常に動作しました。
同じプログラムをVistaで実行すると、2つのIEが開かれて正常に動作しません。1つ目はサイズ指定・ツールバーの非表示などがされている空白のIE、2つ目はURLだけ指定されて開かれているIEが出てきます。ちなみにVistaのIEも7.0です。
OSが違うからこのようになるのでしょうか?どなたかわかる人がいたら解決策を教えてください。
HRESULT hr = ::CoInitialize(NULL);
if (FAILED(hr)) {
return;
}
HRESULT hr1 = pIE1.CreateInstance(__uuidof(SHDocVw::InternetExplorer));
if(FAILED(hr1)){
TCHAR str[256];
wsprintf(str, _T("NewIE#CreateInstance error:%x\n"), hr);
::OutputDebugString(str);
return;
}
pIE1->Left = 523L;
pIE1->Top = 120L;
pIE1->Width = 741L;
pIE1->Height = 655L;
pIE1->PutVisible(VARIANT_TRUE);
pIE1->ToolBar = false;
pIE1->StatusBar = false;
pIE1->AddressBar = false;
pIE1->Navigate(_T("http://**********"));
> OSが違うからこのようになるのでしょうか?
vista IE7 の”保護モード”(xp IE7 には無い)てのが関わっている。
保護モードを切れば症状は起きなくなるだろうが、それは全く勧めない。
> どなたかわかる人がいたら解決策を教えてください。
↓ページでほぼそのもののコードを載せてくれている。
http://shiyu-co.jp/blog/2009/02/webapi.html
コードを見れば、回りくどい手段を採っているように思うかもしれないけど、
この件に関してはベストの解は無いと思われるので仕方がないと思う。
ツイート | ![]() |