如何检查浏览器是否打开

ike

如何检查浏览器是否打开?我知道我可以检查进程,但有时进程正在运行,但在计算机浏览器上仍在启动。我只需要2个浏览器(Chrome和Firefox)使用它。

可汗

下面的代码获取所有正在运行的进程的文件名。如果返回哈希集列表中存在firefox.exe,则表示firefox正在运行。

var RunningProcessPaths = ProcessFileNameFinderClass.GetAllRunningProcessFilePaths();

if (RunningProcessPaths.Contains("firefox.exe"))
{
    //firefox is running
    Debug.WriteLine("firefox is running");
}

if (RunningProcessPaths.Contains("chrome.exe"))
{
    //Google Chrome is running
    Debug.WriteLine("chrome is running");
}

助手类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;

public class ProcessFileNameFinderClass
{
    public static HashSet<string> GetAllRunningProcessFilePaths()
    {
        var allProcesses = System.Diagnostics.Process.GetProcesses();
        HashSet<string> ProcessExeNames = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
        foreach (Process p in allProcesses)
        {
            string processExePath = GetProcessExecutablePath(p);
            ProcessExeNames.Add(System.IO.Path.GetFileName(processExePath));
        }
        return ProcessExeNames;
    }


    /// <summary>
    /// Get executable path of running process
    /// </summary>
    /// <param name="Process"></param>
    /// <returns></returns>
    public static string GetProcessExecutablePath(Process Process)
    {
        try
        {
            if (Environment.OSVersion.Version.Major >= 6)
            {
                return GetExecutablePathAboveXP(Process.Id);// this gets the process file name without running as administrator 
            }
            return Process.MainModule.FileName;// Vista and later this requires running as administrator.
        }
        catch
        {
            return "";
        }
    }

    public static string GetExecutablePathAboveXP(int ProcessId)
    {
        int MAX_PATH = 260;
        StringBuilder sb = new StringBuilder(MAX_PATH + 1);
        IntPtr hprocess = OpenProcess(ProcessAccessFlags.PROCESS_QUERY_LIMITED_INFORMATION, false, ProcessId);
        if (hprocess != IntPtr.Zero)
        {
            try
            {
                int size = sb.Capacity;
                if (QueryFullProcessImageName(hprocess, 0, sb, ref size))
                {
                    return sb.ToString();
                }
            }
            finally
            {
                CloseHandle(hprocess);
            }
        }
        return "";
    }

    [Flags()]
    private enum ProcessAccessFlags : uint
    {
        PROCESS_ALL_ACCESS = 0x1f0fff,
        PROCESS_TERMINATE = 0x1,
        PROCESS_CREATE_THREAD = 0x2,
        PROCESS_VM_OPERATION = 0x8,
        PROCESS_VM_READ = 0x10,
        PROCESS_VM_WRITE = 0x20,
        PROCESS_DUP_HANDLE = 0x40,
        PROCESS_SET_INFORMATION = 0x200,
        PROCESS_SET_QUOTA = 0x100,
        PROCESS_QUERY_INFORMATION = 0x400,
        PROCESS_QUERY_LIMITED_INFORMATION = 0x1000,
        SYNCHRONIZE = 0x100000,
        PROCESS_CREATE_PROCESS = 0x80,
        PROCESS_SUSPEND_RESUME = 0x800
    }

