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

标签 c# windows winapi width max

我想为外部应用程序的窗口(不是我的 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/

相关文章:

winapi - 为什么从 Rust 调用 SystemParametersInfo 来设置壁纸会将其设置为黑色?

c# - 在 ASP.NET Core 中模拟 User.Identity 以进行单元测试

c# - 在已检查和未检查的上下文中编译

c++ - RegOpenKeyEx() 错误

javascript - 从浏览器检测 Windows 10

c++ - 在 QT 应用程序中使用 Windows 10 屏幕键盘

c++ - win32 CreateThread,如何将lpStartAddress参数作为c++类函数调用?

c# - ASP.NET WebApi 未收到发布数据

c# - 针对 AD 异常验证用户名和密码

c# - 从 C#/WPF 应用重启机器