You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下将窗口移动至鼠标位置或指定坐标的工具及相关API咨询

Windows系统下将窗口移动至鼠标位置或指定坐标的工具及相关API咨询

首先给你几个实用的解决方案,从最简单的自带操作到工具、API都有:

一、Windows自带的快捷操作(无需额外工具)

这个方法很多人都不知道,完全不需要装任何东西就能找回不在可见区域的窗口:

  1. 先点击任务栏上的目标窗口,确保它是当前激活的窗口
  2. 按住 Alt + 空格键,会弹出窗口的控制菜单
  3. 按下 M 键(选择“移动”选项)
  4. 现在你可以用键盘方向键移动窗口,直到它出现在可见区域;或者直接点击鼠标左键,拖动窗口到你想要的位置
  5. 松开鼠标或按下Enter键确认位置

二、第三方工具推荐

1. AutoHotkey 自定义脚本

如果经常遇到这个问题,用AutoHotkey写个小脚本绑定快捷键,就能一键搞定,灵活性拉满:
比如下面两个实用脚本:

  • 将激活窗口移到鼠标位置(绑定Win+Shift+M):
#Shift::M
{
    ; 获取当前激活窗口的句柄
    WinGet, activeWinID, ID, A
    ; 获取鼠标当前屏幕坐标
    MouseGetPos, mouseX, mouseY
    ; 移动窗口到鼠标位置,保持原有尺寸
    WinMove, ahk_id %activeWinID%, , %mouseX%, %mouseY%
    return
}
  • 将激活窗口移到主屏幕左上角(绑定Win+Shift+0):
#Shift::0
{
    WinGet, activeWinID, ID, A
    ; 直接移到主屏幕(0,0)位置
    WinMove, ahk_id %activeWinID%, , 0, 0
    return
}

使用方法:安装AutoHotkey后,把代码保存为.ahk文件,双击运行即可,以后按对应的快捷键就生效。

2. DisplayFusion

这是一款专门的多屏管理工具,除了窗口移动,还能设置窗口吸附、多屏壁纸等功能。它有个“Move Window to Current Monitor”的选项,一键就能把窗口移到你当前鼠标所在的屏幕,非常适合多屏用户。

3. Window Mover

轻量级的小工具,打开后会列出所有当前运行的窗口,你可以直接选择目标窗口,然后输入坐标或者选择屏幕,一键移动窗口到指定位置,操作简单直观。

三、Windows API 实现思路

如果你想自己开发工具,核心用到以下几个Windows API:

1. 获取窗口句柄

  • GetForegroundWindow():获取当前激活的窗口句柄(适合用户点击任务栏后的场景)
  • FindWindow(LPCSTR lpClassName, LPCSTR lpWindowName):根据窗口类名或标题查找窗口句柄
  • EnumWindows():枚举所有顶层窗口,适合批量处理的场景

2. 获取鼠标坐标

  • GetCursorPos(LPPOINT lpPoint):获取鼠标当前的屏幕坐标,返回的POINT结构体包含X、Y值

3. 移动窗口

  • MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint):直接设置窗口的位置和大小,参数里X/Y是目标坐标,nWidth/nHeight可以用GetWindowRect()获取窗口原有尺寸,bRepaint设为TRUE让窗口重绘
  • SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags):更灵活的窗口位置设置,可以控制窗口层级、是否重绘等,比如用SWP_NOSIZE参数保持窗口原有大小

简单C++示例片段

#include <windows.h>

// 将窗口移到鼠标位置
void MoveWindowToMouse(HWND hWnd) {
    POINT cursorPos;
    GetCursorPos(&cursorPos); // 获取鼠标坐标
    RECT winRect;
    GetWindowRect(hWnd, &winRect); // 获取窗口当前尺寸
    // 移动窗口,保持原有宽高
    MoveWindow(hWnd, cursorPos.x, cursorPos.y, 
        winRect.right - winRect.left, 
        winRect.bottom - winRect.top, 
        TRUE);
}

// 将窗口移到主屏幕左上角
void MoveWindowToMainScreen(HWND hWnd) {
    // 获取主显示器信息
    HMONITOR hPrimaryMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTOPRIMARY);
    MONITORINFO monitorInfo{};
    monitorInfo.cbSize = sizeof(MONITORINFO);
    GetMonitorInfo(hPrimaryMonitor, &monitorInfo);
    
    RECT winRect;
    GetWindowRect(hWnd, &winRect);
    // 移到主屏幕左上角
    MoveWindow(hWnd, monitorInfo.rcMonitor.left, monitorInfo.rcMonitor.top,
        winRect.right - winRect.left,
        winRect.bottom - winRect.top,
        TRUE);
}

备注:内容来源于stack exchange,提问作者KulaGGin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:39:10