Есть ли способ изменить максимальную ширину окна без использования сообщения WM_GETMINMAXINFO? - PullRequest
2 голосов
/ 23 апреля 2010

Я хочу изменить максимальную ширину Windows, на которую можно изменить размер окна, для окна внешнего приложения (не для окна моей программы на C # / WinForms).

Документация GetSystemMetrics для SM_CXMAXTRACK гласит: "Максимальная ширина по умолчанию для окна с границами заголовка и размера в пикселях. Этот показатель относится ко всему рабочему столу. Пользователь не может перетащить рамку окна до размера, превышающего эти размеры. Окно может переопределить это значение, обработавСообщение WM_GETMINMAXINFO. "

Есть ли способ изменить это значение SM_CXMAXTRACK (либо для всей системы, либо для одного конкретного окна) без обработки сообщения WM_GETMINMAXINFO?Возможно, недокументированная функция, параметр реестра и т. Д .?

(Или: документация для MINMAXINFO.ptMaxTrackSize гласит: «Это значение основано на размере виртуального экрана и может быть получено программным способом из системных показателейSM_CXMAXTRACK и SM_CYMAXTRACK. «Может быть, есть способ изменить размер виртуального экрана?)

Спасибо

1 Ответ

3 голосов
/ 25 ноября 2010

Единственный известный мне способ ограничения размера окна - это обработка WM_GETMINMAXINFO или изменение значений, передаваемых в структуре WINDOWPOS в WM_WINDOWPOSCHANGING. Оба эти метода предполагают возможность перехвата и обработки сообщений для окна. Насколько мне известно, нет внешней настройки для ограничения размера окна.

Если у вас нет исходного кода для другого приложения, единственное, что я могу предложить, - это написать программу, которая внедряет код в другое приложение (через SetWindowsHookEx или CreateRemoteThread), а затем создать подкласс для окна и обработать его. сообщения.

...