我在Visual Studio 2005中有一個混合模式C++ - CLI程序,它被設置爲使用/ SUBSYSTEM:Windows。一般來說,它是從其快捷方式或通過註冊的文件類型啓動的圖形應用程序。/SUBSYSTEM:Windows程序不會寫入命令行
但是,很少有用戶想從命令行運行參數的情況。我可以很好地訪問參數,當它涉及到寫入控制檯時,響應從命令行啓動的帶有參數的程序,其中我看不到Console::WriteLine
有任何影響。
我在做什麼錯?
我在Visual Studio 2005中有一個混合模式C++ - CLI程序,它被設置爲使用/ SUBSYSTEM:Windows。一般來說,它是從其快捷方式或通過註冊的文件類型啓動的圖形應用程序。/SUBSYSTEM:Windows程序不會寫入命令行
但是,很少有用戶想從命令行運行參數的情況。我可以很好地訪問參數,當它涉及到寫入控制檯時,響應從命令行啓動的帶有參數的程序,其中我看不到Console::WriteLine
有任何影響。
我在做什麼錯?
這個很討厭,我同意。你沒有做錯什麼,這是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的一些建議可能會有用。
這是一個老問題 - 看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