我想制作一個可以運行控制臺應用程式的 GUI Windows 應用程式。發生這種情況時,不應顯示控制臺視窗。相反,它的內容應該顯示在可視化組件(備忘錄/richedit)中。該組件應該顯示與控制臺視窗中顯示的完全相同的內容,甚至應該顯示文本的顏色及其背景。所以這個可視化組件應該完全像控制臺視窗一樣作業。我知道可以捕獲標準輸出,但許多控制臺應用程式不使用它。是否可以通過這種方式捕獲控制臺應用程式的輸出?是否有可以處理此問題的 Windows API 呼叫?
我使用 Delphi XE2,但 C# 代碼也會有所幫助。
uj5u.com熱心網友回復:
您必須運行控制臺模式程式,并將標準輸出重定向到您的 Delphi 程式將創建的管道。您的 Delphi 程式可以讀取管道以獲取控制臺模式程式輸出并執行所需的任何操作。順便說一句,這不僅適用于 Delphi,而且適用于任何能夠創建管道并通過 I/O 重定向運行程式的語言。
如果您需要 Delphi 代碼來執行此操作,請查看此參考。
uj5u.com熱心網友回復:
GitHub上有一個可以運行的組件:DosCommand
演示展示了兩種方法來做你描述的事情。
我不確定它是否適用于 XE2 等舊版本,但至少你可以試一試。
uj5u.com熱心網友回復:
傳統上,您會呼叫CreateProcess設定為您創建的管道的標準輸入/標準輸出。這應該適用于大多數程式,但不適用于使用 ncurses 樣式“GUI”的任何程式,并且您也會丟失顏色資訊。可以在 MSDN上找到一個示例。
Windows 10 (1809?) 增加了對pseudoconsoles 的支持。這由新的終端應用程式使用,是您完全兼容控制臺的最佳選擇。
最后一個辦法是注入子行程和鉤WriteFile,ReadFile和所有的控制臺功能,但是這是丑陋的,而且容易出錯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/406390.html
標籤:
上一篇:ICACL的Python掃描
