[英]Workarounds to attaching to existing console from WPF application?
我已經創建了一個具有GUI的WPF應用程序,但我也希望它可以從命令行運行,所以我已經將它添加到我的App.xaml.cs:
[DllImport("kernel32.dll")]
private static extern bool AttachConsole(int pid);
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if (e.Args.Count() > 0)
{
CreateReport(e.Args);
Environment.Exit(0);
}
}
void CreateReport(string[] arguments)
{
AttachConsole(-1);
// Parse arguments, generate report, etc.
}
這種方法存在兩個問題:
問題1:從命令行運行應用程序在關閉之前等待用戶輸入:
C:\Code>GenerateReport.exe -output Example.html
Started report generation.
Report has been generated.
<-- Console waits until user input here, even though the application has finished doing its business.
問題2: 這些是命令行重定向操作符 。 AttachConsole由於某種原因阻止他們工作:
C:\Code>GenerateReport.exe -output Example.html > Log.txt <-- Causes no output in Log.txt (just an empty file)!
我已經檢查了其他Stack問題,但沒有特別解決這個問題...所以你怎么能真正附加到當前控制台窗口將這些數據輸出回用戶(例如,給他們錯誤信息等)但不是有這些令人討厭的問題嗎?
我在這里找到了一個討論:
看起來你運氣不好或者你不願意訴諸丑陋的黑客。
從前一個帖子的答案:我總是選擇3:
“或者您可以重新構建您的應用程序/源代碼並提供兩個可執行文件,GUI可直接啟動GUI,另一個可執行控制台。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.