    [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    private static extern bool QueryFullProcessImageName(IntPtr hProcess, uint dwFlags, [Out(), MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpExeName, ref int lpdwSize);

    [DllImport("kernel32.dll")]
    private static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, int dwProcessId);

    [DllImport("kernel32.dll", SetLastError = true)]
    private static extern bool CloseHandle(IntPtr hHandle);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Webdriver检查浏览器是否仍然打开

来自分类Dev

如何检查网站是否已经在浏览器中打开?

来自分类Dev

Webdriver-如何检查浏览器是否仍然存在或仍然打开?

来自分类Dev

Xamarin 表单:如何检查浏览器是否在我的 web 视图中成功打开

来自分类Dev

Java代码-如何检测浏览器是否打开

来自分类Dev

如何检查浏览器是否支持<input type =“ time” />

来自分类Dev

如何检查浏览器是否支持Webanimation API?

来自分类Dev

如何检查浏览器是否支持webkit目录?

来自分类Dev

javascript如何检查浏览器是否获得焦点

来自分类Dev

如何检查浏览器是否支持影子DOM

来自分类Dev

如何检查浏览器是否支持css值?

来自分类Dev

如何检查是否为浏览器定义了click()?

来自分类Dev

如何检查浏览器的“ html”或“ body”处是否溢出?

来自分类Dev

检查浏览器是否支持MutationObserver

来自分类Dev

检查浏览器通知是否可用

来自分类Dev

如何检查哪个浏览器是主要浏览器?

来自分类Dev

获取默认浏览器,检查是否打开并发送URL

来自分类Dev

如何单击按钮打开浏览器?

来自分类Dev

如何快速打开谷歌浏览器

来自分类Dev

是否可以检查是否有人打开了某个浏览器链接,以及是否没有执行功能?

来自分类Dev

如何检查浏览器对AngularJS的支持?

来自分类Dev

如何检查浏览器对AngularJS的支持?

来自分类Dev

检查已经打开的浏览器和URL

来自分类Dev

如何检测浏览器是否可以在iframe中打开“网络文件夹”?

来自分类Dev

如何知道浏览器选项卡是否已使用Javascript打开?

来自分类Dev

.__ defineGetter__如何用于检测浏览器中的控制台是否打开

来自分类Dev

.__ defineGetter__如何用于检测浏览器中的控制台是否打开

来自分类Dev

如何检查文本是否突出显示(跨浏览器)

来自分类Dev

如何检查浏览器中是否有待处理的请求(Ajax及其变体)

Related 相关文章

  1. 1

    使用Webdriver检查浏览器是否仍然打开

  2. 2

    如何检查网站是否已经在浏览器中打开?

  3. 3

    Webdriver-如何检查浏览器是否仍然存在或仍然打开?

  4. 4

    Xamarin 表单:如何检查浏览器是否在我的 web 视图中成功打开

  5. 5

    Java代码-如何检测浏览器是否打开

  6. 6

    如何检查浏览器是否支持<input type =“ time” />

  7. 7

    如何检查浏览器是否支持Webanimation API?

  8. 8

    如何检查浏览器是否支持webkit目录?

  9. 9

    javascript如何检查浏览器是否获得焦点

  10. 10

    如何检查浏览器是否支持影子DOM

  11. 11

    如何检查浏览器是否支持css值?

  12. 12

    如何检查是否为浏览器定义了click()?

  13. 13

    如何检查浏览器的“ html”或“ body”处是否溢出?

  14. 14

    检查浏览器是否支持MutationObserver

  15. 15

    检查浏览器通知是否可用

  16. 16

    如何检查哪个浏览器是主要浏览器?

  17. 17

    获取默认浏览器,检查是否打开并发送URL

  18. 18

    如何单击按钮打开浏览器?

  19. 19

    如何快速打开谷歌浏览器

  20. 20

    是否可以检查是否有人打开了某个浏览器链接,以及是否没有执行功能?

  21. 21

    如何检查浏览器对AngularJS的支持?

  22. 22

    如何检查浏览器对AngularJS的支持?

  23. 23

    检查已经打开的浏览器和URL

  24. 24

    如何检测浏览器是否可以在iframe中打开“网络文件夹”?

  25. 25

    如何知道浏览器选项卡是否已使用Javascript打开?

  26. 26

    .__ defineGetter__如何用于检测浏览器中的控制台是否打开

  27. 27

    .__ defineGetter__如何用于检测浏览器中的控制台是否打开

  28. 28

    如何检查文本是否突出显示(跨浏览器)

  29. 29

    如何检查浏览器中是否有待处理的请求(Ajax及其变体)

热门标签

归档