根据输入参数控制C#GUI

时间:2009-09-22 19:50:47

标签: c# .net

我不完全确定这是可能的。

我有一个用C#编写的遗留GUI应用程序。使用AttachConsole(-1)(来自kernel32.dll)如果从命令行调用它,我可以添加一个控制台窗口。我甚至能够编写一个模块来运行基本用例,并使其看起来好像是一个控制台应用程序。我没有显示窗口,如果我这样做没有更新或正常工作(因为我没有使用Application.Run)

然而,我的团队中的另一个人想要做类似的事情,其中​​输入参数将引发一系列GUI动作(如buttonExample.PerformClick(),更新文本框等)来模拟用户。是否可以完全使用C#进行此操作,还是必须使用AutoIt之类的东西?

我们正在使用VS2008 / .NET Framework v3.5。

3 个答案:

答案 0 :(得分:4)

您可以将字符串数组args添加到static void Main()并将它们传递给GUI类以执行此类操作。

  static class Program
  {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
      ...
      //TODO: Stuff with your args
    }
  }

答案 1 :(得分:0)

你的问题的答案是'有点'......你可以做一些事情,但在大多数情况下,你需要从表格中公开很多细节。这是一个简单的例子:

class Program
{
    public static void Main(string[] args)
    {
        Form2 frm = new Form2();
        if( args.Length >= 2 && args[0] == "something" )
        {
            frm.txtTextArea.Text = args[1];
            frm.btnOk_OnClick(frm.btnOk, EventArgs.Empty);
        }
    }
}

public class Form2 : Form
{
    public TextBox txtTextArea;
    public Button btnOk;

    public void btnOk_OnClick(object sender, EventArgs e)
    {
        //... code ...
    }
}

我真的,真的,真的,不建议这样做。您需要重构表单的实现,并将表单中的代码转换为业务逻辑类。

答案 2 :(得分:0)

您可以使用user32.dll

中的SendInput功能

(当然,只有在无法更改GUI应用程序时才能这样做。)