[英]command line to make winforms run without UI
我不確定如何正確地提出這個問題。 所以請提前道歉。
但它主要圍繞如何使用UI創建現有應用程序,作為沒有UI的計划任務運行。
背景..
我有一個winforms應用程序用vs2012寫的2個表單。
第一種形式是登錄,直接,但目前期望用戶交互他們的用戶名和密碼。
第二個是主要形式。 當你點擊“開始”按鈕時,它會完成主要工作。
我想要實現它是為我發送一些命令行參數,將運行它沒有任何ui作為計划任務。
所以,我猜,我需要擺脫需要用戶輸入登錄詳細信息。 並以某種方式觸發“開始下載”按鈕並使其不可見。
我已經研究了如何發送命令行參數,並且可以看到如何讓軟件在聽到/沉默時做一些不同的事情但是如何隱藏表單?
我迷路了。
任何幫助將非常感激!
C#仍然有一個Main()
函數。 在標准的winforms解決方案中,它所做的只是創建Form1(或重命名的任何內容),並使用該表單啟動應用程序事件隊列。
例如,它應該類似於:
public static void Main()
{
Application.Run(new Form1());
}
修改此功能。 如果您看到命令行參數,請執行您必須執行的操作。 如果沒有,讓它用表格做它的正常魔法。 當你完成后,它將是這樣的:
public static void Main(string[] args)
{
if (args.Length > 0) {
// log in
// do all the necessary stuff
} else {
Application.Run(new Form1());
}
}
修改Main
方法, Main
方法應該是應用程序的入口點。 如果有任何參數,您不需要實例化並顯示任何表單,只需運行代碼即可在沒有UI的情況下完成工作。
[STAThread]
static void Main(string[] args)
{
if (args.Length > 0)
{
// silent mode - you don't need to instantiate any forms
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
在解決方案中找到靜態主方法。 在該方法中,您將擁有Application.Run(new Form())或(form.Show()或ShowDialog())。 所以他們的關鍵是傳遞一個參數,告訴你現在調用這個方法(在表單上顯示方法)
關鍵是讓您的業務邏輯在一個獨立於您的類的類中,並在您希望擁有GUI或需要計划任務時使用此類
注意代碼塊之間的區別 - 第一個塊是無形的,第二個塊是標准的。
if (ABCFile > 0)
{
var me = new MainForm(); // instantiate the form
me.NoGui(ABCFile); // call the alternate entry point
Environment.Exit(0);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.