سؤال

أنا في نظام WindowsForm (C # .NET 3.5) وعلى النقر فوق زر تشغيل تطبيق خارجي آخر (أيضا .NET 3.5) باستخدام Process.Start () وفهم عندما يتوفر بعد ذلك.

    ProcessStartInfo psInfo = new ProcessStartInfo(@"MyApplication.exe");
psInfo.RedirectStandardOutput = true;
psInfo.RedirectStandardError = true;
psInfo.UseShellExecute = false;
psInfo.CreateNoWindow = true;
Process proc = Process.Start(psInfo);

proc... IsFullyLoaded()?

كيف يمكنني فعل ذلك؟

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

المحلول

لانتظار عملية إنشاء شكلها، اتصل WaitForInputIdle طريقة.

لمعرفة ما إذا كان جاهزا، جرب هذا:

bool isReady = proc.WaitForInputIdle(0);

أو بدلا من ذلك،

bool isReady = (proc.MainWindowHandle != IntPtr.Zero);

يمكنك أيضا استخدام خاصية Mainwindowhandle لإرسال رسائل إلى النموذج باستخدام SendMessage وظيفة API.

نصائح أخرى

يمكنك تمرير حجة للعملية التي تتيح لها معرفة كيفية إطلاقها.

psInfo.Arguments = "-startedByProcess";

ثم لديك عملية رد الاتصال الفرعي لعملية المالك لإعلامها قد بدأت، عن طريق التحكم أو شيء من هذا القبيل.

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