VBからブラウザの起動を常に最大化でするには?

解決


ぢゃわ  2002-06-10 12:06:56  No: 75729  IP: [192.*.*.*]

現在、API関数のShellExexuteExを使用して、URL投入により
ブラウザを起動するプログラムを作成しています。

このブラウザの起動を、常に最大化の状態で起動されるように
したいのですが、なかなか思うようにいきません。

今、NShowにvbMaximizedFocusを与えることにより、新規に
開かれるブラウザついては最大化できるようになったのですが、
既に最大化されていないブラウザが1つ表示されていると、その
ブラウザで最大化せずにページが表示されてしまいます。

これも最大化して表示したいのですが、わかる方がいらっしゃい
ましたら、よろしくご教授お願いします。

編集 削除
MADIA  URL  2002-06-12 15:54:55  No: 75730  IP: [192.*.*.*]

確認していないので、間違っているかも知れませんが参考までにどうぞ。

現在起動中のブラウザハンドルを取得して、そいつに対してsendmessageで「最大化」命令を送れば出来るような感じがします。
もしかしたらもっとスマートなやり方があるかも知れません。

編集 削除
ぢゃわ  2002-06-13 10:09:17  No: 75731  IP: [192.*.*.*]

MADIAさん、ご回答ありがとうございます。

「現在起動中のブラウザハンドル」の取得ですが、いくつか
ブラウザが起動していた場合、自分のなげたURLがどの
ウィンドウで開かれるのかは特定できるんですか?

ShellExexuteExからウィンドウハンドルを取得するのは
かなり難しい(不可能?)ようなので、やはりFindWindow等
で自力で取得・・・って感じになっちゃうんでしょうか?

編集 削除
たかみちえ  URL  2002-06-13 17:38:31  No: 75732  IP: [192.*.*.*]

全てのトップレベルウィンドウのハンドルを得て、
そのなかでclass名が
"IEFrame"(InternetExplorerのメインウィンドウのクラス)
"Opera Main Window"(Operaのウィンドウクラス)
あとはNetscapeのウィンドウクラスを見つけて、
見つけたらそのウィンドウにSendMessage…。がいいでしょうね。
ほかに対応したいブラウザがあるのなら、
そのブラウザのウィンドウクラス名のウィンドウにも、
SendMessageします。

  あと、Operaの場合は、
最大化したあとに、SendKeysかKeybd_eventで、
Ctrl+Shift+5を送ると、ブラウズウィンドウも全部最大化してくれます。
(Operaは多重起動することがないので、FindWindowでもいいです)

編集 削除
ぢゃわ  2002-06-14 13:54:16  No: 75733  IP: [192.*.*.*]

たかみちえさん、ご返答ありがとうございます。

基本的にブラウザはIEのみで考えています。
「いくつかブラウザが起動していた場合」というのは
IEが複数起動していた場合・・・というつもりでした。
わかりにくい記述で申し訳ありませんでした。m(__)m

>全てのトップレベルウィンドウのハンドルを得て、
>そのなかでclass名が
>"IEFrame"(InternetExplorerのメインウィンドウのクラス)

というのをさっそく試してみようと思います。

編集 削除
ぢゃわ  2002-07-09 10:18:29  No: 75734  IP: [192.*.*.*]

その後、なかなか時間が取れず、開発も思うようにいかずで
書き込みが遅くなってしまいましたが、結局「ShellExexuteEx
で起動したブラウザ(IE)をVBで最大化」という方式は
VBからの制御が思うようにIEに伝わらず、残念ながら断念
することになりました。

くやしいですが、表示するページ側で最大化するような対応を
とることになりそうです。

いろいろご指導いただいた皆さん、ありがとうございました。

編集 削除