/النظام الفرعي: لن يكتب برنامج Windows إلى سطر الأوامر
-
23-09-2019 - |
سؤال
لديّ برنامج مختلط C ++-CLI في Visual Studio 2005 تم تعيينه لاستخدام النظام الفرعي: Windows. بشكل عام ، إنه تطبيق رسومي يتم إطلاقه من اختصاره أو من خلال filetype المسجل له.
ومع ذلك ، هناك مناسبة نادرة حيث يرغب المستخدم في تشغيله من سطر الأوامر مع الوسائط. يمكنني الوصول إلى الحجج على ما يرام ، عندما يتعلق الأمر بالكتابة إلى وحدة التحكم ، استجابة للبرنامج الذي يتم إطلاقه من سطر الأوامر مع الوسائط ، حيث لا أرى Console::WriteLine
وجود أي تأثير.
ما الخطأ الذي افعله؟
المحلول
هذا مزعج ، أوافق. أنت لا تفعل أي شيء خاطئ ، إنه مغلق من طريقة إعداد Windows.
من الممكن حل هذا ، على الأقل في بعض الحالات ، انظر http://blogs.msdn.com/junfeng/archive/2004/02/06/68531.aspx . لم أجد أي شخص آخر استخدم هذه الأساليب بالفعل.
معظم الأشخاص ، يقومون فقط بإنشاء نسختين من القابلة للتنفيذ بأسماء مختلفة ، واحدة لمستخدمي الدُفعات ("myapp.exe") وواحد عندما يتم تشغيله من قائمة START ("myappw.exe").
لمزيد من المعلومات ، بعض الاقتراحات في كيفية الإخراج إلى وحدة التحكم في 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;
}
تحرير: آسف هذا هو Pure C ++ ، لا أعرف عن C ++/CLI