IEのメニューバーとツールバーを消すには

解決


かばお  2004-07-23 19:58:01  No: 10054

初めまして質問です。
IEでAというサイトからBというサイトにリンクした時に
BというサイトでIEのメニューバーとツールバーを消去したいのですが
JavaScriptにもそのwindow自身のバーを消す機能がなさそうなので
ActiveXでWindowsAPIを使ってツールバーなどにメッセージを送ることにしました。以下IEのウィンドウ構成です。

−"タイトル名 - Microsoft Internet Explorer" IEFrame  ①親
  −"" WorkerW                      ②ここから配下を消去したい
      −"" ReBarWindow32            ③
        −"リンク" ToolBarWindow32  ④リンクのバーぽい
        −"" ComboBoxEX32           ⑤アドレスぽい
          −"" ToolBarWindow32
          −"" ComboBox
            −"" Edit
        −"" ToolBarWindow32        ⑥標準のボタンぽい
        −"" WorkerW                ⑦旗のアイコンぽい
        −"" ToolBarWindow32        ⑧メニューバーぽい
  ・・・あとはステータスバーとブラウザみたい

②か③にShowWindowまたはSetWindowPosでSW_HIDE、SWP_HIDEWINDOWなどを送ると一応ボタンなどは消えるのですが、バーがどうしても残ってしまいます。バーはどうやったら消えるのでしょうか?
また、他の方法がある場合も教えていただけたら幸いです。


にしの  2004-07-23 20:09:52  No: 10055

ん?単純にHtmlの話ですか?
Openの引数で出来ますよ。

<html>
<body>
TEST<BR>
<a href="javascript:window.open('a.html', '_blank', 'width=200,height=200,menubar=no,toolbar=no');">開く</a>
</body>
</html>

こんな風に、menubar=no,toolbar=noとすれば。

これだとDelphiと関係ないですよね・・・^^;
それとも、WebBrowserを利用してでしょうか??


かばお  2004-07-23 20:13:31  No: 10056

すみません、説明が足りませんでした。
window.openではなくあくまでself.windowです。
そのウィンドウ自身のバーを消したいのです。


にしの  2004-07-23 21:24:43  No: 10057

難しいですね。
Rebarを消せば、その部分の表示はなくなりますが、ブラウザのHTML部分が大きくなるわけでなく、灰色の下地が見えるだけです。
それでもいいのでしょうか。
IEコンポーネントを利用した、専用のブラウザを作った方がよろしいかと。


かばお  2004-07-23 21:43:26  No: 10058

その灰色の下地を消したいんですが、やり方がわかりません(TT)
専用ブラウザはクライアントのHTMLファイルの関連付けをIE以外には変えれないのが前提なので・・・


にしの  2004-07-24 01:07:28  No: 10059

Internet Explorer_Serverというウィンドウの大きさをリサイズすればできそうですね。
ただ、IE自身がこのウィンドウのリサイズを監視している可能性があります。
その場合、リサイズ・元に戻る、の繰り返しでちらつくかもしれません。


かばお  2004-07-24 02:34:12  No: 10060

SetWindowPosでInternet Explorer_Serverのウィンドウサイズを
変更するとIEがフリーズしてしまいました(TT)
①のウィンドウサイズは変更できるので、
おそらく①のサイズ変更されていないのにInternet Explorer_Serverのサイズ変更したためでしょうか・・・
灰色の下地部分のウィンドウサイズを変更できれば良いのかなあ・・・


HPW  2004-07-24 06:14:35  No: 10061

オジャマ : 「ツールバーさんとメニューバーさんは仲良しですね〜」
ピーマコ : 「ン?どぅゆうこと?」
オジャマ : 「ツールバーさんが消えるとメニューバーさんも一緒に消えちゃうんですよ」
ピーマコ : 「ふ〜ん、そうなのかぁ、メニューバーさんだけ残すこと出来ないんだ」
オジャマ : 「そうなんですよ。メニューバーさんて寂しがりやさんなんですかねぇ」
なかざわ : 「おまえら、イチイチ"さん"を付けんのやめんかい」
ピーマコ : 「あれ〜?もしかして…"バーさん"が気になるとか?^^」
オジャマ : 「あっスミマセン^^; 別にイヤミではないんですけど^^;」
なかざわ : 「ま、それは分かっとるンやけど、なんやチクチクささるんよ」
ピーマコ : 「分かりました、ご希望にそいたいと思います。そのかわり…今日のお昼キタイしてますよぉ^^♪」
なかざわ : 「ン〜ん…、なんやハメラレとる気もするんやけどな〜」

procedure TForm1.Button1Click(Sender: TObject);
var
  ShellWnd: IShellWindows;
  IE      : IWebBrowser2;
  Dispatch: IDispatch;
  cnt     : Integer;
begin
  ShellWnd := CoShellWindows.Create;
  for cnt := 0 to ShellWnd.Count do begin
    Dispatch := ShellWnd.Item(cnt);
    if Dispatch <> nil then begin
      Dispatch.QueryInterface(IWebBrowser2, IE);
      if IE <> nil then begin
        // IEのURLがこの掲示板なら、ツールバーを消す
        if IE.LocationURL = 'http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi' then begin
          IE.Toolbar := Integer(False);
          IE.Menubar := True; //False;
        end;
      end;
    end;
  end;
end;


かばお  2004-07-24 11:27:50  No: 10062

HPWさんの方法でうまくいきました。
なるほどShellWindowsオブジェクトを使うのですね。
こんな方法があるとは・・・

>ツールバーさんが消えるとメニューバーさんも一緒に消えちゃうんですよ
なるほど、以前、WSHでCreateObject("InternetExplorer.application")で
ツールバーを消したときに不思議に思っていました。

すごく勉強になりました。
にしのさん、HPWさん、ありがとうございます。


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

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






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