初めまして質問です。
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などを送ると一応ボタンなどは消えるのですが、バーがどうしても残ってしまいます。バーはどうやったら消えるのでしょうか?
また、他の方法がある場合も教えていただけたら幸いです。
ん?単純に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を利用してでしょうか??
すみません、説明が足りませんでした。
window.openではなくあくまでself.windowです。
そのウィンドウ自身のバーを消したいのです。
難しいですね。
Rebarを消せば、その部分の表示はなくなりますが、ブラウザのHTML部分が大きくなるわけでなく、灰色の下地が見えるだけです。
それでもいいのでしょうか。
IEコンポーネントを利用した、専用のブラウザを作った方がよろしいかと。
その灰色の下地を消したいんですが、やり方がわかりません(TT)
専用ブラウザはクライアントのHTMLファイルの関連付けをIE以外には変えれないのが前提なので・・・
Internet Explorer_Serverというウィンドウの大きさをリサイズすればできそうですね。
ただ、IE自身がこのウィンドウのリサイズを監視している可能性があります。
その場合、リサイズ・元に戻る、の繰り返しでちらつくかもしれません。
SetWindowPosでInternet Explorer_Serverのウィンドウサイズを
変更するとIEがフリーズしてしまいました(TT)
①のウィンドウサイズは変更できるので、
おそらく①のサイズ変更されていないのにInternet Explorer_Serverのサイズ変更したためでしょうか・・・
灰色の下地部分のウィンドウサイズを変更できれば良いのかなあ・・・
オジャマ : 「ツールバーさんとメニューバーさんは仲良しですね〜」
ピーマコ : 「ン?どぅゆうこと?」
オジャマ : 「ツールバーさんが消えるとメニューバーさんも一緒に消えちゃうんですよ」
ピーマコ : 「ふ〜ん、そうなのかぁ、メニューバーさんだけ残すこと出来ないんだ」
オジャマ : 「そうなんですよ。メニューバーさんて寂しがりやさんなんですかねぇ」
なかざわ : 「おまえら、イチイチ"さん"を付けんのやめんかい」
ピーマコ : 「あれ〜?もしかして…"バーさん"が気になるとか?^^」
オジャマ : 「あっスミマセン^^; 別にイヤミではないんですけど^^;」
なかざわ : 「ま、それは分かっとるンやけど、なんやチクチクささるんよ」
ピーマコ : 「分かりました、ご希望にそいたいと思います。そのかわり…今日のお昼キタイしてますよぉ^^♪」
なかざわ : 「ン〜ん…、なんやハメラレとる気もするんやけどな〜」
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;
HPWさんの方法でうまくいきました。
なるほどShellWindowsオブジェクトを使うのですね。
こんな方法があるとは・・・
>ツールバーさんが消えるとメニューバーさんも一緒に消えちゃうんですよ
なるほど、以前、WSHでCreateObject("InternetExplorer.application")で
ツールバーを消したときに不思議に思っていました。
すごく勉強になりました。
にしのさん、HPWさん、ありがとうございます。
ツイート | ![]() |