【问题标题】:c# Listen for a program to startc# 监听程序启动
【发布时间】:2016-01-04 15:00:56
【问题描述】:

所以我做了一些谷歌搜索,但无法确定以下是否可行。

我正在编写一个使用第三方程序提供的接口机制获取数据的软件。启动时,我的程序尝试连接到第三方程序,如果失败,则我的程序无法启动。然后它会轮询第三方程序(和后台线程)以确定是否有任何数据发生了变化。

当我的程序运行时第三方应用程序关闭时,我的问题就出现了。由于各种原因,我不能简单地关闭我的软件,而是显示一条消息,告诉用户他们需要重新启动第三方程序,然后他们才能继续使用我的程序的部分功能。但是,我确实暂停了投票。当第三方程序再次启动时,我需要重新连接并继续轮询,但是我不知道如何确定第三方应用程序何时重新启动。

  1. 是否可以监听程序启动? [按名称而不是 按进程,因为进程名称太笼统]
  2. 有更好的选择吗?

【问题讨论】:

  • 启动程序时如何收听?
  • 我没有 - 我只是尝试连接,如果我不能,我会关闭我的程序。我当然可以不断轮询以尝试连接,但是然后使用 try{}catch{} 作为程序流,这是一个坏主意。
  • 在搜索名称为 X 的进程后,无论哪种方式,您都可以通过该第三方的某些特定唯一信息过滤掉进程。例如路径、版本、文件描述等
  • 谢谢,但这仍然需要轮询以确定程序已启动。我想我是在问是否有办法代替程序开始收听。例如,Windows 本身是否会引发我可以监听的事件?

标签: c# windows process


【解决方案1】:

有更好的选择吗?

您已经在显示一条消息,告诉用户他们需要重新启动第三方程序。除了(或代替)该消息之外,您还可以显示一个按钮来实际启动第三方程序。启动第三方程序并传递命令行参数的示例。

using System;
using System.Diagnostics;

....
Process.Start("IExplore.exe", "www.northwindtraders.com");

或者您可以告诉用户手动启动第三方程序,然后在您的程序中按“重试”按钮。这个和上面的“方案一”类似,但是不需要自己启动第三方程序。

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 2014-10-19
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2010-12-30
    • 1970-01-01
    相关资源
    最近更新 更多