想要的功能
目前好像只會出現在 1 號顯示器,有沒有機會是可以偵測多螢幕並且延伸到畫面最寬呢?
使用情境與動機
比如說 2 號顯示器接在 1 號顯示器左右兩邊的時候可以延伸
又或者是可以自由穿梭在不同螢幕底下
替代方案(選填)
No response
其他補充(選填)
有請 AI 給了一下可以抓取螢幕位置的範例程式
結果可以像在設定頁面中那樣,抓到多個螢幕也可以抓到各個螢幕之間的相對位置關係
import win32api
import matplotlib.pyplot as plt
import matplotlib.patches as patches
def draw_monitor_layout():
# 1. 取得螢幕資訊
monitors = win32api.EnumDisplayMonitors()
fig, ax = plt.subplots(figsize=(10, 6))
all_lefts, all_tops, all_rights, all_bottoms = [], [], [], []
print(f"繪製中... 偵測到 {len(monitors)} 個螢幕")
for i, (hMonitor, hdc, pyRect) in enumerate(monitors):
info = win32api.GetMonitorInfo(hMonitor)
rect = info['Monitor']
left, top, right, bottom = rect
width = right - left
height = bottom - top
is_primary = info['Flags'] & 1
# 2. 建立螢幕方塊 (注意:Windows 的 Y 軸向下增加,plt 通常向上增加,我們後續會翻轉 Y 軸)
color = 'skyblue' if not is_primary else 'royalblue'
rect_patch = patches.Rectangle(
(left, top), width, height,
linewidth=2, edgecolor='black', facecolor=color, alpha=0.7
)
ax.add_patch(rect_patch)
# 3. 在方塊中間標註資訊
label = f"Monitor {i+1}\n{width}x{height}\n({left}, {top})"
if is_primary: label += "\n(Primary)"
ax.text(left + width/2, top + height/2, label,
ha='center', va='center', fontsize=9, fontweight='bold')
# 收集座標以利設定坐標軸範圍
all_lefts.append(left); all_tops.append(top)
all_rights.append(right); all_bottoms.append(bottom)
# 4. 設定繪圖格式
# 翻轉 Y 軸,因為 Windows 的 Y 軸座標 (0,0) 在左上角,往下為正
plt.gca().invert_yaxis()
# 自動縮放座標軸
plt.xlim(min(all_lefts) - 500, max(all_rights) + 500)
plt.ylim(max(all_bottoms) + 500, min(all_tops) - 500)
plt.title("Windows Multi-Monitor Layout (Relative Position)")
plt.xlabel("Virtual Screen X (Pixels)")
plt.ylabel("Virtual Screen Y (Pixels)")
plt.grid(True, linestyle='--', alpha=0.5)
plt.axhline(0, color='black', lw=1) # 標記 X 基準線
plt.axvline(0, color='black', lw=1) # 標記 Y 基準線
plt.tight_layout()
plt.show()
if __name__ == "__main__":
# 如果畫面模糊,可以加入這行處理高 DPI 縮放問題
# import ctypes; ctypes.windll.shcore.SetProcessDpiAwareness(1)
draw_monitor_layout()
想要的功能
目前好像只會出現在 1 號顯示器,有沒有機會是可以偵測多螢幕並且延伸到畫面最寬呢?
使用情境與動機
比如說 2 號顯示器接在 1 號顯示器左右兩邊的時候可以延伸
又或者是可以自由穿梭在不同螢幕底下
替代方案(選填)
No response
其他補充(選填)
有請 AI 給了一下可以抓取螢幕位置的範例程式
結果可以像在設定頁面中那樣,抓到多個螢幕也可以抓到各個螢幕之間的相對位置關係