我正在创build一个替代Vista的替代品,但我列出了所有活动的程序的一些问题。
我使用EnumWindows来获取Windows列表,但是这个列表是巨大的。 当我只有10个窗户打开时,它包含约400个项目。 这似乎是每一个控制和许多其他的东西的好处。
所以我必须以某种方式过滤这个列表,但是我不能像alt-tab那样完全做到这一点。
这是我现在用来过滤列表的代码。 它工作得很好,但我得到了一些不需要的窗口,如Visual Studio中的分离工具窗口,我也想念iTunes和Warcraft3这样的窗口。
在线计数,如何处理CRLF?
读取string中的gcc输出
如何使用Python 2.7.3更改Windows背景
如何在Windows中使用C / C ++获取文件types图标?
如何使一个可以注销,关机,并重新启动计算机的Python脚本?
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; }
如何使用GetMonitorCapabilities和GetMonitorBrightness函数
Erlang在Windows List Comprehension中给出了“ f”
为什么Java SimpleDateFormat在一些服务器上而不是在其他服务器上工作?
在Windows中运行/debuggingpython程序的最干净的方法
Raymond Chen回答了这个问题( http://blogs.msdn.com/oldnewthing/archive/2007/10/08/5351207.aspx ):
这其实很简单,尽管几乎没有任何事情可以自己猜测。 注意:这个算法的细节是一个实现细节。 它可以在任何时候改变,所以不要依靠它。 事实上,它已经改变了Flip和Flip3D; 我只是在这里谈论经典的Alt + Tab窗口。
对于每个可见的窗口,走上它的所有者链,直到找到根拥有者。 然后回到可见的最后一个活动弹出链,直到找到一个可见的窗口。 如果你回到你开始的地方,然后把窗口放在Alt + Tab列表中。 在伪代码中:
BOOL IsAltTabWindow(HWND hwnd) { // Start at the root owner HWND hwndWalk = GetAncestor(hwnd,GA_ROOTOWNER); // See if we are the last active visible popup HWND hwndTry; while ((hwndTry = GetLastActivePopup(hwndWalk)) != hwndTry) { if (IsWindowVisible(hwndTry)) break; hwndWalk = hwndTry; } return hwndWalk == hwnd; }
感谢Mike B.来自Raymonds博客的例子指出了我的正确方向。
然而,也有一些例外,Windows Live Messenger在Windows下创建阴影等方面有很多窍门:@
这里是我完整的代码,已经使用了一天,并没有注意到与真正的ALT标签的任何区别。 有一些底层的代码没有发布,但没有问题搞清楚它是做什么的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。