如何在C#中使用指定的第三方程序打开文件?

如何在C#中使用指定的第三方程序打开文件?,c#,asp.net,process,C#,Asp.net,Process,因此,我尝试使用第三方比较工具UltraCompare打开一个文件(实际上是两个文件夹,但我想现在先从一个文件开始)。我在VisualStudio2010(速成版)的一个C#网站项目中工作。我已经了解了如何使用不同的程序打开文件,这里: 问题是,这只允许您使用该文件类型的默认程序打开它。但我想在指定的程序中打开它。例如,文本文件应该在UltraCompare中打开,而不是在记事本中打开。以下是执行此操作的代码: string textBoxContents1 = TextBox1.Text; P

因此,我尝试使用第三方比较工具UltraCompare打开一个文件(实际上是两个文件夹,但我想现在先从一个文件开始)。我在VisualStudio2010(速成版)的一个C#网站项目中工作。我已经了解了如何使用不同的程序打开文件,这里:

问题是,这只允许您使用该文件类型的默认程序打开它。但我想在指定的程序中打开它。例如,文本文件应该在UltraCompare中打开,而不是在记事本中打开。以下是执行此操作的代码:

string textBoxContents1 = TextBox1.Text;
Process.Start(textBoxContents1);
webform上的文本框接受一个字符串,用户在其中键入文件的完整路径(这不是我所知道的最方便用户的设计,但我不确定如何允许他们使用asp.NET中的GUI界面浏览文件夹)。然后将该文件传递到Process.Start()方法,该方法使用该文件类型的默认程序打开该文件


是否有任何方法可以修改此文件以使用UltraCompare将其打开

您可以指定要在其中打开文件的程序:

Process.Start("yourprogram.exe", textBoxContents1);
更新

要在Ultracompare中打开两个文件,您可能需要执行以下操作:

Process.Start("yourprogram.exe", "file1.txt file2.txt");
请记住,方法的第二个参数是传递给程序的参数


我说这可能会起作用,因为我假设Ultracompare很可能需要2个参数,但事实可能并非如此。

快速问题:您是否正在尝试为客户端计算机执行此操作?希望不是
我猜它会查找路径变量来查找您的exe

哦,太棒了!我以前试过这样做,但没有意识到你必须把程序的完整文件路径。我只是在输入“超级比较”时出错了。但当我转到“C:\Program Files\IDM Computer Solutions\UltraCompare\uc.exe”时,它就可以工作了。谢谢你,阿德里安!:)嗯,实际上有个问题。UltraCompare允许您同时打开两个文件并并排查看。但是使用这个Process.Start()方法会打开UC的两个独立实例,每个文件一个。你知道有没有办法在同一个窗口中同时打开这两个文件吗?是的,可以!但只有我硬编码文件名。。。如果我必须用每一个新文件手动更改它们,这会破坏程序的目的。是否有一种方法可以使用textBoxContents值动态执行此操作?我试着用引号括起来,但两种方法都不起作用:(@user1985189 Dude,这只是一个例子。从变量中汇编字符串这就是你需要的:
Process.Start(“yourprogram.exe”,textBoxContents1+“”+textBoxContents2)
。您在字符串中传递变量的名称。通过连接(这就是我刚才向您展示的),您正在使用变量内容组合字符串。您的意思是文件位于我的客户端计算机上吗?与服务器上的文件相比?对不起,我是一名合作学生,不太清楚您的意思…Process.start在服务器上打开程序。如果您托管网站并在同一台计算机上使用它,而不是在其他计算机上使用它,这将不会是一个问题这意味着如果其他人在他们的机器上运行我的程序,它将不工作?因为这将是一个问题…如果它是在机器a中托管的,并且有人从机器B浏览网站,这将不工作(由于该过程是在机器A中启动的,而机器B用户无法看到机器A上发生了什么。请看:-啊,好的。嗯,不确定我是否在托管它。是否有方法检查或通常默认创建.NET项目的人是主机?如果这是一个愚蠢的问题,很抱歉,但我是一个巨大的noob这