wpf检测是否打开了另一个软件

时间:2017-10-25 09:23:06

标签: c# wpf process

我有一个WPF程序需要检测是否有其他软件被打开。如果它被打开,我的程序将自动连接到它:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    if(!DataModel.IsConnected)
    {
      connect();
    }
}

但是,这样它只能在我运行WPF窗口之前打开该软件时建立连接。如果我希望WPF程序始终可以检测软件是否已打开 - 即使在运行WPF窗口后打开了软件。

1 个答案:

答案 0 :(得分:1)

您需要定期调用connect()方法,例如使用计时器,或让其他应用程序定期通知您的WPF应用程序。

这是一个应该为您提供想法的基本示例。一旦窗口加载,它就调用connect()方法,如果方法返回false,它会启动一个定时器,每1.5秒再次调用该方法,直到方法返回true

System.Timers.Timer _timer;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    if (!connect())
    {
        //start a timer that calls connect() at regular intervals until it returns true.
        _timer = new System.Timers.Timer(TimeSpan.FromSeconds(1.5).TotalMilliseconds);
        _timer.Elapsed += Timer_Elapsed;
    }

}

private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    if (connect())
    {
        _timer.Stop();
        _timer.Dispose();
    }
}