Winforms 如何在从windows窗体应用程序进行比较时禁止启动beyond compare 3

Winforms 如何在从windows窗体应用程序进行比较时禁止启动beyond compare 3,winforms,beyondcompare3,Winforms,Beyondcompare3,我在win forms应用程序中使用Beyond Compare 3在两个输出文件夹(ProdOutput和SITOutput)中进行比较。我使用下面几行代码进行比较 public static void LaunchViewer(string filepath1, string filepath2) { string arguments = String.Format("\"{0}\" \"{1}\"", filepath1, filepath2); P

我在win forms应用程序中使用Beyond Compare 3在两个输出文件夹(ProdOutput和SITOutput)中进行比较。我使用下面几行代码进行比较

public static void LaunchViewer(string filepath1, string filepath2)
    {
        string arguments = String.Format("\"{0}\" \"{1}\"", filepath1, filepath2);
        ProcessStartInfo psi = new ProcessStartInfo(ApplicationPath, arguments);
        using (Process p = Process.Start(psi))
        {
            ComparsionResult = CompareFiles(filepath1, filepath2, BeyondCompareRules.EverythingElse);
        }
    }



public static ComparisonResult CompareFiles(string filepath1, string filepath2, string ruleName)
        {

            ComparisonResult result = ComparisonResult.None;

            string arguments = String.Format("/quickcompare /rules=\"{0}\" \"{1}\" \"{2}\"", ruleName, filepath1, filepath2);

            ProcessStartInfo psi = new ProcessStartInfo(ApplicationPath, arguments);
            psi.UseShellExecute = false;
            psi.RedirectStandardInput = true;
            psi.RedirectStandardOutput = true;

            using (Process p = Process.Start(psi))
            {
                p.StandardInput.WriteLine("EXIT [ErrorLevel]");
                p.WaitForExit();

                int exitCode = p.ExitCode;
                switch (exitCode)
                {
                    case 0:
                        result = ComparisonResult.Match;
                        break;
                    case 1:
                        result = ComparisonResult.Similar;
                        break;
                    case 2:
                        result = ComparisonResult.DoNotMatch;
                        break;
                    case 3:
                        result = ComparisonResult.ComparisonError;
                        break;
                    default :
                        result = ComparisonResult.DoNotMatch;
                        break;
                }
            }
            return result;
        }
无与伦比的规则如下

public sealed class BeyondCompareRules
{

    private BeyondCompareRules()
    {
    }

    /// <summary>
    /// A comparison rule set for C/C++/C# source files
    /// </summary>
    public const string CLanguageSource = "C/C++/C# Source";
    public const string Cobol = "COBOL";
    public const string CommaSeparatedValues = "Comma Separated Values";
    public const string DelphiSource = "Delphi Source";
    public const string DelphiForms = "Delphi Forms";
    public const string GeneralText = "General Text";
    public const string Html = "HTML";
    public const string Java = "JAVA";
    public const string Python = "Python";
    public const string RegistryDump = "Registry Dump";
    public const string Utf8Text = "UTF8 Text";
    public const string VisualBasic = "Visual Basic";
    public const string Xml = "XML";

    /// <summary>
    /// The default set of comparison rules
    /// </summary>
    public const string EverythingElse = "Everything Else";

}
comparerules之外的公共密封类
{
私人BeyondCompareRules()
{
}
/// 
///C/C++/C#源文件的比较规则集
/// 
public const string CLanguageSource=“C/C++/C#Source”;
公共常量字符串Cobol=“Cobol”;
public const string CommaSeparatedValues=“逗号分隔值”;
public const string DelphiSource=“Delphi Source”;
public const string DelphiForms=“Delphi Forms”;
public const string GeneralText=“GeneralText”;
public const string Html=“Html”;
public const string Java=“Java”;
公共常量字符串Python=“Python”;
public const string RegistryDump=“注册表转储”;
公用常量字符串Utf8Text=“UTF8 Text”;
public const string VisualBasic=“VisualBasic”;
public const string Xml=“Xml”;
/// 
///默认的比较规则集
/// 
public const string EverythingElse=“EverythingElse”;
}
comparisonresult是一个枚举,如下所示

public enum ComparisonResult
{

    /// <summary>
    /// Indicates a null or uninitialized value
    /// </summary>
    None = 0,
    /// <summary>
    /// The Quick Compare returned a Positive Match
    /// </summary>
    Match = 1,
    /// <summary>
    /// The Quick Compare detected small differences
    /// </summary>
    Similar = 2,
    /// <summary>
    /// The Quick Compare detected significant differences
    /// </summary>
    DoNotMatch = 3,
    /// <summary>
    /// The Quick Compare utility returned an error/unknown result
    /// </summary>
    ComparisonError = 4
}
公共枚举比较结果
{
/// 
///指示空值或未初始化的值
/// 
无=0,
/// 
///快速比较结果为正匹配
/// 
匹配=1,
/// 
///快速比较检测到微小的差异
/// 
相似=2,
/// 
///快速比较检测到显著差异
/// 
不匹配=3,
/// 
///快速比较实用程序返回错误/未知结果
/// 
比较错误=4
}
我需要的是在进行比较时禁止启动beyond compare屏幕,但是比较应该发生,并且应该返回结果。现在,通过上面的代码,我可以进行比较,也可以查看我不想做的差异

我想我可以通过传递论点来做一些事情,但不确定这是什么,我应该如何以及在哪里放置它


非常感谢您的帮助。

经过多次尝试,使用不同的方法实现了该功能,最后一小段代码解决了问题

有一个命令行开关可用于beyond compare应用程序,当我们想要抑制交互时,需要传递该开关。它被称为“/沉默”

我在CompareFiles方法中传递了这些行

公共静态比较结果比较文件(字符串文件路径1、字符串文件路径2、字符串规则名)


在我的问题中,以上所有发布的代码都运行良好,任何想要抑制交互的人都可以使用。

您看过吗?是的,我看过,但我想知道如何抑制视图并执行比较任务@比迈尔斯
ComparisonResult result = ComparisonResult.None;
string arguments = String.Format("/quickcompare /rules=\"{0}\" \"{1}\" \"{2}\" /silent", ruleName, filepath1, filepath2);