2009-09-22 78 views
4

我不完全確定這是可能的。根據輸入參數控制C#GUI

我用C#編寫的傳統GUI應用程序。使用AttachConsole(-1)(來自kernel32.dll)如果從命令行調用它,我可以添加一個控制檯窗口。我甚至可以編寫一個模塊來運行基本用例,並使它看起來像是一個控制檯應用程序。我不顯示窗口,如果我這樣做不更新或正常工作(因爲我沒有使用Application.Run)

然而,其他人在我的團隊希望做類似的地方輸入參數的東西將引發一系列GUI操作(如buttonExample.PerformClick(),更新文本框等)來模擬用戶。是否可以完全使用C#來完成此操作,還是需要使用類似AutoIt的東西?

我們使用VS2008/.NET框架V3.5。

回答

4

您可以添加字符串數組參數傳遞給您的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 
    } 
    } 
+0

當然。我甚至都不知道你可以向作爲應用程序運行的主類添加參數。我被卡住了,認爲它沒有任何爭論就是無效的。 – cgyDeveloper 2009-09-22 20:05:12

+0

是的,有時候很容易忽視。 – 2009-09-22 20:09:20

0

你的問題的答案是'sort-of'...你可以做一些事情,但大部分你需要暴露你的表單中的大量細節。這裏有一個簡單的例子:

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 ... 
    } 
} 

我真的,真的,真的,不建議這樣做。您需要重構表單的實現,並將代碼從表單中移出到業務邏輯類中。

+0

您也可以轉換並將相關的參數傳遞給表單對象,並讓它處理數據,這可能會首選公開公開表單控件。 – 2009-09-22 23:46:43

0

可以使用SendInput函數從user32.dll中

(當然,這隻能是針對不斷變化的GUI應用程序是不可能完成的。)