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

标签 c# .net

我正在使用 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/

相关文章:

c# - 无法为 java 和 c# (winrt) 获得相同的 hmac_sha1 结果

c# - .NET Core API 多行记录输出

javascript - 异步和等待方法

c# - 如何中断事件处理程序

c# - Xamarin.Forms Google API 使用身份提供者对用户进行身份验证

c# - 如何获得更新记录数的计数(*)

c# - 如何以编程方式更改默认音频输入设备

c# - 如何在 LINQ 语句中重用表达式?

c# - 如何在.Net中以中间层结构化方式处理错误或异常

.net - 具有多个 DataLoadOptions 的 Linq2SQl 预加载