gpt4 book ai didi

c# - 检测 .NET 上的 Adob​​e Acrobat Reader 是否正在运行

转载 作者:行者123 更新时间:2023-12-04 05:15:55 27 4
gpt4 key购买 nike

我正在使用 PDFSharp 创建 PDF。在他们的例子中,他们保存了一个 PDF,然后他们开始一个过程来选择你的查看器来打开它。它看起来像这样:

document.Save(fileName);
Process.Start(fileName);

所以在我的测试中,我意识到如果 Acrobat Reader 已经打开,我会收到一个 i/o 异常,因为该进程已经在运行。所以我尝试关注这篇文章:
Detecting a Process is already running in windows using C# .net

关于检测过程。所以我把上面的代码改成这样:
        document.Save(fileName);
if (System.Diagnostics.Process.GetProcessesByName("AcroRd32.exe").Length == 0)
{
Process.Start(fileName);
}

所以我有两个问题。
1)这不起作用。长度始终为 0,所以我想知道是返回错误的进程还是找不到进程。当我查看任务管理器时,AcroRd32.exe 是正在运行的进程的名称。

2)有没有更好的方法来做到这一点?似乎我正在将这个过程硬编码到代码中,我不确定是否有更好的方法来捕获其他版本的 Acrobat(例如是否有 64 位版本)或其他一般的 PDF 查看器。

对不起,如果这是菜鸟问题。这个 .NET 对我来说很新。谢谢。

最佳答案

This是一个非常好的来源,涵盖了您要问的所有内容。
这是从上面的链接中获取的一个小示例代码:

Process[] collectionOfProcess = Process.GetProcessesByName("AcroRd32");
if (collectionOfProcess.Length >= 1)
{
Process acrProcess = collectionOfProcess[0];

MessageBox.Show(acrProcess.MainWindowTitle);// file name of the which is opened.

MessageBox.Show("Acrobet reader running");
}
此外,我曾见过程序无法检测或“工作”权限高于它的进程的情况。确保 adobe reader 没有在管理员权限下运行,如果是,请确保您的程序也是如此。
希望这有帮助!

关于c# - 检测 .NET 上的 Adob​​e Acrobat Reader 是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269754/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com