获取没有标题的窗口的句柄.. (C#)

2023-12-13

我们怎样才能得到一个没有标题的窗口的句柄呢?有没有一种方法可以枚举桌面上的所有窗口并过滤没有标题的窗口(在我的例子中,只有一个)并获取它的句柄..或者通过指定其他属性,例如具有标题的窗口特定按钮或列表框等...


这应该可以做到:

    ...
    using System.Runtime.InteropServices;
    using System.Diagnostics;

    ...

public class foo()
{
    ...

    [DllImport ("user32")]
    internal static extern int GetWindowText (int hWnd, String text, int nMaxCount);

    [DllImport ("user32.dll")]
    public static extern int GetWindowTextLength (int hWnd);

    [DllImport ("user32.dll")]
    public static extern int FindWindow (String text, String class_name);

    [DllImport ("user32.dll")]
    public static extern int FindWindowEx (int parent, int start, String class_name);

    [DllImport ("user32.dll")]
    public static extern int GetWindow (int parent, uint cmd);

    public List<int> FindTitlelessWindows()
    {
        List<int> titleless = new List<int> ();

        Process [] procs = Process.GetProcesses ();
        IntPtr hWnd;

        foreach (Process proc in procs)
        {
            hWnd = proc.MainWindowHandle;
            if (hWnd != IntPtr.Zero)
            {
                TraverseHierarchy (hWnd.ToInt32 (), 0, titleless);

            }
        }

        foreach (int i in titleless)
        {
            System.Console.WriteLine (i);
        }

        return titleless;
    }

    public void TraverseHierarchy (int parent, int child, List<int> titleless)
    {
        String text = "";
        GetWindowText (parent, text, GetWindowTextLength (parent));
        if (String.IsNullOrEmpty (text))
        {
            titleless.Add (parent);
        }

        TraverseChildern (parent, titleless);
        TraversePeers (parent, child, titleless);

    }

    public void TraverseChildern(int handle, List<int> titleless)
    {
        // First traverse child windows
        const uint GW_CHILD = 0x05;
        int child = GetWindow (handle, GW_CHILD);
        if (0 != child)
        {
            TraverseHierarchy (child, 0, titleless);

        }
    }

    public void TraversePeers(int parent, int start, List<int> titleless)
    {
        // Next traverse peers
        int peer = FindWindowEx(parent, start, "");
        if (0 != peer)
        {
            TraverseHierarchy (parent, peer, titleless);
        }

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

获取没有标题的窗口的句柄.. (C#) 的相关文章

  • boost::interprocess 准备好迎接黄金时间了吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在开发一个由内存映射文件支持的线
  • C#9 顶级语句文件上的属性

    我正在尝试向顶级语句文件添加属性 但没有找到任何相关信息 是否可以 对于某些上下文 我想仅在该文件中禁用规则 SuppressMessage StyleCop CSharp LayoutRules SA1516 ElementsMustBe
  • 实体框架中的重复键异常?

    我试图捕获当我将具有给定用户名的现有用户插入数据库时 引发的异常 正如标题所说 我正在使用 EF 当我尝试将用户插入数据库时 引发的唯一异常是 UpdateException 如何提取此异常以识别其是否是重复异常或其他异常 catch Up
  • 从 .Net 将简单数据插入 Excel 文件的最简单方法

    我有一个 Excel 文件 大约有 10 列和 1 20 行 我需要插入 1 20 行包含各种数据元素 我想知道是否有一种方法可以将一些标签放入 Excel 文件中 以便可以找到并替换它们 将列标记为 名称 的东西 这样我就可以在代码中说
  • C/C++ 中随机数生成器的实现[重复]

    这个问题在这里已经有答案了 我对 C 中随机数生成器的实现有点困惑 它也与 C 中的明显不同 如果我理解正确 对 srand seed 的调用会以某种方式初始化可通过 rand 访问的隐藏变量 种子 该变量又将函数指向预先生成的序列 例如例
  • C++ - 模板专业化和部分专业化

    我一直在互联网和 stackoverflow 上寻找具体的答案 但我似乎找不到 我必须创建一个通用类 然后实现特定的功能 我的具体说明是 您需要使用模板表达式参数以及模板类专业化和部分专业化 我有一个模板类 template
  • 如何检查 .NET 4.0 中的泛型参数是否是动态的

    我有课ObjectMapper
  • C++:获取注册表值仅给出第一个字符[重复]

    这个问题在这里已经有答案了 我试图从注册表中获取字符串值 但我只得到第一个字母 HKEY hKey char gamePath MAX PATH if RegOpenKeyEx HKEY CURRENT USER L Software Bl
  • 隐形打开的弹出窗口

    第二天就解决这个问题 要重现 请创建新的 WPF 应用程序 xaml
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • 未定义异常变量时通过引用捕获

    捕获异常时 标准指导是按值抛出 按引用捕获 据我了解 这有两个原因 如果由于内存不足异常而引发异常 我们将不会调用可能终止程序的复制构造函数 如果异常是继承层次结构的一部分 我们可能会对异常进行对象切片 如果我们有一个场景 我们没有在 ca
  • 基于 C++ 范围的 for 循环

    尝试使用基于范围的 for 循环执行某些操作 可以使用常规的 for 循环来完成 如下所示 vector
  • 使用对象列表构建树

    我有一个带有属性 id 和parent id 的对象列表 我想建造一棵树来连接那些孩子和父母 1 个父对象可以有多个子对象 并且有一个对象将成为所有对象的祖先 实现该功能最快的算法是什么 我使用 C 作为编程语言 但其他语言也可以 像这样的
  • 使用 cudamalloc()。为什么是双指针?

    我目前正在浏览有关的教程示例http code google com p stanford cs193g sp2010 http code google com p stanford cs193g sp2010 学习CUDA 演示的代码 g
  • ASP.NET Web API Swagger(Swashbuckle)重复OperationId

    I have a web api controller like below In swagger output I am having the below image And when I want to consume it in my
  • 从存储过程返回 int 值并在 ASP.NET 代码中检查它以验证登录表单

    当我多次尝试但没有得到有效结果时 使此代码运行的真实顺序是什么 SQL存储过程的代码 set ANSI NULLS ON set QUOTED IDENTIFIER ON GO ALTER PROC dbo login proc usern
  • 使 C# 编译器相信执行将在成员返回后停止

    我认为目前这是不可能的 或者这是否是一个好主意 但这是我刚才正在考虑的事情 我使用 MSTest 对我的 C 项目进行单元测试 在我的一项测试中 我执行以下操作 MyClass instance try instance getValue
  • C 中的静态和动态绑定(严格来说是 C,而不是 C++)是什么?

    我最初对发布这个问题感到担忧 以免它重复 但即使在谷歌搜索了许多关键字之后 我在 StackOverflow 上找不到任何解释 C 的静态和动态绑定的链接 尽管有 C 的问题和答案 但是都涉及classes以及显然不适合 C 的东西 Sta
  • 编译器什么时候内联函数?

    在 C 中 函数仅在显式声明时才内联inline 或在头文件中定义 或者编译器是否允许内联函数 因为他们认为合适 The inline关键字实际上只是告诉链接器 或告诉编译器告诉链接器 同一函数的多个相同定义不是错误 如果您想在标头中定义函
  • 计算两个日期之间的工作日数?

    在C 中 如何计算business 或工作日 两个日期之间的天数 我以前曾经遇到过这样的任务 并且我已经找到了解决方案 当可以避免的时候 我会避免列举其间的所有日子 这里就是这种情况 正如我在上面的一个答案中看到的那样 我什至没有提到创建一

随机推荐

  • 禁用 Safari 自动填充用户名和密码

    您可能已经知道 Safari 有一个令人讨厌的自动填充错误 无论您是否设置 它都会填充电子邮件 用户名和密码字段autocomplete off or not 这是一个基本形式
  • 动画 iMessage 应用程序图形

    我正在创建自己的 iMessage 自定义应用程序 我只想发送一个带有在 2 个图像之间交换背景的 iMessage 从而创建动画的错觉 我什至不确定这是否可能 但我正在尝试使用下面的代码 此代码仅在收件人收到消息时显示第一张图像 任何帮助
  • 如何禁用 R 中绘图的缩放?

    我没有找到在绘图上禁用鼠标光标缩放模式的参数 这很糟糕 因为当您在手机上拖动手指时 缩放会增加 利用这个问题 我想从绘图中删除所有按钮 只留下下载图像的按钮 您可以做很多事情 按钮行在plotly称为 模式栏 您可以完全删除它 或从中删除特
  • 如何独立检测两个部分重叠的

    我的情况是这样的 我有 2 个部分重叠的 div 每个都有悬停效果 Div 1 包含一个条形图 其中的条形对悬停有影响 Div 2 是一个跨越屏幕底部 20 的区域 当用户将鼠标悬停在其上方 例如 靠近屏幕底部 时 控件会从底部向上滑动 以
  • Solr:使用正则表达式片段提取段落

    我将此消息发布到 Solr 邮件列表 但我也在此处尝试 以防周围潜伏着 Solr 专家 我正在尝试使用正则表达式碎片器 但很难获得我想要的结果 我试图获取以单词字符开头并以标点符号结尾的片段 但由于某种原因 返回给我的片段似乎非常不灵活 尽
  • 如何获取firebase firestore android中某些字段的值?

    就像上面的问题一样 我想获取 firebase firestore 中某些字段的值 而不是所有文档文档快照 在 SQL 中就像这样SELECT col 1 col 2 col 3 FROM table name 我该怎么做 感谢您的帮助 C
  • Visual Studio 2015 Enterprise Update 1 针对 Windows XP

    我想知道我们是否可以使用可以在 Windows xp 上运行的 Visual Studio 2015 构建项目 二进制文件 如果支持的话我们该如何构建 为 Windows XP 配置 C 11 程序 Visual Studio 中包含的 W
  • ChartJS 中线段的不同颜色

    我有一个时间线图表类型 我想根据数据集对象值定义两个点之间每一步的颜色 在我的数据集数据数组中 我添加了第三个项目 它将定义颜色 if green gt gt red 实际上我试图只使用红色 我已经发现一个工作示例 关于如何做到这一点 但它
  • 根据标题将文本转换为 data.frame

    我上传了一个 txt文件到R如下 Election Parties lt readr read lines Election Parties txt 假设文件中包含以下文本 BOLIVIA P17 Nationalist Revolutio
  • pandas 警告 pd.to_datetime

    Using pandas 0 6 2 我想将数据框更改为datetime类型 这是数据框 gt gt gt tt head 0 2015 02 01 00 46 28 1 2015 02 01 00 59 56 2 2015 02 01 0
  • python 的 webbrowser 在 Windows 相对路径上启动 IE,而不是默认浏览器

    我正在尝试在默认浏览器中从 python 启动本地 html 文件 现在我的默认浏览器是 Google Chrome 如果我双击 html 文件 Chrome 就会启动 当我使用 python 时webbrowser open IE 启动
  • 为什么在命令周围放置 $( ... ) 或反引号会使其返回错误?

    我正在尝试运行一个脚本来上传 bash 脚本中的文件夹 命令是aws s3 cp 1 s3 2 recursive 但是 如果我将命令写为 aws s3 cp 1 s3 2 recursive or aws s3 cp 1 s3 2 rec
  • Excel 2010 - 错误:无法使用 .onAction 运行宏 SelectCell

    我一直在互联网上寻找这个问题的解决方案 但由于某种原因 我永远找不到与使用 onAction 和选择特定单元格直接相关的任何内容 我用另一个问题的答案作为参考 https stackoverflow com a 18199035 在循环遍历
  • Google Chrome 中的日期选择器 UI 格式错误

    我在使用 Jquery UI datepicker 时进行了一些测试 发现日期格式在 Chrome 中无法正常工作 如果我输入 13 10 2009 则会出现错误 指出格式不正确 我认为发生的情况是 所有浏览器和验证的格式都是 dd mm
  • 以编程方式加载文件

    当我想将文件加载到 R 中时 以编程方式 或半编程方式 执行此操作的方法是什么 而不是仅手动复制粘贴路径并切换 to 这样 R 就可以读取它 因为 是 R 中的转义字符 提到的一种方法 Roland正在使用scan list files s
  • 查找我自己的 .NET 进程的所有子进程/查明给定进程是否是我自己的子进程?

    我有一个 NET 类库 它启动一个辅助进程 该进程一直运行 直到我处理该对象 由于程序在内存中徘徊 我决定添加一个集成测试 以确保如果我让对象进入 GC Finalization 该进程就会停止运行 但是 由于该进程是 Mercurial
  • MySQL:我需要每天显示每个用户从 1 到最大 n 个帖子

    我有一张包含用户帖子的表 我需要每天显示每个用户从 1 到最多 n 个帖子 Example post id user id post datetime post text 1 100 2012 12 01 01 00 00 lorem ip
  • TextOptions.TextFormattingMode 影响粗体文本

    我遇到了问题将某些文本的字体粗细设置为粗体使其小于普通字体粗细文本 我发现这是因为我将 TextFormattingMode 设置为 Display 如果 TextFormattingMode 设置为 理想 则不会出现此问题 例如 以下代码
  • 在不使用模块的情况下在 Jest 中跨多个测试配置 jsdom

    我想在无法导出模块的环境中测试脚本 我已经安装了 Jest 版本 23 1 0 并且我的包中没有其他包package json文件 使用jsdom 旧 API我想出了一个按预期工作的解决方案 脚本 js var exVar test 脚本
  • 获取没有标题的窗口的句柄.. (C#)

    我们怎样才能得到一个没有标题的窗口的句柄呢 有没有一种方法可以枚举桌面上的所有窗口并过滤没有标题的窗口 在我的例子中 只有一个 并获取它的句柄 或者通过指定其他属性 例如具有标题的窗口特定按钮或列表框等 这应该可以做到 using Syst