我正在创建一个alt-tab替代Vista,但我列出了所有活动程序的一些问题.
我正在使用EnumWindows获取Windows列表,但这个列表很大.当我只打开10个窗户时,它包含大约400个项目.对于每一个控件和许多其他东西来说,它似乎都是一个蠢货.
因此,我必须以某种方式过滤此列表,但我无法像alt-tab那样完全执行此操作.
这是我现在用来过滤列表的代码.它工作得很好,但我得到了一些不需要的窗口,如Visual Studio中的独立工具窗口,我也想念iTunes和Warcraft3等窗口.
private bool ShouldWindowBeDisplayed(IntPtr window)
{
uint windowStyles = Win32.GetWindowLong(window, GWL.GWL_STYLE);
if (((uint)WindowStyles.WS_VISIBLE & windowStyles) != (uint)WindowStyles.WS_VISIBLE ||
((uint)WindowExStyles.WS_EX_APPWINDOW & windowStyles) != (uint)WindowExStyles.WS_EX_APPWINDOW)
{
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)