mfc-ml

2006年08月

31

[mfc 52304] ウィンドウに貼り付けたWebBrowserコントロールを消す方法

アドバイスお願いします。

一度、ウィンドウに貼り付けたWebBrowserコントロールを
消す方法はあるでしょうか?

WebBrowserコントロールは

class CWebBrowser : public CWndを継承した
MyWebBrowserクラスのオブジェクト,myWebBrowser を作成し、

myWebBrowser.Create(NULL, L"", WS_CHILD|WS_VISIBLE, rc[0], g_pBase_Wnd , 1);
myWebBrowser.Navigate0(L"http://www.yahoo.co.jp/", 0, 0, 0, 0);

で ウィンドウに貼り付けています。
これを消したいわけです。

以上、よろしくお願いします。 
30

[mfc 52303] Re: [mfc 52302] Re: [mfc 52299] IE の コントロール から インターネットオプションを表示させる方法 : IEオプションを消すには?


> 次に、同ダイアログを消す方法は、ShellExecute に関連した方法であるでしょうか 

> ご存知でしたらお願いします。
> 開発環境 : VC++ 6 , WinXP , MFC です。
>
> --> これExecCmdTarget( ) の実施を Create( ) , Navigate の すぐ下に以前は
>      記述していたのを、キー押下をトリガーにして ExecCmdTarget( ) 実行によって 

> ※こちらの方法でも、IEオプションを消す方法ご存知ならお願いします !
>

自己レスです。
下記の方法でダイアログのハンドル取得後、それに向かってのmsg送信で
自動で消すことができました。

  HWND hWndIEOption ;
  hWndIEOption = FindWindow( _T("#32770") , NULL );  // _T("#32770") は 
Dialogボックスのクラス名だそう
  PostMessage(hWndIEOption,WM_KEYDOWN, VK_ESCAPE , 0 );
29

[mfc 52302] Re: [mfc 52299] IE の コントロール から インターネットオプションを表示させる方法 : IEオプションを消すには?



>> こなです。
>> ただインターネットオプションのダイアログボックスを表示するだけなら
>> 以下の方法が一番簡単な気がします。
>>  ShellExecute(NULL, "open", "control.exe", "inetcpl.cpl", NULL, 
>> SW_SHOWNORMAL);
>
> ありがとうございます。
> 上記方法試して表示されました。
> ShellExecute(NULL, _T("open"), _T("control.exe"), _T("inetcpl.cpl"), NULL, 
> SW_SHOWNORMAL);
> と変えました。

次に、同ダイアログを消す方法は、ShellExecute に関連した方法であるでしょうか
ご存知でしたらお願いします。
 開発環境 : VC++ 6 , WinXP , MFC です。

> あと、
> http://support.microsoft.com/default.aspx?scid=kb;ja;175513
> で提示されている、
>
> ExecCmdTarget(&CGID_IWebBrowser, CWBCmdGroup::HTMLID_OPTIONS);
> を試みましたが、成功していません。どこが問題があるのか

--> これExecCmdTarget( ) の実施を Create( ) , Navigate の すぐ下に以前は
      記述していたのを、キー押下をトリガーにして ExecCmdTarget( ) 実行によって 

      成功しました。時間をおかないとだめということでしょうか ?
      まずは、これでもいいとしました。

※こちらの方法でも、IEオプションを消す方法ご存知ならお願いします !

> myWebBrowser.Create() と Navigate()で IEコントロールをウィンドウに貼り付けてます。
> ExecCmdTarget(&CGID_IWebBrowser, HTMLID_OPTIONS); に変更しました。
>
> 開発環境 : 記載もれですが
> VC++ 6 , WinXP , MFC
> です。
29

[mfc 52301] Re: [mfc 52298] Re: IE の コントロール から インターネットオプションを表示させる方法

> 社本@ワックです。

> コントロールパネルの中の"インターネット オプション"のダブルクリックで、
> このダイアログが呼び出せることからも分かるかと思います。
> また、私が示したサンプルも、それを呼び出しているだけです。

川口です。ご教示頂いたサンプルで実施できました。
以下に記述します。
ところで、同ダイアログボックスを消す際にはどのようにすればよいでしょうか?
LaunchInternetControlPanelは表示させる命令で
反対の消す命令などがあるのでしょうか?
ご存知でしたらよろしくお願いします。

/*   IE オプション ダイアログ表示コード  */
typedef BOOL (WINAPI *LAUNCHCPL) (HWND);
HMODULE hInetcpl;
HWND hParent;
LAUNCHCPL cpl;

hInetcpl = LoadLibrary("inetcpl.cpl");

if (hInetcpl == NULL)
{
   // Error loading module -- fail as securely as possible
   return;
}

cpl = (LAUNCHCPL)GetProcAddress(hInetcpl, "LaunchInternetControlPanel");
if(cpl)
{
  cpl(hParent); // hParent を NULL に して実施
}
FreeLibrary(hInetcpl);
29

[mfc 52300] Re: [mfc 52298] Re: IE の コントロール から インターネットオプションを表示させる方法


> 社本@ワックです。
>
>> IEコントロールからインターネットのオプションを表示させることはできない
>> ということは、本家のIEはIEオプションのダイアログは
>> コントロールとは別物として作成、表示させているということなのでしょうか?
>
> はい。そうです。
> コントロールパネルの中の"インターネット オプション"のダブルクリックで、
> このダイアログが呼び出せることからも分かるかと思います。
> また、私が示したサンプルも、それを呼び出しているだけです。

ありがとうございます。コード見て試してみます。
後ほどお知らせします。
記事検索
Amazon.co.jp
  • ライブドアブログ