c# - 获取任务栏中所有窗口的句柄

标签 c# windows winapi .net-4.0 taskbar

我对 Windows API 很陌生,我正在尝试查找任务栏中出现的所有窗口的句柄。

到目前为止,我已经做到了:

  • 获取所有窗口的句柄
  • 获取窗口标题
  • 检查窗口是否可见
  • 检查窗口是否存在
  • 最小化窗口
  • 获取窗口的子窗口
  • 获取桌面窗口

我尝试获取桌面窗口的所有子窗口,这给了我近 900 个窗口句柄!因此,我尝试通过仅获取可见窗口和标题长度超过 0 个字符的窗口来过滤它们,但我仍然离目标很远 - 有 68 个窗口?

那么,Win API 专家能否告诉我如何执行此操作:-),并可能解释一下为什么有这么多窗口?

编辑:

private static bool HasAppWindowStyle(IntPtr handle)
{
    return (GetWindowLong(handle, GWL_EXSTYLE) & WS_EX_APPWINDOW) != 0;
}

最佳答案

你看到了吗FindWindowEx样本?您也可以过滤它们以在其上显示文本,我认为您看到的窗口是 Detop 项目(我不确定),但从桌面上删除一些项目并查看更改。

关于c# - 获取任务栏中所有窗口的句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390191/

相关文章:

delphi - TreeView自定义绘制项

c# - 不使用类字段返回静态数组

c# - 尝试使用非托管 C++ DLL 时出现 SafeArrayTypeMismatchException

c++ - DnsQuery 无法获取某些特定 FQDN 上的有效地址

c - 如何在 Windows 上截取屏幕截图并将其另存为 JPEG?

c++ - 递归调用以获取带有前缀或后缀参数的 arr 元素的总和

winapi - C++ Pipe ReadFile 函数在 Windows XP 中设置超时

c# - 如何在 C# 中使用 Windows 服务调用 Windows 应用程序?

c# - 使用 C# 比较两个 ArrayList 内容

excel - 打开多个Excel实例时,如何设置Excel实例打开手动打开的文件?