在.Net中获取当前窗口的列表,并给其中一个焦点

时间:2020-03-05 18:45:23  来源:igfitidea点击:

在不诉诸PInvoke的情况下,.net中是否有办法找出打开了哪些窗口?这与询问内存中正在运行哪些应用程序略有不同。例如,Firefox可能正在运行,但可能不止一个窗口。基本上,我只想知道与任务栏(和" alt-tab"?)相同的信息。

另外,一旦我引用了一个窗口,是否有任何方法以编程方式使其聚焦?

有什么办法可以用托管代码做到这一点?

解决方案

回答

恐怕没有PInvoke,我们将无法做到。要使焦点集中在某些窗口上,我们应该调用SetForegroundWindow函数,有关详细信息,请参见本文。

回答

我们可以在.NET 3.5中检出新的UI自动化内容。它应该掩盖了很多PInovke的东西,并且可以与Web和WPF应用程序一起使用。

我还没有使用过它,所以我没有更具体的位置来指导我们,但它可能适合我们。

回答

签出此LGPL项目。我知道它可以为窗口设置前景。否则,aku是正确的。它极有可能需要拨打一些电话。

http://mwinapi.sourceforge.net/

如果我们需要有关pinvoke的信息,请使用:

http://www.pinvoke.net/