我是Windows API的新手,我正在尝试找到任务栏中显示的所有窗口的句柄。
到目前为止,我已成功:
我已经尝试获取桌面窗口的所有子窗口,这给了我近900个窗口句柄!所以我试图通过只获得可见的窗口和只有标题超过0个字符的窗口来过滤它们,但我仍然离开 - 有68个窗口?
一些Win API专家可以告诉我你如何做到这一点:-)
并且也可能解释为什么有这么多窗口?
修改
private static bool HasAppWindowStyle(IntPtr handle)
{
return (GetWindowLong(handle, GWL_EXSTYLE) & WS_EX_APPWINDOW) != 0;
}
答案 0 :(得分:2)
您看到FindWindowEx样本了吗?你也可以过滤它们上面有文字,我认为你看到的窗口是Desctop项目(我不确定),但从桌面删除一些项目并查看更改。
答案 1 :(得分:1)
使用EnumWindows找到并具有任务栏按钮的顶级窗口将打开WS_VISIBLE和WS_EX_APPWINDOW样式标志。
答案 2 :(得分:1)
没有记录确切的算法,我在this answer中提出了一些可以正常工作的伪代码。