簡體   English   中英

從WPF應用程序附加到現有控制台的變通方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM