سؤال

لديّ برنامج مختلط 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top