2009-10-04 13 views
6

Jak mogę drukować zminimalizowane okna? Uważam, że jest to możliwe, ponieważ pasek zadań systemu Windows może utworzyć podgląd okna, nawet jeśli jest on zminimalizowany.Jak mogę drukować zminimalizowane okna?

+0

Menedżer Vista Desktop udaje się to zrobić, więc nie rozumiem, dlaczego nie. Poziom niskiego poziomu, który musisz przejść, to kolejne pytanie ... – Noldorin

Odpowiedz

3

Jestem przekonany, że nie jest to możliwe, przynajmniej przez zewnętrzną aplikację, taką jak Twoja. Gdy okno aplikacji jest zminimalizowane, okno nie może (i nie otrzymuje) komunikatów WM_PAINT, co oznacza, że ​​niemożliwe jest zażądanie od okna, aby przerysowało się, gdy jest zminimalizowane (lub "zrób zdjęcie"). Jest to ograniczenie (lub reguła) interfejsu API systemu Windows.

Pasek zadań „omija ten” wyświetlając pamięci podręcznej obraz (który jest ostatni snapshot DWM wziął okna zanim została zminimalizowana), a więc jest nie w rzeczywistości biorąc aktualny obraz okna. Możesz to przetestować, uruchamiając aplikację, która okresowo aktualizuje się, a następnie minimalizując ją - zobaczysz, że obraz podglądu nie zostanie zaktualizowany, dopóki nie zostanie przywrócony.

Jedynym sposobem obejścia tego problemu jest zrobienie tego, co robi pasek zadań - okresowe wykonywanie zdjęcia wybranego okna, a gdy jest zminimalizowane, należy użyć obrazu z pamięci podręcznej. Oczywiście oznacza to, że twoja aplikacja musiała podążać za oknem docelowym z pewnym wyprzedzeniem (to oczywiście nie zadziała, jeśli po raz pierwszy chcesz zrobić migawkę okna, gdy jest zminimalizowane).

+1

Zobacz http://msdn.microsoft.com/en-us/library/aa969541%28VS.85%29.aspx, aby użyć funkcji DWM używanych przez pasek zadań . –

+1

Ładne znalezisko, nie miałem pojęcia, że ​​API istnieje (choć byłoby to przydatne tylko w systemie Vista lub nowszym) – GRB

+0

Co się stanie, jeśli funkcja Windows Aero jest wyłączona? –

Powiązane problemy