最近有人问我下面这个问题 ,调试我们依然可以使用之前我提到的理解 “思维调试” 来研究研究。 我们碰到了一个技术问题 。初始程当在资源管理器中双击打开文档时 ,化过资源管理器不会启动我们的调试应用程序。 更加奇怪的理解是 ,如果我们将一个调试器挂接到资源管理器进程,初始程并在 kernel32 模块的化过 CreateProcessW 处下断点,然后等待 CreateProcess 返回,调试并在调试器中继续执行 ,亿华云理解则文档可以正常打开。初始程但是化过 ,如果我们不做任何等待,调试应用程序也可以正常打开 ,理解但是初始程它不会加载文档,在这种情况下 ,我们得到了这样的错误信息:Windows 找不到 ‘abc.lit’ 。请确保你输入了正确的文档名称 ,然后重试。 下面是香港云服务器我们使用的命令行 :“F:\Program Files\LitSoft\LitWare\LitWare.exe” /dde到底是哪里出了问题呢 ?如果你仔细研究过 DDE 初始化的工作原理文章 ,那么我想你应该已经知道原因了。 回想一下 ,通过 DDE 打开文档是通过首先查找 DDE 服务器来完成的 ,如果未找到,则手动启动服务器并重试 。上面的命令行显然已注册为与 ddeexec 关联的命令。源码下载 我们有两个线索:首先是文档名称本身在命令行上不存在。(这不可能是直接执行,因为程序不知道它应该打开什么文档 !但是这条线索是命令行上的短语 /dde 。显然,资源管理器尝试第二个 DDE 对话打开文档时出现问题 。让资源管理器等待几秒钟可以解决问题的事实使原因显而易见 :DDE 服务器初始化和侦听自身的速度很慢。免费模板资源管理器启动服务器并尝试与其通信 ,但服务器尚未准备就绪,因此不响应 DDE 启动。 如何解决这个问题? 外壳程序假定 DDE 服务器在输入空闲时已准备好接受连接 。一旦 DDE 服务器上的 WaitForInputIdle 返回 ,资源管理器将第二次尝试启动 DDE 会话 。此修复程序是让应用程序在开始处理消息之前启动并运行其 DDE 服务器。 我的猜测是应用程序将其 DDE 服务器移动到后台线程以提高启动性能 ,因为 DDE 服务器不参与正常的程序操作 。高防服务器 但是这太糟糕了,当传递 /dde 标志时,程序忘记在输入空闲之前启动并运行 DDE 服务器。让 DDE 服务器运行很重要 ,但它错过了正确的时间点。总结如果你要实现了一个 DDE 服务器,请确保在主线程开始处理消息之前就启动它。否则,应用程序启动和尝试与之通信的外壳之间存在竞争条件。 |
小新15使用U盘装系统教程(轻松操作,系统安装无忧)雨林木风装机教程(一步步教你如何选择雨林木风配件,组装一台性能出色的电脑)Win10硬盘装系统教程(详细步骤教你在Win10上进行硬盘装系统)利用数据中心可以发展什么行业魅蓝2红米2电信版如何?(用一台手机满足所有需求,)华硕主板重装系统教程(一步步教你如何重装系统,让华硕主板焕发新生)利用最新大白菜U盘装系统教程,轻松完成系统安装(以大白菜U盘装系统为例,快速上手系统安装)咪咕听书(一键畅听,走进无限的阅读世界)探索宾得DA551.4全身人像镜头的魅力(高清锐利无限表现力,DA551.4引领人像摄影新潮流)iOS系统升级——6s9.3.2与10.3.1的对比(探索新旧系统之间的优劣与差异)云服务器源码库亿华云企业服务器b2b信息平台香港物理机网站建设