Как распознать, когда количество, положение или разрешение мониторов изменились? [Дубликат]

This question already has an answer here:

How to detect screen resolution change in Delphi? 1 answer

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

Я также пытаюсь избежать использования VCL (например,Vcl.Forms.Screen.MonitorCount) именно поэтому я предпочитаю ловить сообщение Windows.

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

Решение Вопроса

WM_DISPLAYCHANGE который отправляется, по крайней мере, при изменении разрешения.

 19 февр. 2019 г., 14:21
Более новые версии Delphi (De 10.2) предлагают методScreen.UpdateDisplayInformation так что вам не нужно воссоздавать экранный объект
 13 июн. 2012 г., 00:19
В какой момент вы можете использоватьEnumDisplayMonitors обнаруживать новую информацию, такую как положение, размер, количество и т. д. +1.
 13 июн. 2012 г., 09:13
или просто воссоздать глобальныйScreen переменная:Screen.Free; Screen := TScreen.Create(nil);

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