Призраки окон, когда цветовая схема НЕ Aero на Vista - PullRequest
3 голосов
/ 18 марта 2009

У нас есть служба, которая запускает приложение, которое будет взаимодействовать с вошедшим в систему пользователем. Запускаемое нами приложение всегда запускается от имени конкретного пользователя, для которого у нас есть учетные данные. Мы делаем все необходимое (получаем идентификатор активной сессии, logonUser, настраиваем токен) и запускаем приложение с CreateProcessAsUser на рабочем столе winsta0 \ Default.

Все работает нормально, если цветовая схема ПК с Vista Aero - но при базовой и классической цветовой схемах приложение все еще запускается, но ни одно из окон не окрашено. На панели задач появилось новое задание. Если вы свернете окно, которое было в фоновом режиме и в полноэкранном режиме, вы сможете увидеть контур нашего приложения-призрака - вы можете перемещать его, оно будет отлично реагировать на ввод с клавиатуры / мыши. Это просто невидимо, а не нарисовано.

Кто-нибудь имеет представление о том, что может происходить? Почему с цветовой схемой Aero все в порядке, а в других нет?

Спасибо за любую помощь,

Frank

Ответы [ 2 ]

1 голос
/ 06 апреля 2009

Звучит довольно странно - возможно, вы столкнулись с реальной ошибкой в ​​Vista, поскольку вряд ли многие другие попробовали то, что вы делаете.

Прежде всего, я хотел бы убедиться, что проблема не проявляется в этом поведении при запуске непосредственно вошедшим в систему пользователем, просто чтобы определить, является ли это проблемой Aero / Classic или проблемой winstation.

Во-вторых, я присоединяюсь к процессу с помощью отладчика и проверяю, чтобы цикл сообщений получал различные важные сообщения, в частности WM_PAINT:)

Но это совершенно неясно, поэтому единственным вариантом может быть открытие проблемы платной поддержки с Microsoft.

0 голосов
/ 07 апреля 2009

Также может возникнуть проблема, если у вас есть нарисованные пользователем элементы управления в форме (или сама форма нарисована пользователем). Если вы рисуете форму, только если Application.RenderWithVisualStyles имеет значение true, вы можете увидеть это поведение. Поэтому убедитесь, что вы также делаете рендеринг без этих стилей. Хотелось бы получить дополнительную информацию о том, как ваша форма выглядит / ведет себя / и т. Д.

...