2010-04-01 74 views
3

我在Visual Studio 2005中有一個混合模式C++ - CLI程序,它被設置爲使用/ SUBSYSTEM:Windows。一般來說,它是從其快捷方式或通過註冊的文件類型啓動的圖形應用程序。/SUBSYSTEM:Windows程序不會寫入命令行

但是,很少有用戶想從命令行運行參數的情況。我可以很好地訪問參數,當它涉及到寫入控制檯時,響應從命令行啓動的帶有參數的程序,其中我看不到Console::WriteLine有任何影響。

我在做什麼錯?

回答

3

這個很討厭,我同意。你沒有做錯什麼,這是Windows設置方式的一個怪癖。

有可能解決這個問題,至少在某些情況下,請參閱http://blogs.msdn.com/junfeng/archive/2004/02/06/68531.aspx。我還沒有遇到任何其他實際上使用過這些方法的人。

大多數人使用不同的名稱創建兩個版本的可執行文件,一個用於批處理用戶(「myapp.exe」),一個用於從開始菜單運行(「myappw.exe」)。

欲瞭解更多信息,How to output to the console in C++/Windows的一些建議可能會有用。

1

這是一個老問題 - 看http://www.codeproject.com/KB/cpp/EditBin.aspx解決辦法

您也可以重新打開流控制檯

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE /*hPrevInst*/, LPSTR cmd_line, int showmode) 
{ 
    AllocConsole(); //create a console 
    ifstream conin("con"); // not sure if this should be "con:" ? 
    ofstream conout("con"); 
    cout.rdbuf(conout.rdbuf()); 
    cerr.rdbuf(conout.rdbuf());  
    cin.rdbuf(conin.rdbuf()); 


    FreeConsole(); 
    return 0; 
} 

編輯:對不起,這是純粹的C++,不知道C++/CLI