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

解決


ぢゃわ  2002-06-10 21:06:56  No: 75729

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

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

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

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


MADIA  URL  2002-06-13 00:54:55  No: 75730

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

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


ぢゃわ  2002-06-13 19:09:17  No: 75731

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

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

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


たかみちえ  URL  2002-06-14 02:38:31  No: 75732

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

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


ぢゃわ  2002-06-14 22:54:16  No: 75733

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

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

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

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


ぢゃわ  2002-07-09 19:18:29  No: 75734

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

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

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


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

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






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