如果 Process.Start 失败,如何制作 else if 语句

How to make a else if statement if Process.Start fails

所以我现在正在开发一个人工智能程序。对于我的一个命令,我正在使用 Process.Start 打开一个文件。我想知道如何根据 Process.Start 是否失败来创建 else if 语句。如果 Process.Start 失败,我希望它 运行 else if 语句中的代码块。有谁知道怎么做?如果我听起来像菜鸟或笨蛋,我很抱歉。我刚开始编码,我只有 14 岁,所以我还不太了解。

        string r = e.Result.Text;



        if (r.Contains("your code"))
        {
            say("Opening up my code");
            Process.Start("C:/Users/Sukorow/Desktop/My Creations/Yuki Public Release/Yuki Public Release.sln");
        }

Here's a image of the Process.Start

Process.Start returns 如果成功则为真,否则为假,所以你可以这样做:

var process = new Process()
{
       StartInfo = new System.Diagnostics.ProcessStartInfo()
       {
           FileName = "[your file]"
       }
};
if (!process.Start())
{
      // Handle the case where it didn't start
}

此外,作为另外一个旁注,我不建议在代码中对 .sln 文件的位置进行硬编码。如果您更改文件夹结构,它将破坏应用程序,并且您将可执行文件分发给的任何人都必须具有与您完全相同的文件夹结构,否则调用将失败。我建议创建一个 App.config 文件,请参阅以下文档: https://msdn.microsoft.com/en-us/library/ms184658.aspx

基本思想是您可以添加键值对来存储文件的位置 - 例如

<add key="folderName" value="C:\...."/>

这样你就可以修改它而不必重新编译。

如果您使用 Process 实例 启动进程,则此 returns bool表示是否启动:

        Process proc = new Process();
        proc.StartInfo = new ProcessStartInfo("Notepad.exe");
        bool startedOk = proc.Start();

您还需要将其包装在 try catch 块中,因为尝试启动一个不存在的进程会引发异常

试一试。

{
    try
    {
        System.Diagnostics.Process.Start(@"C:\Program Files(x86)\Notepad++\notepad++.exe"); 

    }
    catch (Exception)
    {
        MessageBox.Show("Make sure you have the application 
        installed.", "Error", MessageBoxButtons.OK, 
        MessageBoxIcon.Information);
    }
}