SysTray に最小化されたサード パーティ製アプリケーションを復元することはできますか?
タスクバーに最小化されたアプリで ShowWindow を呼び出すことは問題ありませんが、アプリが SysTray に最小化されている場合、ハンドルがゼロに設定されているように見え、もちろん ShowWindow はそれを見つけることができません。
SysTray に最小化されたサード パーティ製アプリケーションを復元することはできますか?
タスクバーに最小化されたアプリで ShowWindow を呼び出すことは問題ありませんが、アプリが SysTray に最小化されている場合、ハンドルがゼロに設定されているように見え、もちろん ShowWindow はそれを見つけることができません。
いいえ; これを達成するために採用できるさまざまなアプローチがあります (アプリケーションは、復元時にウィンドウを閉じて新しいコピーを開くか、単に元のウィンドウを非表示にして復元時に表示する場合があります)。この機能を実現するためにアプリケーションが従わなければならない特定のプロセスはないため、元に戻すために従うことができる特定のプロセスはありません。
特定のアプリケーションがどのように動作するかについての情報があり、それを特定のケースとして扱いたい場合は、それが可能になる可能性があります。しかし、残念ながら万能のソリューションは存在しません。
編集
Process Explorerを使用して、プロセスによって開かれているウィンドウ ハンドル (存在する場合) を確認できます。これにより、少なくともウィンドウが破棄されているか非表示になっているかがわかります。
アプリの実装に完全に依存しています。はるかに一般的なアプローチは、非表示のウィンドウを表示する代わりに、最初から新しいウィンドウを作成することです。
プライベート コールバック関数を介してトレイ アイコン通知を取得します。それを自分で偽造することはできません。アイコンの場所が分からないため、マウス クリックを偽装するのは非常に困難です。私はあなたが立ち往生していると思います。
Adam Robinson と nobugz からの有益なアドバイス。私たちが試みていることは不可能かもしれないことを理解するのに役立ちました。アプリ自体が非表示になっているときのアプリの内部動作に依存しすぎており、それを制御したり、アプリについて詳しく知ることさえできません。これには別の方向からアプローチする必要がありました。
アプリは SysTray に置かれ、ユーザーがマウスでクリックしてアクティブ化されるのを待っていますが、それを自動化することはできません。しかし、アプリを「アクティブ化」する別の方法があり、それは exe ファイルを再度実行することです。この場合、2 番目のインスタンスは開始されず、既存のインスタンスが再アクティブ化されるだけです。それでは、exeファイルにシェルアウトして、その方法でアプリを再アクティブ化してみませんか? それが私たちが行ったことであり、それは実用的なソリューションです。