提取window的所有子窗口

2024-03-29

如何提取一个窗口的所有子窗口?

示例代码:

Dim hWnd As IntPtr = ProcessName.MainWindowHandle
For Each hWndChild As IntPtr In hWnd
  MsgBox(hWndChild.classname.tostring & ", Caption: " & hWndChild.caption.tostring())
Next

(如间谍++)


正如其他人所建议的那样,您应该使用EnumWindows and EnumChildWindows功能。

下面是一个小演示程序的链接,我刚刚从我用 VB6 编写的另一个程序(很久以前)的代码片段移植过来:Windows 扫描仪 http://software.xfx.net/stackoverflow/WindowsScanner.zip

希望能帮助到你...


Edit:我刚刚意识到,在没有实际解释这些功能如何工作的情况下,这并不是一个很好的答案。所以,事情是这样的:

The EnumWindows函数将指向回调函数的指针作为其第一个参数。 第二个参数是可以传递给回调函数的值。您可以将其视为用户定义的参数。

每次EnumWindows“发现”一个新窗口,它会调用回调函数来通知新窗口。该回调函数将窗口的处理程序和用户指定的可选参数作为参数EnumWindows第一次被称为。

所以,基本上,这就是你的调用方式EnumWindows:

EnumWindows(New EnumWindowsProc(AddressOf EnumProc), 0)

Where EnumWindowsProc是一个委托,用于创建对EnumProc函数,这将是我们的回调。

该回调的签名如下:

Private Function EnumProc(hWnd As IntPtr, lParam As IntPtr) As Boolean

您可以在该函数内填充已发现窗口的内部数组。

事情几乎是一样的EnumChildWindows函数,唯一的区别是它的第一个参数必须是父窗口的处理程序。 其他一切都以完全相同的方式处理。

