/ / Duchy systemu Windows, gdy schemat kolorów NIE jest Aero w systemie Vista - Windows-Vista, Service, Desktop, sessionid

Okna Ghostów, gdy schemat kolorów NIE jest Aero w systemie Vista - windows-vista, service, desktop, sessionid

Mamy usługę, która uruchamia aplikacjęktóre będą oddziaływać z zalogowanym użytkownikiem. Uruchomiona przez nas aplikacja jest zawsze uruchamiana jako określony użytkownik, dla którego mamy poświadczenia. Robimy to, co jest konieczne (uzyskujemy identyfikator aktywnej sesji, logonUser, dostosuj token) i uruchamiamy aplikację za pomocą CreateProcessAsUser na pulpicie winsta0Default.

Wszystko działa dobrze, jeśli schemat kolorówWindows Vista jest Aero - ale w podstawowych i klasycznych schematach kolorów aplikacja jest nadal uruchomiona, ale żadne z okien nie jest pomalowane. Na pasku zadań pojawi się nowe zadanie. Jeśli zminimalizujesz okno, które było w tle i na pełnym ekranie, zobaczysz kontur naszej aplikacji ducha - możesz go przenosić, reaguje on dobrze na klawiaturę / mysz. Jest po prostu niewidoczny, nie pomalowany.

Czy ktoś ma pojęcie o tym, co może się dziać? Dlaczego ze schematem kolorów Aero jest w porządku, ale nie w innych?

Dzięki za pomoc,

Szczery

Odpowiedzi:

1 dla odpowiedzi № 1

Brzmi dość dziwnie - być może trafiłeś na prawdziwy błąd w Vistę, ponieważ wydaje się mało prawdopodobne, aby wiele osób próbowało tego, co robisz.

Przede wszystkim upewniam się, że problem nie wykazuje tego zachowania, gdy jest uruchamiany bezpośrednio przez zalogowanego użytkownika, tylko po to, aby określić, czy jest to problem Aero / Classic, czy problem ze stacją Win.

Po drugie, dołączę się do procesu za pomocą debugera i upewnię się, że pętla komunikatów otrzymuje różne znaczące komunikaty, szczególnie WM_PAINT :)

Jest to jednak na tyle niejasne, że jedyną opcją może być otwarcie problemu z płatną pomocą techniczną w firmie Microsoft.


0 dla odpowiedzi nr 2

Jeśli tak, może występować problemformanty rysowane przez użytkownika w formularzu (lub sam formularz jest rysowany przez użytkownika). Jeśli malujesz formularz, tylko jeśli Application.RenderWithVisualStyles jest prawdziwy, możesz zobaczyć to zachowanie. Upewnij się, że renderujesz także elementy bez tych stylów. Więcej informacji o tym, jak twój formularz wygląda / zachowuje się / etc będzie mile widziane.