【问题标题】:Check if the process exists before process.start();在 process.start() 之前检查进程是否存在;
【发布时间】:2014-03-02 18:21:53
【问题描述】:

我做了一个执行可执行文件 (.exe) 的小程序,但是当你写下不存在的文件时,我得到一个错误,找不到特定的文件。

所以我想知道是否有一种方法可以在运行之前先检查进程是否存在,如果不存在,您可以显示一个消息框。

这是我的代码

 private void btn_Start_Click(object sender, EventArgs e)
    {


        string text = textBox1.Text;
        Process process = new Process();
        if (!textBox1.Text.Contains(".exe"))
        {
            process.StartInfo.FileName = text + ".exe";
        }
        else
        {
            process.StartInfo.FileName = text;
        }
        process.Start();


    }

【问题讨论】:

  • 进程在创建之前不能存在。你的意思是文件。
  • @varocarbas 好吧,我不知道你怎么称呼它,但我说的是一个可执行文件......
  • 我明白了。我的评论只是一个澄清。这不是我如何称呼它,而是 .NET 如何称呼它:一件事是文件(在这种情况下是可执行文件;硬盘驱动器中的文件),另一件事是进程(运行可执行文件时创建的进程,例如例如;在内存中运行程序)。您要检查文件是否存在(= 存在于给定路径中;在硬盘驱动器中)以创建进程并运行它(如果进程存在:它不存在,因为您尚未创建它)。
  • 感谢您的解释^^好吧,是的,在运行之前看看硬盘中是否存在该路径。

标签: c# process process.start


【解决方案1】:

在开始进程之前检查文件是否存在:

var processFileName = !textBox1.Text.Contains(".exe")
    ? text + ".exe"
    : text;

if (File.Exists(processFileName))
{
    Process process = new Process();
    process.Start(processFileName);
}

【讨论】:

  • 谢谢我今晚试试看
  • ` if (File.Exists(text)) { process.Start(); } else { MessageBox.Show("未找到", ""); } ` 但没有用......给我同样的问题!
  • 我确实使用过它,但它给了我同样的问题,我的意思是我猜没有区别......
【解决方案2】:

请尝试以下代码: ->(您必须在使用“File.Exists”命令之前添加#using System.IO;)

button1_Click(object sender, EventArgs )
{
            string exepath = "C:\\example\\example.xlsx";
            if(File.Exists(exepath))
            {
                Process.Start(exepath);
            }
            else
            {
                MessageBox.Show("File not found!");
            }
}

希望它有效!

你可以将路径和文件名串成其他字符串,然后你甚至可以检查文件夹,如果文件夹存在,则检查文件! 您也可以使用您的 textbox1 作为文件名,但您必须添加路径,除非它将在程序目录中搜索。(bin/debug) 如果我错了,请原谅我,我现在正在学习 C#! 祝你有美好的一天!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多