2009-02-26 37 views

回答

7

没有真正的跨平台方式来做到这一点。流程,应用程序等的整个概念是操作系统特定的概念。如果您使用某个库来解决问题,那么您并不是真正跨平台的,只限于该库支持的平台。例如。 Qt不是通用的跨平台,它运行在很多平台上,但不是在每个已知的平台上运行,在不运行的平台上运行,Qt解决方案将无法运行。大多数类似平台的UNIX平台都支持POSIX API(更多,更少一些),如果您仅限于使用POSIX函数,则该解决方案可在Linux,BSD,Mac OS X,Solaris和类似操作系统中使用。但它不能在Windows上工作。微软决定放弃POSIX支持(不是说他们的POSIX支持很好),但是Cygwin将Windows支持POSIX(Cygwin在Windows之上模拟一个完整的Linux glibc API)。问题是,即使POSIX没有真正提供一组函数来解决你的问题 - 比如像BSD系统,一个像ps这样的POSIX工具如何获得进程信息的方式在Linux系统上完全不同。

第二个问题是你说的是“焦点”。重点是不适用于应用程序的东西。没有UI和没有窗口的后台应用程序不能有“焦点”。对于这样的应用程序,“关注”意味着什么?因此,您对正在运行的应用程序列表并不感兴趣,但是却在运行UI应用程序的列表中,这些应用程序具有窗口并且其窗口可能成为焦点。一个完全不同的东西。 Windows系统在不同的平台之间更加不同,POSIX完全忽略了UI。

此外,您的问题上还有一个Visual-C++标记,因此跨平台必须如何确保代码的真实性,因为Visual-C++只是Windows的一件事情,不是吗?您真正想要支持哪些平台(请相应地更新您的问题),因为我怀疑除了为每个支持的平台编写不同的代码之外,还有什么更好的解决方案。

1

第一:应用程序没有焦点;窗户做。其次:一些窗户不会接受焦点。所以,我不认为这是可能的。

相关问题