Windows 10 不再允许拖动伪最大化窗口;有解决方案吗?

Windows 10 不再允许拖动伪最大化窗口;有解决方案吗?

在 Windows 10 下,我无法再拖动伪最大化的窗口。例如,一个“最大化”到其最大尺寸 1280x1024(根据我的 .rdp 文件)的远程桌面窗口必须恢复到较小的尺寸,然后拖动,然后恢复,即使窗口本身没有最大化到显示器的工作区区域。这以前在 Windows 8.1(或其他版本的 Windows)中不是问题。

我已经尽职尽责地进行了一些研究。以下是我调查过的一些事情,发现它们不是原因或有帮助:

  • Windows 的 AeroSnap 设置或可用性
  • 视频驱动程序功能或设置
  • 其他第三方监视器或任务栏实用程序

我拥有的任何以这种方式最大化的软件都被锁定,必须先恢复,然后我才能拖动它,包括前面提到的远程桌面、我在窗口模式下玩的一些游戏等。当然,其他未最大化的应用程序不会出现这个问题。

可以在 .NET 中构建一个测试应用程序来演示此问题。只需构建一个 WinForms 应用程序,将 Form.MaximizedBounds 设置为任意值(例如 500,500),并在启动时将表单最大化(Form.WindowState = Maximized)。在 Windows 8.1(及更早版本)下,它可以在屏幕上拖动而不会出现问题,但在 Windows 10 下则不能。

有人知道发生了什么事以及是否有任何解决方法吗?

答案1

我知道这是一个老问题,但自从切换到 Windows 10 以来,这个问题一直困扰着我,我昨晚才解决了它。所以我回答这个问题,希望能帮助其他人。

首先,我的情况是这样的。我在家里的办公室管理大约 16 台服务器。我为每台服务器创建了保存的 RDP 连接,以便连接到我的桌面。每天,我都会使用这些连接登录到每台服务器,检查日志、硬件状态等。我会同时进行所有这些操作,因此每天至少会同时打开 16 个 RDP 窗口。不断缩小尺寸并贴到屏幕边缘,让我抓狂不已!

以下是我修复此问题的方法...

通过右键单击每个已保存的 RDP 连接,选择“打开方式”,然后选择记事本,您可以获得一个定义 RDP 连接的纯文本文件(而不是典型的 GUI RDP 属性面板)。在每个已保存的连接上,我更改了以下 4 个参数:屏幕模式 ID、桌面宽度、桌面高度和 winposstr!以下是它们在我保存的典型 RDP 连接之一上的样子:

screen mode id:i:1
desktopwidth:i:1280
desktopheight:i:1024    
winposstr:s:0,3,1575,160,2900,1230

屏幕模式 ID 必须设置为 1。这会使远程会话出现在窗口中。

桌面宽度和高度是不言而喻的......但它们可以是任何值,只要它们小于您正在查看它们的屏幕。

Winposstr 是最重要的一个。当您打开已保存的 RDP 连接文件时,此参数的第五和第六个值与第三和第四个参数相比会比我示例中的要小得多。您必须编辑最后两个值...使它们更大!要让您的 RDP 窗口全尺寸打开,您必须分别将所需的垂直和水平分辨率(加上一点额外值)添加到第三和第四个数字。所以,1575+1280=2855。如果您将该数字准确地输入第五个值,您仍然会看到滚动条。所以在我的系统上,我输入了 2900。同样,160+1024=1184。1200 仍然给我滚动条,所以我尝试了 1230,它成功了。

我还没有花时间弄清楚第三和第四个数字到底代表什么。很明显,它们以某种方式定义了窗口在屏幕上的位置,但我还没有弄清楚确切的关系。这些数字对你来说可能有所不同……当你保存自己的 RDP 连接文件时,它们可能会有所不同,因为你的设置与我不同。但关键是,你必须将所需 RDP 窗口的水平和垂直分辨率添加到第三和第四个数字(无论它们是什么)上,再加上一些额外的数字,然后用你得到的结果替换第五和第六个数字!

完成更改后,保存文件并关闭。然后,当您双击该 RDP 连接时,它应该会全尺寸打开,并能够拖动到您想要的任何位置,而不会自动缩小尺寸!!!!

在我的系统上,由上述参数定义的 RDP 会话的左上角将位于屏幕顶部下方 0 ​​像素处,以及左边缘 3 像素处。您可以通过编辑这些值来更改初始位置...例如,10,10 表示将其置于下方 10 像素处,左侧 10 像素处。但是,如果您添加这些值,您还必须添加第 5 和第 6 个值。就像我说的,我还没有弄清楚确切的关系...只是知道,如果您更改这些值,您可能还必须增加第 5 和第 6 个值以避免滚动条。

最后,在我的系统上,我取消选中了‘防止窗口移动到屏幕边缘时自动排列’参数(位于轻松访问中心的‘使鼠标更易于使用’部分)。

答案2

首先介绍一些背景信息。我经常使用多个 RDP 会话同时连接到不同的远程系统。我的系统上每个 RDP 窗口的分辨率都配置为 1280x768,该系统有两个显示器,每个显示器的分辨率为 1920x1080。

在 Win 10 上,当我打开 RDP 窗口时,伪最大化窗口会卡在左上角,无法拖动到任何地方。正如您所报告的,RDP 窗口在 Win 7 和 Win 8 上的表现不同。

然而,我最近发现了一种解决方法。

在 Win 10 上,打开 RDP 会话后,“取消最大化”RDP 窗口。它会变成半尺寸,并带有水平和垂直滚动条。手动调整半尺寸 RDP 窗口的大小,直到滚动条消失。现在,您可以将手动“伪最大化”的 RDP 窗口拖动到任何地方,就像在 Win 7 和 8 上一样。不过要小心。如果您不小心双击标题栏,RDP 窗口会跳回左上角,自动“伪最大化”并再次变得不可移动。

虽然这不是一个完美的解决办法,但我可以忍受。

答案3

我使用部分得票最多的答案解决了我的问题,但它确实过于复杂(并且他的相同值向我显示了滚动条,因此我经过多次反复试验才最终得到一个可行的解决方案)

在我的例子中,我的 Windows 服务器窗口默认为 1920x1080,尝试调整它的大小使其变为 800x600,我解决了这个问题,只需在输进字段其余部分保留默认设置:

desktopwidth:i:1920
desktopheight:i:1080
winposstr:s:0,3,0,0,2000,1200

我也尝试设置精确的值(从包含导航条的窗口屏幕截图中读取像素)但滚动条仍然显示,所以我放弃了,但我对结果很满意!

答案4

刚刚找到答案。我自己也遇到过同样的问题。在系统属性中,单击多任务。然后打开“通过将窗口拖到屏幕的侧面或角落来自动排列窗口”解决了每个显示器上锁定最大化网页的问题。3 显示器设置在这里。希望这能有所帮助。

相关内容