2009-02-26 4 views

答えて

7

これを実行する実際のクロスプラットフォームの方法はありません。プロセスやアプリケーションなどの概念全体は、オペレーティングシステム固有の概念です。特定のライブラリを使用して問題を解決すると、実際にはクロスプラットフォームではなく、このライブラリでサポートされているプラ​​ットフォームに限定されます。例えば。 Qtは普遍的なクロスプラットフォームではなく、多くのプラットフォーム上で動作しますが、すべての既知のプラットフォームやプラットフォーム上で動作するわけではありません。Qtソリューションは動作しません。ほとんどのUNIX系プラットフォームはPOSIX APIをサポートしていますが、POSIX APIをサポートしています(POSIX APIをサポートしています)。POSIXの機能に制限されていれば、Linux、BSD、Mac OS X、SolarisなどのOSで動作します。しかし、Windowsでは動作しません。 MicrosoftはPOSIXサポートを中止することに決めました。しかし、CygwinはPOSIXサポートをWindowsに戻します(CygwinはWindows上で完全なLinux glibc APIをエミュレートします)。問題は、POSIXでさえ本当にあなたの問題を解決するための一連の関数を提供していないということです。psのようなPOSIXツールがプロセス情報を取得する方法は、例えばLinuxシステムではBSDシステムとは全く異なります。

第2の問題は、「フォーカス」を話していることです。フォーカスは、アプリケーションには適用されないものです。 UIを持たず、ウィンドウを持たないバックグラウンドアプリケーションは、「フォーカス」を持つことができません。そのようなアプリケーションには「焦点を合わせる」とは何を意味しますか?だからあなたは本当に実行中のアプリケーションの一覧に興味はありませんが、ウィンドウがあり、ウィンドウにフォーカスを当てるUIアプリケーションのリストに興味があります。まったく別のもの。 Windowsシステムは異なるプラットフォーム間でさらに異なっており、POSIXはUIを完全に無視します。

また、Visual C++タグがありますので、Visual C++はWindowsの唯一のものなので、クロスプラットフォームでコードを実際にどのようにする必要がありますか?サポートされているプラ​​ットフォームごとに異なるコードを書くよりも優れた解決策があるのではないかと思うので、本当にサポートしようとしているプラ​​ットフォームは何ですか(それに応じて質問を更新してください)。

1

最初に:アプリケーションにはフォーカスがありません。窓はそうする。第二に、いくつかのウィンドウはフォーカスを受け付けません。だから、私はそれが文字通り可能だとは思わない。

関連する問題