أفضل طريقة ل"قفص الاتهام" حزب التطبيق الثالث على التوالي داخل لوحة windows.forms؟

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

  •  07-07-2019
  •  | 
  •  

سؤال

وأنا أفعل في هذا كما يلي:


// _Container is the panel that the program is to be displayed in.

System.Diagnostics.Process procTest = new System.Diagnostics.Process();
procTest.StartInfo.FileName = "TEST.EXE";
procTest.StartInfo.CreateNoWindow = false;
procTest.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
procTest.Start();

procTest.WaitForInputIdle();
SetParent(procTest.MainWindowHandle, _Container.Handle);
MoveWindow(procTest.MainWindowHandle, 
           0, 0, _Container.Width, _Container.Height, true);

والمشكلة أواجه مع هذا الرمز هو أن بعض أجزاء من تطبيق واجهة المستخدم لم تعد تعمل بشكل صحيح مرة واحدة يمكنني تغيير MainWindowHandle. (أي: أزرار النص مفقود)

هل هناك طريقة للقيام بذلك دون التسبب في مشاكل مع تطبيق رست؟ (إما من خلال .NET أو USER32)؟

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

المحلول

<الإضراب> أولا وقبل كل شيء، بدلا من مجرد انتظار 1.5 ثانية، في محاولة يدعو procTest. <لأ href = "http://msdn.microsoft.com/en-us/library/system.diagnostics.process.waitforinputidle.aspx "يختلط =" نوفولو noreferrer "> WaitForInputIdle لالانتظار حتى حلقة رسالتها مجانية. أنت بالفعل.

في عام، وأنا لا أعتقد أنه من الممكن القيام بذلك دون تعديل البرنامج الذي كنت الاستضافة.

تعديل : لقد تتمكن من محاولة للحفاظ على برنامج آخر فوق منطقة الاستضافة عن طريق الاختباء في من شريط المهام، وإزالة شريط العنوان، والانتقال انه تحركات من البرنامج، وما إلى ذلك، وهذا لا يزال ولدن 'ر العمل تماما. ننصحك بأن محاولة للعثور على بعض بديل.

وحاول الاتصال مطوري الأصلي للتطبيق طرف ثالث وطلب مشورتهم.

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