如果你检查源代码WindowsScanner程序中,您会看到我什至对两者使用相同的委托和相同的回调函数EnumWindows and EnumChildWindows。 那么我怎么知道我们是在枚举顶级窗口还是子窗口呢? 很简单,我只需设置最后一个参数EnumChildWindows到“1”。然后,这个参数被传递给回调函数(EnumProc)这允许它根据该参数的值采取不同的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提取window的所有子窗口 的相关文章

  • 反向 P/Invoke 教程? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个旧的 C C 类 我想使用 PInvoke 重构并从 net 访问它 所有 P Invoke
  • 在 ASP.NET MVC 中向 Actions 发送多个参数

    我想向 ASP NET MVC 中的操作发送多个参数 我还希望 URL 看起来像这样 http example com products item 2 代替 http example com products item aspx id 2
  • 如何使用 MsBuild v15 构建 C++ 项目?

    我在 Visual Studio 2017 中使用 NuGet 包管理器安装了以下程序集 Microsoft Build Microsoft Build Framework Microsoft Build Utilities Core 一切
  • .NET Web 服务 (asmx) 超时问题

    我正在连接到供应商提供的 Web ASMX 服务并通过线路发送一组数据 当您向项目添加服务引用时 我的第一次尝试遇到了 Visual Studio 默认在 app config 文件中引发的 1 分钟超时 我把它增加到 10 分钟 又是一次
  • 我可以在 WinRT / Windows 8 Store 应用程序中绑定 DynamicObject

    我有以下代码 public class MyClass DynamicObject INotifyPropertyChanged Dictionary
  • .NET 查询字符串值的正则表达式

    我需要从 Url PathAndQuery 中删除任何 id SomeValue 其中 SomeValue 可以是整数或字符串 它后面可能有也可能没有另一个 符号 所以它可能是 somepage aspx cat 22 id SomeId
  • 您在 C# 或 .NET 中见过的最奇怪的极端情况是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 隐藏错误报告窗口

    我有以下问题 我的 ASP Net 应用程序接收简单控制台程序的 C 源代码 使用 cl exe 命令行 VC 编译器 对其进行编译 并使用 System Diagnostics Process 运行它 ASP Net应用程序运行在PC上
  • 如何在 VB.NET 中单击按钮切换表单语言?

    我想创建本地化应用程序并想要实现语言切换器 例如特殊按钮 我使用 Visual Studio 2010 Express VB NET 我创建了带有一个标签和一个按钮的简单测试应用程序 我将表单的属性 Localized 设置为 True 并
  • 如果 foreach 是一个结构数组,它会复制每个元素吗?

    我有一个结构数组 做foreach运算符在迭代数组时复制每个元素 据我所理解foreach只是底层的语法糖转换为for 所以看来答案是否定的 但我很想得到一些确认 PS 看来应该有人已经问过了 但我无法轻易找到任何东西 因此 请以提供的参考
  • 如何异步使用 HttpWebRequest (.NET)?

    如何异步使用 HttpWebRequest NET C Use HttpWebRequest BeginGetResponse http msdn microsoft com en us library system net httpweb
  • .NET VM 是编译器还是解释器?

    NET 的虚拟机是编译 CIL 字节码 然后在最低级别 CPU 汇编程序 执行代码 还是解释器 读取以下指令并执行它们 NET 的虚拟机吗 编译 CIL 字节码 然后 在最低级别执行代码 CPU 汇编器 是的 它是 CLR 的一个组件 称为
  • 我发现部分方法非常有用,但没有部分属性。他们没有被包括在内有充分的理由吗?我有什么选择?

    更新 请注意 我知道我不能这样做 这是我真正希望能够发挥作用的 也许还有其他方法可以分离责任 不是吗 所以我正在寻找的是 实体框架强制将多种职责放入类中 常规逻辑 基本注释和 CRUD 接口功能 我只想将通常都在一个类中的内容 并通过实体框
  • C#代表,参考解析时间

    我有一个关于 net 代表的简单问题 假设我有这样的事情 public void Invoke Action
  • 您会将什么放入存储库类(数据访问层)的单元测试中?

    我想为我的数据访问层编写一个单元测试 以确保其中的一切正常工作 问题是 我应该把什么样的东西放入测试中 DAL 是静态的Repository隐藏底层 Fluent NHibernate 并通过一个公开的东西向公众公开的类IQueryable
  • C#:将字符串编组为 utf8 char* [重复]

    这个问题在这里已经有答案了 背景 我正在尝试基于修改后的 libspotify net 编写一个高级 libspotify 包装器 http libspotifydotnet codeplex com http libspotifydotn
  • 如何转换十进制?到小数

    可能这是一个简单的问题 但我正在尝试所有的转换方法 并且仍然有错误 你能帮我吗 小数 可为空的小数 到小数 有很多选择 decimal x decimal a decimal x works throws if x was null dec
  • 检查文件是否是 .NET 程序集

    我见过一些方法通过检查二进制结构来检查 PEFile 是否是 NET 程序集 http www anastasiosyal com archive 2007 04 17 3 aspx 这是测试多个文件最快的方法吗 我假设尝试加载每个文件 例
  • Control.Invoke 在隐藏的 ShowDialog 中“卡住”

    我有解决这个问题的方法 但这不是我第一次被咬 所以我试图确切地了解发生了什么 从我的申请中 我ShowDialog表单 表单上有一个按钮 单击该按钮时会调用另一个 非 GUI 线程上的代码 非 GUI 线程发回状态 Pushed then
  • 检测 Windows 重新启动是否是由于 Windows 更新造成的

    我的电脑上的一些应用程序一直在检测 Windows 更新是否重新启动 这是可以观察到的 因为它们会在 Windows 更新自动重启后重新启动 这非常有帮助 因为这些应用程序会重新加载更改 甚至unsaved更改或恢复选项卡 如果是浏览器 执

