Как надежно вызвать всплывающее окно «Производительность цветовой схемы» в Windows 7?

514
Will Nightingale

Этот вопрос конкретно касается Windows Embedded Standard 7, однако я считаю, что он актуален и для не встроенной Windows 7. Я использую i7-2600 / i7-2600K с графикой Intel HD2000 / HD3000.

В Windows 7 (возможно, в других тоже?) Может появиться всплывающее окно с вопросом «Хотите ли вы изменить цветовую схему для повышения производительности?» Некоторые детали в этом вопросе .

Меня интересует не метод подавления всплывающего окна, а способ его запуска по требованию. Выслушайте меня: мы используем WES7 для встраиваемого продукта, для которого всплывающие окна недопустимы (у пользователя может не быть мыши, чтобы закрыть их, и в результате может потребоваться перезагрузить компьютер), и сообщения об этом всплывающем сообщении появлялись очень редко, План состоит в том, чтобы исправить все, что вызывает всплывающее окно, а также подавить само всплывающее окно, даже если есть проблема. Чтобы исправить основную проблему (какая-то ошибка в нашем приложении - отсутствие какого-либо ресурса, неправильное использование графического процессора?), Было бы полезно точно знать, какие состояния могут вызывать всплывающее окно. И чтобы быть абсолютно уверенным в том, что всплывающее окно подавлено, было бы полезно иметь возможность надежного запуска.

Так что же, собственно, вызывает это всплывающее окно? Было высказано предположение, что это напрямую связано с памятью графического процессора. В этой ссылке есть эксперимент, в котором они открывают множество приложений и наблюдают за ростом (динамической) памяти GPU. Однако они также отмечают, что в их случае вместо всплывающего окна Windows просто автоматически переключается на базовую цветовую схему без предупреждения. При воспроизведении эксперимента я обнаружил то же самое - Windows отключила Aero без предупреждения или всплывающего окна.

Я также написал небольшое приложение WPF, предназначенное для поглощения динамической памяти графического процессора, которое открывает и закрывает множество окон, содержащих растровые изображения. Конечно же, динамическая память GPU неуклонно растет, пока в конечном итоге Windows не отключит Aero без предупреждения или всплывающего окна. Это произошло в моем случае, когда я достиг очень верхнего предела (~ 1650 МБ)

Я смог поглотить выделенную память графического процессора, подключив экраны и установив их на очень высокое разрешение. Снова выделенная память увеличится, и Windows автоматически отключит Aero без предупреждения или всплывающего окна, когда оно достигнет предела. (64МБ в моем случае)

Я знаю, что всплывающее окно может происходить на этой комбинации оборудования и образа WES7, но я не могу этого сделать. Из моих экспериментов это, кажется, не связано напрямую с каким-то порогом в памяти графического процессора (выделенного или динамического), кажется, есть какой-то другой фактор.

У нас также был один случай, когда часть нашего приложения перестала отвечать на запросы одновременно с появлением всплывающего окна, поэтому любая информация об условиях, которые могут вызвать всплывающее окно, может быть подсказкой того, что вызвало зависание. Возможно.

У кого-нибудь есть надежный метод запуска всплывающего окна на своем компьютере, вместо того, чтобы Windows просто отключала Aero автоматически? Кто-нибудь знает точно, какие условия вызывают всплывающее окно, в отличие от автоматического отключения Aero?

2
Более общим решением вашей проблемы может быть использование SetWinEventHook для определения, когда открыты новые окна переднего плана, и программным способом их скрытия и восстановления фокуса в вашем приложении. Таким образом, вы закрываете не только этот конкретный диалог, но и любые другие фиктивные окна, которые по любой причине могут лишить вас контроля над вашим приложением. Timothy Fries 9 лет назад 0

0 ответов на вопрос