[Bug]: 自多显示器切换到单显示器后软件窗口位置异常
环境信息
系统版本:Windows 11 23H2 软件版本:0.8.52 显示设备:笔记本主屏(2560 * 1600)+副屏(1600 * 980)
问题复现与描述
- 在连接副屏后,将软件窗口拖动至副屏;
- 随后拔掉副屏;
- 软件窗口并没有自动回到主屏,而是卡在屏幕之外,无法操作;
- 软件工作正常,但是任务栏窗口无法预览;
- 只能在系统托盘内操作。
尝试解决
- 重启软件和系统(无效);
- 修改分辨率和缩放(无效);
- 重新接入副屏,拖回主屏(可行、繁琐);
- 重装软件(可行、繁琐)。
我认为这个BUG对于经常需要屏幕切换的用户是灾难性的。
情况发生了变化,在此修正:
- 在连接副屏后,将软件窗口拖动至副屏;
- 随后拔掉副屏,并关机重启;
- 软件窗口并没有自动回到主屏,而是卡在屏幕之外,无法操作;
- 软件工作正常,但是任务栏窗口无法预览;
- 只能在系统托盘内操作
环境相同,我在升级55之后,就看不到图像界面了,只能在托盘操作,点击任务栏的图标,会看到白色的方块从屏幕左边收缩展开,一直是两个屏幕使用,卸载重装,降级都没能解决
相同问题,软件现在连副屏也跑出去了,完全无法操作。 ~~有录视频,晚点可能上传。~~
异常现象录屏
https://github.com/user-attachments/assets/8f8877b3-3b7e-4952-b220-2b3919d8db27
原谅我拍的屏,因为 OBS 录制效果并不好。
异常窗口信息(Spy++)
Window 000300EO "FICIash" FLUTTER RUNNER WIN32 WINDOW
General
Styles
Windows
Class
Process
@YanBai233 @intblank 已经手动解决,让 GPT 写了段 python 代码,运行下面代码即可恢复:
import win32gui
import win32con
def move_window_to_top_left(title):
# 查找窗口句柄
hwnd = win32gui.FindWindow(None, title)
if hwnd:
# 获取窗口当前位置和大小
rect = win32gui.GetWindowRect(hwnd)
width = rect[2] - rect[0]
height = rect[3] - rect[1]
# 移动窗口到屏幕左上角 (0, 0)
win32gui.MoveWindow(hwnd, 0, 0, width, height, True)
print(f"窗口 '{title}' 已成功移动到左上角。")
else:
print(f"未找到标题为 '{title}' 的窗口。")
# 调用函数,移动名为 FlClash 的窗口
move_window_to_top_left("FlClash")
恢复截图
@PA733 感谢,跑了一下恢复了
+1