كيف تعرف متى يتم تحميل WinForm بواسطة Process.Start؟
سؤال
أنا في نظام 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";
ثم لديك عملية رد الاتصال الفرعي لعملية المالك لإعلامها قد بدأت، عن طريق التحكم أو شيء من هذا القبيل.
لا تنتمي إلى StackOverflow