如何启动在C#中的文件(How do I launch files in C#)

2019-06-18 12:27发布

CNC中我觉得自己像个白痴。 我有以下感觉像答案的工作,但没有看到任何谷歌的结果类似下面的答案。 所以当我看到这个复杂的代码,我想这已经是这个样子。

我搜索,发现这个Windows系统:带有扩展名关联列表和启动应用程序但是它没有回答我的问题。 随着调整下面我想出了下面。 然而,它卡住上的图像文件。 txt文件运行正常

我会尽快更新这个代码,以解决与空间,但是我不明白为什么图像文件不启动应用程序的路径。

static void launchFile(string fn)
{
    //majority was taken from
    //https://stackoverflow.com/questions/24954/windows-list-and-launch-applications-associated-with-an-extension
    const string extPathTemplate = @"HKEY_CLASSES_ROOT\{0}";
    const string cmdPathTemplate = @"HKEY_CLASSES_ROOT\{0}\shell\open\command";

    string ext = Path.GetExtension(fn);

    var extPath = string.Format(extPathTemplate, ext);

    var docName = Registry.GetValue(extPath, string.Empty, string.Empty) as string;
    if (!string.IsNullOrEmpty(docName))
    {
        // 2. Find out which command is associated with our extension
        var associatedCmdPath = string.Format(cmdPathTemplate, docName);
        var associatedCmd = Registry.GetValue(associatedCmdPath, string.Empty, string.Empty) as string;

        if (!string.IsNullOrEmpty(associatedCmd))
        {
            //Console.WriteLine("\"{0}\" command is associated with {1} extension", associatedCmd, ext);
            var p = new Process();
            p.StartInfo.FileName = associatedCmd.Split(' ')[0];
            string s2 = associatedCmd.Substring(p.StartInfo.FileName.Length + 1);
            s2 = s2.Replace("%1", string.Format("\"{0}\"", fn));
            p.StartInfo.Arguments = s2;//string.Format("\"{0}\"", fn);
            p.Start();
        }
    }
}

Answer 1:

使用:

System.Diagnostics.Process.Start(filePath);

它将使用,将被打开,如果你只是点击它的默认程序。 诚然,它不会让你选择将运行......但假设你想模仿如果用户在文件上双击,将要使用的行为,这应该只是罚款程序。



Answer 2:

听起来真是你正在寻找更多这样的:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = "<whatever>";
proc.Start();


Answer 3:

假设你只是想启动哪个已经有一些相关的应用程序文件(如:* .TXT与记事本关联),使用的System.Diagnostics.Process。

例如:

 using System.Diagnostics;
    Process p = new Process();
    ProcessStartInfo pi = new ProcessStartInfo();
    pi.UseShellExecute = true;
    pi.FileName = @"MY_FILE_WITH_FULL_PATH.jpg";
    p.StartInfo = pi;

    try
    {
        p.Start();
    }
    catch (Exception Ex)
    {
        //MessageBox.Show(Ex.Message);
    }

注:在我的电脑中,PIC在Windows图片和传真查看器中打开,因为这是为* .jpg文件的默认应用程序。



文章来源: How do I launch files in C#
标签: c# .net shell