تنفيذ C ++ exe من نموذج C# باستخدام Process.start ()

StackOverflow https://stackoverflow.com/questions/2526481

  •  22-09-2019
  •  | 
  •  

سؤال

أحاول إنشاء تطبيق نموذج C# يسمح لي باستخدام جميع برامج C ++ السابقة من برنامج مركزي واحد.

أنا قادر على فتح exes Process.Start(), ، ومع ذلك فإنه لا يقوم بتجميع الكود بشكل صحيح.

رمز المثال:

Process.Start("C:\\\Documents and Settings\\\dan\\\Desktop\\\test.exe");

سيؤدي ذلك إلى إحضار وحدة التحكم ويتصرف كما لو كانت قيد التشغيل ، لكنه لا يتم تشغيله عندما أقوم عادةً بتجميع محرر C ++. هل يوجد startinfo متغير أحتاج إلى تعيينه للدلالة على أنه برنامج C ++ أو شيء ما على طول هذا الخط؟

أيضًا ، هل هناك أي طريقة لتنفيذ برنامج C ++ باستخدام process.start سيسمح لي ذلك بتمرير المتغيرات من خلال سطر الأوامر عبر argc و argv?

شكرًا

هل كانت مفيدة؟

المحلول

لا يوجد سوى بعض الاختلافات عند استخدام العملية. ابدأ بالطريقة التي قمت بها مقابل تنفيذ البرنامج مباشرة. يمكن معالجة كلاهما باستخدام ProcessStartInfo.

  1. ال عمل اخراجي لن يكون هو نفسه. اضبط هذا على المسار الذي يحتوي على القابل للتنفيذ للحصول على نفس السلوك.
  2. جلس Useshellexecute صحيح ، لذلك يتم استخدام قذيفة Windows لتنفيذ العملية.

أما بالنسبة لإضافة وسيطات سطر الأوامر: يمكنك القيام بذلك عبر ProcessStartInfo.arguments. لا ينبغي أن يكون هناك واحد مطلوب بسبب كونه تطبيق C ++ ، ولكن.

نصائح أخرى

حتى الآن لا يوجد سوى معلومات كافية للإجابة على سؤالك الأخير. نعم ، يمكنك تضمين وسيطات سطر الأوامر مثل يظهر هنا. انظر إلى القسم الذي يحمل عنوان "=== البرنامج الذي يعمل EXE (C#) ==="

لإضافة وسيطات سطر الأوامر:

Process process = new Process();
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe";
process.StartInfo.Arguments = ""; // Put your arguments here
process.Start();

بعد تجميع البرنامج في EXE ، لا ينبغي أن يهم اللغة التي كتبت فيها.

أما بالنسبة لحجج البرنامج ، فأنت بحاجة إلى إلقاء نظرة على فئة ProcessStartInfo ، وتجاوز العملية. Process.start (ProcessStartInfo)

واجهت مشكلة مماثلة في بيثون ، هل تتوقع إخراج مطوّل؟

في حالتي ، أصبح المخزن المؤقت للإخراج ممتلئًا وبالتالي توقف التنفيذ.

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