尝试从 user32.dll 的 GetWindowText() 读取窗口时发生未处理的“System.ExecutionEngineException”类型异常

2023-12-31

在我的应用程序中,我正在读取同一过程的窗口文本。我正在使用 User32.dll 的 GetWindowText。但是当它尝试调用该方法时,我收到异常“aaaa.exe 中发生了类型为‘System.ExecutionEngineException’的未处理异常”。在哪里可以看到具体的错误。以及为什么我会得到这个例外。

我的代码如下。

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetWindowText(IntPtr hWnd, 
    [Out] StringBuilder lpString, int nMaxCount);

EnumDelegate enumfunc = new EnumDelegate(EnumWindowsProc);

private bool EnumWindowsProc(IntPtr win, int lParam)
{
    StringBuilder sb = new StringBuilder();
    GetWindowText(win, sb, 100);
    if (sb.Length > 0)
    {
        // do something
    }
}

您收到此异常是因为您的 GetWindowText() 调用损坏了垃圾收集堆。当您传递字符串而不是 StringBuilder 或忘记初始化 StringBuilder 时,很容易做到。

正确的方式:

  [DllImport("user32.dll", CharSet = CharSet.Unicode)]
  private static extern bool GetWindowText(IntPtr hWnd, StringBuilder buffer, int buflen);
...
  var sb = new StringBuilder(666);
  if (GetWindowText(handle, sb, sb.Capacity)) {
    string txt = sb.ToString();
    //...
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试从 user32.dll 的 GetWindowText() 读取窗口时发生未处理的“System.ExecutionEngineException”类型异常 的相关文章

随机推荐

  • 在更改事件上启用电话呼叫功能 (jQuery)

    我正在尝试在更改事件 HTML
  • 将 zip 文件解压到内存中?

    如何将 zip 解压到内存中 我的尝试 返回None on getvalue from zipfile import ZipFile from StringIO import StringIO def extract zip input z
  • 固定背景图像

    我很想知道如何在固定的 div 中创建背景图像 当您向下 或向上 滚动时 图像会保留 但内容会流过 div 这是一个实现我想要解释的内容的网站 以便让您更好地了解我想要描述的内容 网络媒体 http www jwebmedia com 我一
  • PHP Mongo 问题列表:当replicaSet 为true 时,_construct 返回什么?

    in the PHP手册 http www php net manual en mongo construct php 它有这个例子
  • 使用宏/vba 将多行从一个工作表复制到另一工作表

    我浏览了论坛并尝试了各种选项 但没有找到适合我的问题的明确匹配 我的任务是将数据从工作表 称为 工作订单 复制到第二个工作表 称为 作业 要复制的数据来自 工作订单 工作表 从单元格范围 E2 P2 S2 开始 并且还从每一行 相同范围 复
  • QSslSocket等待数据时超时(但QTcpSocket不会)

    这是一对简单的客户端和服务器应用程序 它们尝试通过 QTcpSocket 或 QSslSocket 进行通信并相互发送几个字节的数据 它似乎可以通过 TCP 工作 但是当我尝试使用 SSL 时 读取总是在服务器端超时 请告诉我我做错了什么
  • 选择小计保持正确顺序的行

    我正在尝试获取如下查询的输出 请帮助我 partno value value1 phaseid ABCD 10 11 A ABCD 11 12 B Subtotal 21 23 DEFG 20 21 C Subtotal 20 21 IJK
  • 当 Web 端口 80 已被使用时,如何监听 Heroku 上的任何端口?

    我是heroku新手 我已经在heroku上部署了meteorjs应用程序 我的 Meteorjs 应用程序是一个 Web 应用程序 因此构建完成后 它在端口 80 上的 heroku 上运行 但同时我也想监听端口 例如 4000 或任何端
  • 独立 Node.js 应用程序

    我正在考虑开发一个由两部分组成的桌面应用程序 用户界面 例如 Java 应用程序 后端 Node js 服务器 这两个部分通过插座连接 别问我为什么知道这很奇怪 我希望能够向客户提供带有安装程序的应用程序 我不希望用户必须自己安装 Node
  • Pro Django 书还有用吗?

    我想更深入地了解 Django 的内部结构 而官方在线文档仅能达到此目的 Marty Alchin 的 Pro Django 的评论非常棒 我读过 Pro Python 并且非常喜欢它 然而 这本书是 2008 年的 基于 Django v
  • 在observeSingleEvent 中变量的值没有改变

    变量 num 更改为observeSingleEvent 中我想要的内容 但就在它变回空值之后 我如何改变 num 的值 var num Int FIRDatabase database reference child menus Day1
  • Behat 和 Symfony2 捆绑问题?

    我在 Symfony2 捆绑包 版本 2 2 2 内的 Behat 2 4 dev 初始化进程遇到了一些问题 命令后 bin behat init CompanyAppBundle behat 目录是在应用程序根目录中创建的 而不是在捆绑包
  • NUnit 可以期待超时吗?

    我想测试一种我希望在特定情况下阻止的方法 我尝试了以下组合TimeoutAttribute and ExpectedExceptionAttribute Test Timeout 50 ExpectedException typeof Th
  • 如何检测鼠标位置是否悬停

    我有这个讨论 https stackoverflow com questions 10122553 create a realistic pencil tool for a painting app with html5 canvas这表明
  • 当窗口大小调整为最大宽度减去滚动条宽度时,Firefox 中的媒体查询丢失

    这是我第一次尝试响应式网站设计 但遇到了一个奇怪的问题 即在 Windows 7 的 Firefox 32 中 媒体查询在特定窗口宽度下丢失 到目前为止 当缓慢调整窗口大小时 可能会导致在断点处闪现 大部分 无样式的内容 如果我仔细调整窗口
  • AngularJS 从外部访问控制器 $scope

    var theApp angular module theApp var app angular module theApp ui bootstrap app controller MenuSideController scope Snaz
  • 前台服务保留内存对象

    我的 Android 应用程序本质上是一个前台服务 应用程序的用户界面方面用于设置和配置该前台服务 当通过应用程序 UI 启动服务时 它开始显示 23mb 的内存使用情况 当 Android 启动服务时 例如在启动时 它开始显示 7mb 的
  • VSCode C#“转到定义”(F12) 不起作用

    我正在使用 VSCode 1 19 并尝试在 C 文件中 转到 gt 转到定义 就像在 Visual Studio 中一样 但它什么也没做 在 js 文件中它运行良好 我猜测是否有一些解决方法 该文件夹中可能有多个 项目 而 VSCode
  • NSPredicate 带有 !=?

    我有核心数据实体人和边界 他们具有多对多的关系 每个人可以有多个边界 每个边界可以有多个人 我正在尝试创建一个列表 列出 Fred 也没有关系的界限 Person person Person MR findFirstByAttribute
  • 尝试从 user32.dll 的 GetWindowText() 读取窗口时发生未处理的“System.ExecutionEngineException”类型异常

    在我的应用程序中 我正在读取同一过程的窗口文本 我正在使用 User32 dll 的 GetWindowText 但是当它尝试调用该方法时 我收到异常 aaaa exe 中发生了类型为 System ExecutionEngineExcep