簡體   English   中英

通過管道重定向時,如何捕獲SetConsoleTextAttribute的效果?

[英]Capturing the effects of SetConsoleTextAttribute when redirected through a Pipe?

我已將使用CreateProcess生成的子進程的stdout重定向到管道。 效果很好,但據我所知,沒有有關顏色變化的信息。 子進程正在使用SetConsoleTextAttribute更改文本顏色-是否可以通過管道檢測到該顏色,如果可以,如何進行檢測?

我最終將輸出顯示在RichEdit控件中,並且我想盡可能捕獲顏色信息。

這是XP和Vista上Win32 API的C語言。

您可能需要使用在此處找到的ReadConsoleOutput(和/或相關的): http : //msdn.microsoft.com/zh-cn/library/ms682073 (VS.85) .aspx

希望能有所幫助。

可能有解決方法...它很舊,沒用過!

  1. 使用Ansi.Sys並加載它。
  2. 每當您將文本輸出到控制台時,通過使用轉義序列,都可以在文本周圍設置顏色。
  3. 然后將轉義序列解析為RichText Colors的等效項。

轉義序列在這里是標准的。 是在控制台中添加對ANSI.SYS的支持的方法。 是來自Microsoft的有關如何執行此操作的官方知識庫。

例如:

printf("\x1b[33;43Yellow on Blue\x1b[0\n");

現在,解析\\x1b[之后的位,33是黃色前景,43是藍色背景,然后查找相關顏色並將其設置在RichTextBox中。

注意: \\x1b[0關閉屬性。

編輯:這可能不是最佳解決方案,因為它適用於XP或更高版本下的舊版NTVDM的16位DOS command.com。 但是,但是,我在這里找到了另一個指向“ ansicon ”的鏈接,該鏈接用於具有ANSI支持的純cmd.exe 32位控制台。

希望這對您有所幫助,湯姆,謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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