有没有办法在不使用WM_GETMINMAXINFO消息的情况下更改窗口的最大宽度?

时间:2010-04-23 11:29:32

标签: c# windows winapi width max

对于外部应用程序的窗口(不是我的C#/ WinForms程序窗口),我想更改窗口可以调整大小的Windows最大宽度。

GetSystemMetrics for SM_CXMAXTRACK的文档说: “具有标题和大小调整边框的窗口的默认最大宽度,以像素为单位。此度量标准指的是整个桌面。用户无法将窗口框架拖动到大于这些尺寸的大小。窗口可以通过处理来覆盖此值WM_GETMINMAXINFO消息。“

有没有办法修改此SM_CXMAXTRACK值(系统范围或一个特定窗口),而不处理WM_GETMINMAXINFO消息?也许是一个无证件的功能,一个注册表设置等?

(或者:MINMAXINFO.ptMaxTrackSize的文档说:“此值基于虚拟屏幕的大小,可以通过系统指标SM_CXMAXTRACK和SM_CYMAXTRACK以编程方式获得。”也许有办法改变大小虚拟屏幕?)

谢谢

1 个答案:

答案 0 :(得分:3)

我知道限制窗口大小的两种方法是处理WM_GETMINMAXINFO,或者修改WM_WINDOWPOSCHANGING中WINDOWPOS结构中传递的值。这两种方法都涉及能够拦截和处理Window的消息。据我所知,没有外部设置来限制窗口的大小。

如果您没有其他应用程序的源代码,我唯一可以建议的是编写一个程序,将代码注入其他应用程序(通过SetWindowsHookEx或CreateRemoteThread),然后子类化窗口并处理这些消息。