CreateProcess 和 WaitForSingleObject 在两个 PDF 文件中的第二个失败

Posted

技术标签:

【中文标题】CreateProcess 和 WaitForSingleObject 在两个 PDF 文件中的第二个失败【英文标题】:CreateProcess and WaitForSingleObject fails on the second of two PDF files 【发布时间】:2009-04-15 00:36:18 【问题描述】:

全部

我在 Delphi 2007 中使用 CreateProcess 和 WaitForSingleObject 打开文件并等待它们被关闭。 我发现当我连续打开两个 PDF 文件时,第二个 WaitForSingleObject 立即返回。我还发现 jpg 和 tif 文件会发生这种情况,但 txt 文件不会发生这种情况。此外,第二个 PDF 的打开时间比单独打开的时间长 10 秒! 它也发生在 Vista 和 XP 以及一系列计算机上。 我是在错误地使用 CreateProcess 还是其他原因?

任何帮助将不胜感激。

问候

鲍勃

【问题讨论】:

【参考方案1】:

会发生什么取决于注册以打开 PDF 或 JPG 文件的应用程序。如果您在 SDI 应用程序中打开文档,则每个 CreateProcess() 调用都会返回应用程序的进程句柄,您可以等待 - 这将在编辑文档的应用程序关闭时返回。 p>

但是,如果应用程序仅限于单个实例,则在新实例将数据传递给第一个实例(通常会在新框架中打开文档)后,每个进一步的调用都会返回,然后退出。我认为这就是您的情况,可能您正在使用 Acrobat Reader 打开 PDF 文件?

【讨论】:

以上是关于CreateProcess 和 WaitForSingleObject 在两个 PDF 文件中的第二个失败的主要内容,如果未能解决你的问题,请参考以下文章

CreateProcess 和命令行参数

(C) Windows 句柄和 Createprocess

调整使用 createprocess 创建的应用程序的大小和位置?

不直接使用字符串时CreateProcess@Unhandled异常

CreateProcess 和奇怪的 nslookup 错误

如何将 std::string 环境块传递给 CreateProcess?