- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:★WindowsのForm表示をVBで制御したい)
WindowsのForm表示をVBで制御する方法
このQ&Aのポイント
- 自作ソフトMeからアプリAの機能を制御する方法について解説します。
- アプリAのメニュー画面を表示し、自作ソフトMeを最前面に保つ方法について悩んでいます。
- アプリAのボタンを押し、メニュー操作を自動化する方法についても解決策を求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 1)アプリAを最小化するメッセージを送る これは成功しているんでしょうか? > 2)アプリAの目的のボタンを通信で押す。 これは成功しているんでしょうか? > 3a)アプリAを元のサイズにするメッセージを送る なぜ元のサイズに戻すんでしょうか? Aメニューが表示されない? 順番としては、 (1)アプリAを最小化 SendMessage (2)アプリAの目的のボタンを押す AppliObj.DoButton( TARGET_BUTTOM ) (3)Aメニューを最前面に表示する SendMessage(最小化されていれば元のサイズに。いらないかも) SetForegroundWindow(最前面に)
お礼
その後、3)を以下のようにやってみたら、 Aメニューだけがアクティブに前面表示され大成功!v(^^)/ 'AppA のプロセスを探す Dim ps As System.Diagnostics.Process() = _ System.Diagnostics.Process.GetProcessesByName("AppA") If 0 < ps.Length Then '見つかった時は、アクティブにする Microsoft.VisualBasic.Interaction.AppActivate(ps(0).Id) End If ありがとうございました!
補足
ありがとうございます。 最大の目的は、図に示したことの実現なので、図をよく見て下さいねv(^^) これが実現するのであれば、方法はどんなものでも構いません。 とりあえず私は、1)2)3a~c)をやってみただけです。 1)2)はその部分では成功しています。 そして3b)も成功しましたが、手動クリックでは目的に合いません。 そこで3c)ですが、目的のアプリAのタスクバーでの座標がわかれば成功することも分かっています。そこで、 ★目的アプリAのタスクバーでのアイコン座標が分かる方法があれば、その方法でも目的は達しますので、教えて下さい。 3a)で、なぜ元のサイズに戻すかというと、Aメニューが表示されないだけでなく、アプリAも表示されません。2)でモーダルフォームのAメニューを出してしまったからです。モーダルフォームとは、そのフォーム内、つまりそのWindow内で、例えば「OK」ボタンを押さないとアプリAの処理が進まない状態のことですから、最大化も元に戻すもできない(つまり反応しない)のです。 ちなみにSetForegroundWindow(最前面に)ですが、最前面に出したいのは「アプリAから開いたWindowだけ」です。 ★どんな引数を入れたらよいか教えて下されば有り難いです。 繰り返しになりますが、 ★1)2)3)の方法でなくても、図に示した目的が達成できればどんな方法でもよいのです。ただ、この関数がいいとだけ教えていただいても、その「引数」とか、それ以前にこんな「宣言」をしておかないといけないとか、ピンポイントで具体的にお願いできれば有り難いです。 よろしくお願い申し上げます。