كيف يمكنني إحضار نافذتي إلى المقدمة بعد حدث DDE؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

في حدث DDE، يقوم برنامجي بتحميل ملف ويجب أن يظهر في المقدمة.كنت أستخدم

show;

يبدو أنه يعمل كما هو الحال في ذلك الوقت فقط عندما قمت بإخفاء النافذة.

لذلك أضفت

bringtofront;

مرة أخرى، نجح هذا إذا كان مخفيًا أو مغلقًا أو مصغرًا أو في علبة الأيقونات ولكن ليس إذا كان مفتوحًا أسفل نافذة أخرى مباشرةً.

حتى أنني جربت بعض الأشياء المتسللة مثل

windowstate:=wsminimized;
windowstate:=wsnormal;

لمحاولة إجباره على الظهور، ولكن دون جدوى.أعلم أن الكود يعمل لأن لدي نسخًا مطبوعة على جانبي هذه الكتلة ولا توجد عبارات شرطية يمكن أن تكون عالقة فيها.

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

المحلول

هل جربت SetForegroundWindow و/أو SetActiveWindow؟انظر أيضا معلومات MSDN حول هذا الموضوع.

نصائح أخرى

لن يعمل SetForegroundWindow دائمًا.في الواقع، من غير المرجح أن تنجح هذه الأيام، لأنه ليس من المفترض أن تجذب التطبيقات التركيز، بل يمكنها فقط أن تتخلى عنه.لقد كان MS يحاول سنين لمنع التطبيقات من سرقة تركيز الإدخال.قراءة التعليقات على هذا دخول بلوق من ريموند تشين لبعض التاريخ.

لذلك، إذا كنت أنت التطبيق الأمامي بنفسك، فيمكنك تعيين ForegroundWindow إلى تطبيق آخر وسيكون كل شيء خوخيًا.إذا لم تكن التطبيق الأمامي، فمن المحتمل أن الشيء الوحيد الذي من المحتمل أن يحدث هو أن زر شريط المهام سيبدأ في الوميض.

فقط لإضافة بعض الالتباس، يعتمد السلوك الدقيق على إصدار Windows، لذا فإن ما يحدث يعتمد على نوع Windows الذي تقوم بتشغيله - لقد كانوا يعبثون بهذا لفترة طويلة :-).

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