إطلاق Exe الخارجي في MFC، كيف يمكنني إحضار EXE إلى الأمام إذا فتحت بالفعل؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

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

ShellExecute(NULL, "open", "C:\Test\blahblah.exe", NULL, NULL, SW_SHOWNORMAL);

شكرا، CP.

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

المحلول

الوثائق غير واضحة بعض الشيء، والتي قد تكون هي ما الخلط بينك. عند استهداف برنامج قابل للتنفيذ، ShellExecute() سوف تطلق دائما عملية جديدة. ما تشير فيه الوثائق إلى متى يذكر استعادة النافذة المصغرة هو إذا كنت تستهدف وثيقة (مثل كلمة الوثيقة كلمة)، والتطبيق المسجل لعرض المستند قيد التشغيل بالفعل.

أفضل رهان الخاص بك هو إما:

  • تعديل البرنامج الخارجي لدعم singleton. نمط، وإحضار نفسها الأمامية والمركز إذا حاولت تشغيل نسخة ثانية، أو
  • يستخدم FindWindow() في تطبيق MFC الخاص بك لمحاولة تحديد موقع التطبيق الخارجي، ثم تشغيل فقط ShellExecute() إذا لم تكن موجودة بالفعل، فقم بتنشيط الإطار الحالي.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top