随机推荐

  • 从redux中的reducer获取ID

    我是个新手 正在尝试使用 React 和 Redux 构建一个简单的书签应用程序 我无法解决这个问题 用户可以创建一个书签并将其添加到多个文件夹 所以我派了一个addMark bookmark 行动 然后addMark folder or
  • Pandas:添加具有最新值的列

    我有两个 pandas 数据框 两个数据框都带有日期时间条目的索引 这df1具有非唯一的时间索引 而df2有独特的 我想添加一栏df2 a to df1通过以下方式 对于中的每一行df1带时间戳ts df1 a应包含最新值df2 a其时间戳
  • 如何从 Laravel 5 中的 AJAX 调用返回视图?

    我正在尝试获取一个 html 表以在 ajax 调用中返回 route Route post job userjobs JobController userjobs ajax调用页面 function getUserJobs userid
  • Google 地图、PHP 和 MySQL 上的附近位置搜索

    我正在构建一个网络应用程序 只是为了好玩 xD 您可以在其中告诉它您在哪里以及您想去哪里 然后您可以搜索您可以乘坐的巴士列表 我的数据库是这样的 buses id bus number bus description routes id b
  • 客户端列表的 MVC 自定义验证

    我正在尝试编写一个在客户端工作的自定义验证器 用于验证所有复选框是否已被选中 这是模型的声明 DeclarationsAccepted ErrorMessage You must tick all declarations public I
  • 德国 UI 文化 de-DE 小数更改为 asp.net 中的逗号值问题

    我在我的 ASP NET 应用程序中使用德国 UI 文化 我正在根据下拉列表中选择的语言更改应用程序的 UI 文化 在下拉列表中选择的索引更改时我正在使用此代码 Thread CurrentThread CurrentCulture new
  • 比较两个数组中的对象并根据 JavaScript 中的匹配返回

    我为此使用 React 但概念是在 javascript 中 因此 为了简单起见 我希望我可以省略 React 代码 我有两个需要过滤掉的数组 我的目标是映射一个数组并检查该对象的属性是否与另一个数组的对象中的属性匹配 第一个数组如下所示
  • 是否可以通过 ssh 查看张量板?

    我正在 ssh 服务器上远程运行张量流代码 例如 ssh X 电子邮件受保护 cdn cgi l email protection 在远程服务器上 它说You can navigate to http 0 0 0 0 6006 在这种情况下
  • 如何在Python中仅调用一次函数[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 这里我想在整个程序中只调用一次Web服务函数 如何做到这一点有人建议我 import sys os def web service maci
  • 适合许多glm模型:提高速度

    我正在编写一个函数来适应许多glm楷模 为了给您提供一些有关该函数的想法 我包含了一小部分代码 在几个 SO 用户的帮助下 该函数现在可以用于我的分析目的 然而 有时 特别是当样本量相对较小时 可能需要相当长的时间才能完成整个过程 为了减少
  • “sys.settrace”在 Python 3.5 中可以正常工作,但在 Python 3.6 中不能正常工作吗?

    在尝试回答另一个问题时 我突然意识到 当理论上您不应该拥有控制权时 您可以在线程中随时运行代码 CPython 有一个settrace用于在代码中注册跟踪函数的函数 为了通过使用类来测试这个想法 编写了以下代码 问题是跟踪似乎没有发生 并且
  • 如果表为空,CodeIgniter result_array() 出现布尔错误

    我的里面有这个功能Carros model php用于带来最后的插入并将其显示在仪表板中 public function select all limit 3 this gt db gt select marca nome marca co
  • 在 Android Studio 中,ADB 仅对 Flutter 失败,但对 Android 失败?

    这很奇怪 但是在安卓工作室 on my 伴侣Ubuntu 18 04 当我创建 Android 项目 时 AMD 处理器 ADB 运行良好 但是一旦我创建 Flutter 我就会出错Error initializing ADB Androi
  • 无效的可执行文件大小 - 来自 iTunes Connect

    我正在 iTunes 上上传我的 iOS 应用程序 我正在使用 MonoTouch 编译 iOS 版 LibGdx 游戏 在 Android 中几乎不到 7 8mb 但是当我上传到 iTunes AppStore 时 它 的大小就变成了 7
  • 如何处理错误“MDM 2009 处理元数据文件时发现重复类型”?

    我正在尝试使用 C WinRT 编写 UWP 程序 但是当我直接和间接引用 Windows 运行时组件两次时 收到以下编译错误 重复类型 Core ALBUM 发现正在处理元数据文件 我对COM了解不多 我搜索了很多信息但没有帮助 我应该怎
  • 既然QuickSight可以直接查询S3,那么什么时候我们需要使用Athena作为QuickSight的数据源呢? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 可能我错过了一些东西 但我无法理解如果我将 Athena 与 QuickSight 连接而不是直接将 QuickSight 连接与 S3 我会得
  • 如何获取今天的日期?

    换句话说 我想要提供 Joda Time 的功能 today today withTime 0 0 0 0 但没有 Joda Time 只有 java util Date setHours 等方法已被弃用 还有更正确的方法吗 Date to
  • 在设置中监听位置访问禁用/启用

    在 Android 操作系统中 在 Settings gt 位置服务 有一个名为 的切换按钮访问我的位置 可用于禁用和启用应用程序的位置信息访问 目前 我正在开发一个位置服务应用程序 我想知道 我怎样才能在我的Android项目中听到这个设
  • 使用 JAXB 获取布尔属性的 getter

    我正在尝试使用 jax ws 公开服务 但我得到的第一个惊喜是 Weblogic 不支持请求 响应对象的内部类 克服这种情况后here https stackoverflow com questions 144118 jaxb bindin
  • 提取window的所有子窗口

    如何提取一个窗口的所有子窗口 示例代码 Dim hWnd As IntPtr ProcessName MainWindowHandle For Each hWndChild As IntPtr In hWnd MsgBox hWndChil