我有一个xy问题的情况,请原谅(Last activity time of HWND - get the last active hwnd)。本主题修复了这一点。
我需要按照alt +标签菜单的顺序获取一个HWND数组。
我正在考虑这样做:使用MSDN :: GetAltTabInfo,我认为我也提供了一个HWND,它会吐出来:
typedef struct tagALTTABINFO {
DWORD cbSize;
int cItems;
int cColumns;
int cRows;
int iColFocus;
int iRowFocus;
int cxItem;
int cyItem;
POINT ptStart;
} ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
cxItem和cyItem在alt选项卡菜单中给出了HWND的位置?
这是怎么回事?这是我应该采取的方式吗?我必须首先知道一个HWND,然后在alt + tab菜单中用上面的函数测试它的位置?
或者有没有办法按照alt +标签菜单的顺序列出HWND?
答案 0 :(得分:2)
您需要使用GetTopWindow
/ GetNextWindow
按Z顺序通过桌面的子项进行枚举,然后测试样式以确定它是否有资格进入alt +标签列表。类似的东西:
HWND child = GetTopWindow(NULL);
LONG mask = WS_VISIBLE | WS_CAPTION;
while (child != NULL)
{
LONG style = GetWindowLong(child, GWL_STYLE);
if ((style & mask) == mask)
{
// do something with child.
}
child = GetNextWindow(child, GW_HWNDNEXT);
}
答案 1 :(得分:1)
这是对@CoryNelson的不同Windows版本代码的分析(非常感谢他的帮助)
注意到,当最小化hwnd
具有WS_ICONIC
和WS_MINIMIZED
标记时仍然具有WS_CAPTION
和WS_VISIBLE
标记 < / p>
专注于浏览器,最小化,所以最后的重点是浏览器。划痕目前尚未最小化。测试结果::点击焦点大多数rec win profilist:它集中了临时,浏览器的hwnd没有出现在临时的hwnd之前(我希望它会在临时之前发生但是会有WS_MINIMIZED-or-something而只是缺少WS_VISIBLE什么的)
//hwnds
0x240de4 //scratch
0x110e30 //browser