我想为外部应用程序的窗口(不是我的 C#/WinForms 程序的窗口)更改窗口可以调整大小的强制 Windows 最大宽度。
SM_CXMAXTRACK 的 GetSystemMetrics 文档说: “具有标题和大小边框的窗口的默认最大宽度(以像素为单位)。此度量指的是整个桌面。用户无法将窗口框架拖动到大于这些尺寸的尺寸。窗口可以通过处理来覆盖此值WM_GETMINMAXINFO 消息。”
是否有一种方法可以在不处理 WM_GETMINMAXINFO 消息的情况下修改此 SM_CXMAXTRACK 值(系统范围或特定窗口)?也许是未记录的函数、注册表设置等?
(或者:MINMAXINFO.ptMaxTrackSize 的文档说:“这个值基于虚拟屏幕的大小,可以通过系统指标 SM_CXMAXTRACK 和 SM_CYMAXTRACK 以编程方式获取。”也许有一种方法可以更改 的大小虚拟屏幕?)
谢谢
最佳答案
我知道限制窗口大小的唯一两种方法是处理 WM_GETMINMAXINFO,或者修改 WM_WINDOWPOSCHANGING 中 WINDOWPOS 结构中传递的值。这两种方法都涉及能够拦截和处理窗口的消息。据我所知,没有外部设置可以限制窗口的大小。
如果您没有其他应用程序的源代码,我唯一建议的就是编写一个将代码注入(inject)其他应用程序的程序(通过 SetWindowsHookEx 或 CreateRemoteThread),然后对窗口进行子类化并处理这些消息。
关于c# - 有没有办法在不使用 WM_GETMINMAXINFO 消息的情况下更改窗口的最大宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698113/