在日常的vc開發中
,有充分的理由需要乙個輸出列印資訊的地方
,微軟為我們提供了
trace,
或者atltrace,
但是這必須是在
debug下,
並且需要
ide或者
windbg工具的配合使用
.但實際上有一種更簡單的方式
,不僅僅在
debug下,
而且在release下,
都可以不依賴任何工具的為我們列印資訊或者提供控制.
可以讓窗體應用中擁有consolewindow嗎?
答案是肯定的:
在需要顯示或者啟動consolewindow的地方呼叫如下**
allocconsole();
freopen("conout$","w",stdout); //關於conout$參見getstdhandle在msdn中的引數註解,這裡是將stdout重定向到命令列輸出
在程式退出之前應當釋放我們分配的控制台資源.**如下
:
freeconsole();
在呼叫了
分配控制台之後,在釋放控制台之前
,可以直接呼叫
printf
函式來列印到控制台
,就像在控制台程式下列印訊息一樣簡單方便
.另外,不一定需要在程式啟動
,或程式退出時候來進行分配和釋放
,你也可用通過比如按鍵響應事件來控制分配和釋放
.有時候我們可能還需要更多的特性,比如像在純的console程式中一樣,可以根據輸入來做一些不同的事情,我們這裡是通過
readconsole
來實現從命令列中讀取輸入資訊。
1.3.1 原始碼說明
1._console.h檔案,位於
fade\console
目錄下該檔案用於封裝開啟,關閉
console視窗,
以及提供讀取命令列輸入內容的介面和控制介面
2.console.h檔案,位於
fade\console
目錄下該檔案用於封裝_console.h,其中封裝了功能函式和匯出介面
3.consolecommand.h檔案,位於
fade\console
目錄下該檔案用於封裝console.h,並且提供命令控制方式
4.consoleprint.h檔案,位於
fade\console
目錄下該檔案屬於用於定製檔案,提供了列印過濾的功能
,如果你需要其他方面的定製
,可以參照該檔案來編寫**
.上述**中引用了singleton.h,位於fade\singleton目錄下.這是單例項類的一種實現方法,後面會講到.
1.3.2 使用方法
參見如下**
static dword winapi proc(lpvoid)
return 0;}{
cconsoleprint::initinstance()->showconsole();
::createthread(null,0,proc,null,0,null);
該段**需要包含consoleprint.h檔案
cconsoleprint
的printffilter
進行列印
.1.3.4 使用結果
1.啟動程式
2.輸入命令 printfilter cmd2
3.按下回車
上述步驟就是基本的操作方式,通過使用
printfilter
命令來控制列印輸出
.命令格式為printfilter+空格+引數
.如果引數為空,則不列印任何內容
,如果引數為」*」則列印所有內容,如果引數為其他字串
,則將該字串同
printffilter
中傳入的字串進行匹配
.程式還提供了ctrl+c的暫停和繼續功能
.看完了上述內容,是不是覺得很炫酷
?不僅很炫酷
,而且還為程式的除錯
,錯誤的發現提供了相當的便利
.而且還能提供除了列印之外的更多控制
,當然這個就需要讀者自己去寫**了
,不過也很簡單
,你看明白了
consoleprint.h,
然後根據這個來寫你自己的命令列控制**是非常容易的
!
定時列印資訊
class cl time event definition.public section.class methods auto exe for event finished of cl gui timer importing sender.endclass.cl time event defini...
tomcat 去掉 列印資訊
1.引用 修改startup.bat第42行 call executable start cmd line args 為 call executable run cmd line args logs catalina.txt 然後在此啟動tomcat,再次檢視catalina.txt,預期的資訊果然...
儲存終端列印資訊
先要說明為什麼要記錄終端會話,因為常會遇到這樣的情況,終端是有快取大小限制的,當在終端列印的訊息超出快取範圍,它前面的列印訊息就自動丟失了,這對於我們除錯程式會造成障礙,所以有記錄完整終端列印訊息的必要!1使用script記錄linux終端會話 script是大多數linux產品util linux...