2009-03-07 24 views
2

DDE olayında programım bir dosyayı yükler ve ön plana çıkar. Ben sadece ben pencere gizlediğiniz zaman sonra böyle çalışıyor görünüyorPenceremi DDE olayından sonra nasıl ön plana getirebilirim?

show; 

kullanıyordu.

Yani ben Yine bu o gizlendi eğer çalıştı kapalı minimize veya simge tepsisinde ama sadece başka bir pencerenin altında açıktı değilse
bringtofront; 

eklendi.

Hatta göstermeye zorlamak denemek için

windowstate:=wsminimized; 
windowstate:=wsnormal; 

gibi bazı hacky şeyler denedik, ama boşuna. Bu bloğun her iki tarafında da çıktılar bulunduğundan kodun çalıştığını biliyorum ve içeride sıkışabileceğini gösteren koşullu ifadeler yok.

cevap

1

SetForegroundWindow her zaman çalışmaz. Aslında, bu günlerde çalışılması pek olası değil, çünkü uygulamalar odaklanmayı gerektirmiyor, sadece verebiliyorlar. MS, giriş odağını çalan uygulamaları önlemek için yıl için çalışıyor. Bazı tarihler için Raymond Chen'den bu blog entry yorum okuyun.

Öyleyse, ön plan uygulaması sizseniz, başka bir uygulamaya SetForegroundWindow uygulayabilirsiniz ve her şey şeftali olacaktır. Ön plan uygulaması değilseniz, gerçekleşmesi olası tek şey, bir görev çubuğu düğmesi yanıp sönmeye başlayacaktır.

Sadece bir karışıklık eklemek için, kesin davranış Windows sürümüne bağlıdır, bu durumda ne tür bir Windows çalıştırdığınıza bağlı olarak değişir - uzun zamandır bununla uğraşırlar :-).

+0

DDE olayını gönderen programın AllowSetForegroundWindow'u arayarak işbirliği yapması gerekir. Explorer'ın bunu yapmasını beklerim, ancak diğer programlar muhtemelen bu detayı göz ardı eder. –

+0

Bu da iyi bir şey. Diğer programlar odaklandığı zaman gerçekten sevmiyorum. – Kibbee

İlgili konular