我有一個具有GUI的C#應用程序,並將其輸出類型設置爲Windows應用程序。我也想從命令行(通過參數)調用它,因此它也需要是一個控制檯應用程序。有沒有辦法讓我的應用程序作爲Windows應用程序和控制檯應用程序運行?有沒有辦法在運行時設置它,還是編譯時設置?爲.NET程序提供輸出類型的Windows應用程序和控制檯應用程序
7
A
回答
8
您可以連接控制檯。使Program.cs中的代碼看起來像這樣:
[STAThread]
static void Main(string[] args) {
if (args.Length > 0) {
AttachConsole(-1);
Console.WriteLine("");
Console.WriteLine("Running in console, press ENTER to continue");
Console.ReadLine();
}
else {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AttachConsole(int pid);
1
Windows窗體應用程序可以接受命令行參數。在顯示應用程序主窗體之前,您只需在主函數中處理這種情況。
static void Main(string[] args)
{
if (args.Length > 0)
{
// Run it without Windows Forms GUI
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
0
即使您的應用程序輸出類型設置爲Windows應用程序,仍然可以從命令行調用它並傳遞參數。
只需將您的Main方法定義更改爲:static void Main(string [] args){...} 並且您可以訪問'args'變量中傳遞的參數。
1
這是一個編譯時間設置:csc
編譯器上有target:
選項。 /target:winexe
構建Windows應用程序(即使用GUI); /target:exe
構建控制檯應用程序。不過,這兩種類型的應用程序都可以接受命令行參數。
+0
我已經結束了構建兩個 - 我想要一個真正的Windows程序和一個真正的控制檯應用程序。 – DanDan 2010-09-07 15:35:16
相關問題
- 1. 將控制檯應用程序轉換爲Windows應用程序
- 2. 控制檯應用程序輸出
- 3. Win32應用程序控制臺輸出?
- 4. C#控制檯和Windows應用程序
- 5. qDebug Qt控制檯應用程序輸出到Qt Creator應用程序輸出
- 6. 從控制檯應用程序切換到Windows應用程序
- 7. 從Windows XAML應用程序運行控制檯應用程序
- 8. 控制檯應用程序。 VS Windows應用程序
- 9. .NET控制檯應用程序configSections
- 10. Jenkins的.NET應用程序的控制檯輸出在哪裏?
- 11. 作爲控制檯應用程序運行Asp.net應用程序
- 12. 使控制檯應用程序的行爲像Windows應用程序
- 13. 使用Windows調度程序運行控制檯應用程序
- 14. 將.NET Core控制檯應用程序轉換爲獨立應用程序
- 15. 如何爲Java應用程序提供HTTP管理控制檯?
- 16. c#控制檯應用程序的記錄器應用程序
- 17. .Net無法啓動控制檯的控制檯應用程序
- 18. 檢查輸入數據類型控制檯應用程序C#
- 19. 從其他控制檯應用程序運行控制檯應用程序
- 20. Qt控制檯應用程序教程?
- 21. 控制檯和Web應用程序的輸出進度
- 22. 包含在GTK應用程序控制臺應用程序
- 23. 需要應用程序URL從控制檯應用程序
- 24. Web應用程序到控制檯應用程序?
- 25. 從非控制檯.NET應用程序內創建控制檯
- 26. .NET 2.0控制檯應用程序 - 閱讀應用程序設置
- 27. 將C#控制檯應用程序設置爲Unicode輸出
- 28. powershell和控制檯應用程序輸出
- 29. 什麼使得應用程序控制臺或Windows窗體應用程序?
- 30. 從控制檯應用程序向windows phone應用程序傳遞指令
這類作品似乎有點古怪。我會接受,但我已經去了兩個獨立的應用程序,Windows和控制檯。 – DanDan 2010-09-07 15:34:25
這個古怪的位可能是你在你沒有創建的控制檯上寫的。產量混合。你也可以使用AllocConsole(),但是它有自己的。 – 2010-09-07 15:56:28