Ich brauche eine Liste der Anwendungen, die derzeit ausgeführt werden, damit meine C++ - Anwendung und Fokus sie machen.Gibt es eine plattformübergreifende Möglichkeit, eine Liste laufender Anwendungen zu erhalten?
Hat jemand das getan?
Ich brauche eine Liste der Anwendungen, die derzeit ausgeführt werden, damit meine C++ - Anwendung und Fokus sie machen.Gibt es eine plattformübergreifende Möglichkeit, eine Liste laufender Anwendungen zu erhalten?
Hat jemand das getan?
Es gibt keine echte plattformübergreifende Möglichkeit, das zu tun. Das gesamte Konzept von Prozessen, Anwendungen usw. ist ein betriebssystemspezifisches Konzept. Wenn Sie eine bestimmte Bibliothek verwenden, um das Problem zu lösen, sind Sie nicht wirklich plattformübergreifend. Sie sind auf die Plattformen beschränkt, die von dieser Bibliothek unterstützt werden. Z.B. Qt ist nicht universal plattformübergreifend, es läuft auf vielen Plattformen, aber nicht auf jedem bekannten und auf Plattformen, auf denen es nicht läuft, eine Qt-Lösung wird nicht funktionieren. Die meisten UNIX-ähnlichen Plattformen unterstützen die POSIX-API (einige mehr, einige weniger). Wenn Sie sich auf POSIX-Funktionen beschränken, funktioniert die Lösung unter Linux, BSD, Mac OS X, Solaris und ähnlichen Betriebssystemen. Unter Windows funktioniert das allerdings nicht. Microsoft entschied sich, die POSIX-Unterstützung zu streichen (nicht, dass ihre POSIX-Unterstützung von Anfang an großartig war), aber Cygwin bringt POSIX-Unterstützung für Windows zurück (Cygwin emuliert eine komplette Linux-glibc-API über Windows). Das Problem ist, dass nicht einmal POSIX wirklich eine Reihe von Funktionen bietet, um Ihr Problem zu lösen - die Art und Weise, wie ein POSIX-Tool wie ps Prozessinformationen erhält, ist auf einem Linux-System völlig anders als beispielsweise auf einem BSD-System.
Das zweite Problem ist, dass Sie "Fokus" sprechen. Fokus ist etwas, das nicht für Anwendungen gilt. Eine Hintergrundanwendung, die keine Benutzeroberfläche und keine Fenster hat, kann keinen Fokus haben. Was würde "Fokus" für eine solche Anwendung bedeuten? Sie sind also nicht wirklich an einer Liste laufender Anwendungen interessiert, sondern an einer Liste laufender UI-Anwendungen, die Windows enthalten und deren Fenster den Fokus erhalten. Eine ganz andere Sache. Die Windows-Systeme sind zwischen verschiedenen Plattformen noch unterschiedlicher und POSIX ignoriert UIs insgesamt.
Auch Sie haben eine Visual-C++ - Tag auf Ihre Frage, so wie Cross-Plattform muss Ihr Code wirklich sein, wie Visual-C++ ist ein Windows-Ding, nicht wahr? Welche Plattformen möchten Sie wirklich unterstützen? (Bitte aktualisieren Sie Ihre Frage entsprechend), da ich bezweifle, dass es eine bessere Lösung als das Schreiben eines anderen Codes für jede einzelne unterstützte Plattform gibt.
Erstens: Anwendungen haben keinen Fokus; Fenster tun. Zweitens: Einige Fenster akzeptieren keinen Fokus. Also, ich denke nicht, dass es buchstäblich möglich ist.