возвращается. Послушайте, когда у меня будет Visual Studio под рукой, я опубликую пример кода для этого. Поскольку вы были правы, это было не так ясно; Я предполагал, что кто-то, читая это, пойдет в Документы и получит это автоматически. Но реализация на C # тоже на самом деле mssing в PInvoke.net.

от вопрос уже есть ответ здесь:

Окно Windows Forms меняет свой размер при создании окна WPF 3 ответа

Итак, у нас есть действительно странная проблема. Наше приложение представляет собой приложение на C # / WinForms. В нашей версии 6.0 наше приложение не поддерживает DPI. В нашем выпуске 6.1 он внезапно стал осведомленным о DPI.
В выпуске 6.0, если вы запускаете его с высоким разрешением, он использует растровое масштабирование Windows, что хорошо, потому что это не влияет на макеты экрана. В версии 6.1, поскольку по какой-то причине стало известно о DPI, пользовательские интерфейсы искажаются.
Мы не можем исправить это прямо сейчас. У нас есть сотни экранов, поэтому для их правильной работы в режиме DPI с поддержкой потребуется много времени.

Мы подтвердили это с помощью SysInternals Process Explorer. В нашей версии 6.0 это показываетсознающий, но в нашем выпуске 6.1 это изначально показываетсознающий, но затем меняется наСистема осведомлена.
Последнее происходит, когда код поступает из EXE в нашу сборочную DLL, которая содержит весь код нашего пользовательского интерфейса (наш EXE-файл - это очень тонкая оболочка; все, что он на самом деле делает, это вызывает класс Controller в нашей сборке уровня представления.)

Мы подтвердили следующее:

Обе версии построены в режиме выпуска с использованием VSS 2017.Обе версии ориентированы на одну и ту же платформу .NET Framework (4.5).Обе версии используют одну и ту же версию DevExpress.Обе версии имеют одинаковый манифест приложения, что делаетне включить настройку осведомленности о DPI.Ни в одной из версий нет вызовов для API-интерфейсов Windows, связанных с DPI.Используя Sys Internals и некоторые окна сообщений, мы определили, в какой момент станет известно о выпуске 6.1 (точка входа в сборку Presentation) и какие DLL загружены в этот момент (наши, DevExpress, другие зависимости), а затем мы создали небольшое фиктивное приложение, которое ссылается на те же библиотеки DLL и подтвердил, что они загружены. Это фиктивное приложение не распознает DPI.Мы сравнили основные файлы csproj между обоими выпусками, и нет никаких существенных различий.Ни один релиз не ссылается на что-либо из WPF.

Мы не понимаем, почему наша версия 6.1 внезапно стала поддерживать DPI. Мы не понимаем, на что еще обратить внимание, и нам нужно исправление, которое переводит этот выпуск обратно в режим DPI без информации. Это задерживает наш релиз. Был бы очень признателен за любые указатели. Мы готовы попробовать что-нибудь на этом этапе.

Ответы на вопрос(1)

Ваш ответ на вопрос