[Delphi] Czy okno aplikacji jest na wierzchu

[Delphi] Czy okno aplikacji jest na wierzchu
pelsta
  • Rejestracja:prawie 19 lat
  • Ostatnio:15 dni
  • Postów:819
0

Jak sprawdzić czy okno aplikacji aktualnie jest na wierzchu
czy jest zasłonięte innymi oknami?

ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 24 godziny
0

na pierwszy rzut oka - GetForegroundWindow() i porównanie z uchwytem Twojego okna. albo onActivate/onDeactivate formy. jednak to tylko załatwi sprawdzenie, czy okno jest aktywne, nie czy jest zasłonięte. wątpię, żeby był jakiś w miarę prosty sposób na szybkie sprawdzenie, czy okno jest widoczne w całości. możesz porównać piksel po pikselu Twoje okno z pamięcią ekranu (obiekt screen), jednak jest to fatalna metoda - bo powolna.


0

Ale jeśli okno zostanie przykryte/zasłonięte, to czy nie zadziała onDeactive ?

ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 24 godziny
0

owszem - ale zadziała również, kiedy okno tylko straci focus. i nie zadziała, kiedy już bez przywracania focusa zostanie zasłonięte albo odsłonięte.


pelsta
  • Rejestracja:prawie 19 lat
  • Ostatnio:15 dni
  • Postów:819
0

Sprawdzam otrzymane wskazówki.
Okazuje się że TForm.OnDeactivate Event zachodzi, gdy przechodzimy z jednej do drugiej formy w ramach jednej aplikacji.
Aby sprawdzić czy inna aplikacja stała się aktywna (po czym np. przesłoniła moje okno) należy zastosować TApplication.OnDeactivate Event.
Nie wiem jednak jak to ugryźć. Może macie panowie jakieś wskazówki...
Jak wykorzystać TApplication.OnDeactivate Event?

pelsta
  • Rejestracja:prawie 19 lat
  • Ostatnio:15 dni
  • Postów:819
0

Już znalazłem...
Zastosowałem komponent TApplicationEvents

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.