• ベストアンサー

これって可能でしょうか?(起動しているフォームのみの稼動)

VBの超初心者です。 以下の様な事は可能なのでしょうか? フォームAからあるボタンを押してフォームBを起動する。 フォームBが立ち上がっている時は、フォームBしか使用できないようにする。 (つまり、フォームBが全画面表示でタスクバーも表示されず、他のプログラムも  使用不可になる。) 表示タイプをモーダルにして、フォームAを使用不可にする事は可能だったんですが 他の常駐しているプログラムも使用不可にしたいのです。 有識者の皆様、どうぞご教授下さいませ。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>タスクバーからのプログラム起動が擬似的に出来ないような >フォームの表示方法は可能でしょうか? ということであれば、WindowsAPIのSetWindowPosでHWND_TOPMOSTを指定すればタスクバーよりも前面にウィンドウを表示させることが出来ます。が、タスクバーをクリックするとタスクバーの方が上に出ます。 つまり、画面サイズ目いっぱい(最大化ではないところに注意)のサイズにウィンドウを広げ、HWND_TOPMOSTで最前面にすればとりあえず他のアプリは見えなくなります。 ただ、厳密に言うと、HWND_TOPMOSTを指定されたほかのウィンドウが存在すると、Alt+ESCやAlt+Tabで切り替ってしまいます。また、WindowsキーやCtrl+ESCでスタートメニューが開きます。 これも何とかしたいのであれば、タイマーで自分がアクティブか監視し、アクティブでなくなったらAPIの SetForgroundWindowで強制的に自分をアクティブにするということも方法としてはあります。

namizoudesu
質問者

お礼

ご回答いただきありがとうございます。 HWND_TOPMOSTの使用で行おうと思います。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

無理だと思います。それに、フォームBで不具合が発生した場合、プログラムを終了できなくなる可能性が出てきますので、止めた方がいいと思います。

namizoudesu
質問者

お礼

ご回答ありがとうございます。 私の書き方が悪かったですね。 最重要なのはタスクバーより前面に出ていれば 良かったんです。 補足を追加しておきます。 もし、宜しければ補足をお読みになって ご回答頂ければ幸いです。 お手数をおかけ致します。

namizoudesu
質問者

補足

フォームBの動きについて補足します。 フォームBが全画面表示でタスクバーよりも最前面に表示され タスクバーからのプログラム起動が擬似的に出来ないような フォームの表示方法は可能でしょうか? お分かりの方がいらっしゃいましたら 是非ご教授お願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A