.Visible=Falseで非表示にしておいたフォームをTrueで
再表示した時、別ウィンドウにあるフォーカスを表示し
たフォーム(ウィンドウ)に移したいのですが、やり方が
わかりません。どなたか教えて下さい。
質問がよくわかりませんが、
同一プロジェクト内であれば、
フォーカスを移したいコントロールに
SetFocusすれば、Formは自動的に
アクティブになります。
たとえば、Form1がアクティブのとき
Form2.Text1.SetFocus
とすれば、Form2がアクティブになり、
Form2上のText1にフォーカスが移ります。
VBのプログラムからShellで別のEXEを実行し、その間
呼び出し元のプログラムを.Visible=Falseで非表示に
しておき、別EXEが終了した時に再表示(TopMost)させ
ています。
この時、エクスプローラー等のウィンドウが立ち上が
っていると、そちらにフォーカスがいき、再表示した
画面に移ってくれません。
SetFocusではタイトルバーは点滅します(アクティブ)が、
フォーカス自体は移りません。
説明が下手ですが、この場合に移す方法を知りたいので
す?
Windows2000だったら仕様・・・とかどっかに書いてありましたけど
気のせいでしょうか。
私はVisibleではなく、最小化することで隠しているのですがそうしてみては?
Win98からSetForegroundWindowの仕様が変わったらしい
ですね。
APIで解決しました。
Sayさん、蜻蛉さんレスありがとうございました。
ツイート | ![]() |