FlClash icon indicating copy to clipboard operation
FlClash copied to clipboard

[Bug]: 自多显示器切换到单显示器后软件窗口位置异常

Open YanBai233 opened this issue 1 year ago • 6 comments

环境信息

系统版本:Windows 11 23H2 软件版本:0.8.52 显示设备:笔记本主屏(2560 * 1600)+副屏(1600 * 980)

问题复现与描述

  1. 在连接副屏后,将软件窗口拖动至副屏;
  2. 随后拔掉副屏;
  3. 软件窗口并没有自动回到主屏,而是卡在屏幕之外,无法操作;
  4. 软件工作正常,但是任务栏窗口无法预览;
  5. 只能在系统托盘内操作。

尝试解决

  1. 重启软件和系统(无效);
  2. 修改分辨率和缩放(无效);
  3. 重新接入副屏,拖回主屏(可行、繁琐);
  4. 重装软件(可行、繁琐)。

我认为这个BUG对于经常需要屏幕切换的用户是灾难性的。

YanBai233 avatar Aug 15 '24 01:08 YanBai233

情况发生了变化,在此修正:

  1. 在连接副屏后,将软件窗口拖动至副屏;
  2. 随后拔掉副屏,并关机重启
  3. 软件窗口并没有自动回到主屏,而是卡在屏幕之外,无法操作;
  4. 软件工作正常,但是任务栏窗口无法预览;
  5. 只能在系统托盘内操作

YanBai233 avatar Aug 26 '24 02:08 YanBai233

环境相同,我在升级55之后,就看不到图像界面了,只能在托盘操作,点击任务栏的图标,会看到白色的方块从屏幕左边收缩展开,一直是两个屏幕使用,卸载重装,降级都没能解决

intblank avatar Sep 04 '24 01:09 intblank

相同问题,软件现在连副屏也跑出去了,完全无法操作。 ~~有录视频,晚点可能上传。~~

PA733 avatar Sep 11 '24 12:09 PA733

异常现象录屏

https://github.com/user-attachments/assets/8f8877b3-3b7e-4952-b220-2b3919d8db27

原谅我拍的屏,因为 OBS 录制效果并不好。

异常窗口信息(Spy++)

Window 000300EO "FICIash" FLUTTER RUNNER WIN32 WINDOW

General General

image_2024-09-11_20-50-06 (2) Styles

image_2024-09-11_20-50-06 (3) Windows

image_2024-09-11_20-50-06 (4) Class

image_2024-09-11_20-50-06 (5) Process

PA733 avatar Sep 11 '24 12:09 PA733

@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")

image 恢复截图

PA733 avatar Sep 11 '24 12:09 PA733

@PA733 感谢,跑了一下恢复了

intblank avatar Sep 11 '24 13:09 intblank

+1

derekhe avatar Feb 09 '25 05:02 derekhe