【问题标题】:c# How to detect if Netflix is Runningc#如何检测Netflix是否正在运行
【发布时间】:2019-01-21 07:22:21
【问题描述】:

我想检测 Netflix 是否正在运行。我正在使用 Windows 窗体应用程序。

Netflix 是由进程 WWAHost.exe 托管的 Metro 应用程序。我使用以下代码:

Process[] ps = Process.GetProcessesByName("WWAHost");
foreach(var p in ps)
{
  if(p.MainWindowTitle == "Netflix")
  {
    return true;
  }
}

该代码在 Netflix 启动后运行大约 0.6 秒。 0.6 秒后 MainWindowTitle 包含一个空字符串。这意味着它只能在 Netflix 启动后立即检测到。

更新:实际上,我的代码仅在 Netflix 最小化或开始时才有效(0.6 秒是刚开始的时间)。

这是一个错误吗?有没有更好的方法来解决这个问题?

我的系统:Win10 1809,VS2015,.Net4.5.2

【问题讨论】:

  • 您可以使用netstat找到连接到netflix服务器的进程
  • 如果客户通过网络浏览器使用 Netflix 会怎样?
  • @Menahem 我尝试了 netstat,但对我来说,哪个连接是 Netflix 的连接并不明显。据我了解,这种连接也可能会发生变化,因为 Nteflix 服务器并不总是相同的。
  • @mjwills 我不关心网络浏览器中的 Netflix。

标签: c# netflix


【解决方案1】:

我没有看到 MainWindowTitle 的这种行为消失,但这里有一个替代解决方案。如果您在运行 Netflix 应用程序的情况下查看 TaskManager,我们可以看到它以 wwahost.exe 运行,但它给出了一个命令行,可以轻松地将其识别为 Netflix 应用程序 -ServerName:Netflix.App.wwa。

因此,您可以从您的 C# 应用程序中使用 WMI 提取进程命令行(为此您需要参考 System.Management)。

这是一个例子:

class Program
{
    static void Main(string[] args)
    {
        var processes = Process
            .GetProcesses()
            .Where(a => a.IsNetflix());

        Console.ReadKey();
    }
}

static class Extensions
{
    public static bool IsNetflix(this Process process)
    {
        if (process.ProcessName.IndexOf("WWAHost", StringComparison.OrdinalIgnoreCase) == -1) return false;

        using (ManagementObjectSearcher searcher = new ManagementObjectSearcher($"SELECT CommandLine FROM Win32_Process WHERE ProcessId = {process.Id}"))
        using (ManagementObjectCollection objects = searcher.Get())
        {
            var managementObject = objects
                .Cast<ManagementBaseObject>()
                .SingleOrDefault();

            if (managementObject == null) return false;
            return managementObject["CommandLine"].ToString().IndexOf("netflix", StringComparison.OrdinalIgnoreCase) > -1;
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    相关资源
    最近更新 更多