StrokesPlus.net教程及脚本持续更新

Alt+拖动窗口

也就是AltDrag,按下Alt,鼠标在窗口任意位置点击后,可以拖动窗口,Win10测试正常(官方论坛帖子

添加到:全局动作- 鼠标事件- 左键单击(开启)

if(click.Down) {
    if((sp.GetKeyState(vk.LMENU) & 0x8000) && !sp.GetStoredBool("MoveWindowActive")) {
        if(!click.Window.Maximized) {
            sp.StoreBool("MoveWindowActive", true);
            sp.StoreHandle("MoveWindowHandle", click.Window.HWnd);
            sp.StorePoint("MoveWindowMouseStart", sp.GetCurrentMousePoint());
            sp.StorePoint("MoveWindowStart", click.Window.Location);
            sp.CreateTimer("MoveWindow", 20, 10, String.raw`
                                    var wnd = sp.WindowFromHandle(sp.GetStoredHandle("MoveWindowHandle"));
                                    if(sp.GetKeyState(vk.ESCAPE) & 0x8000) {
                                        wnd.Location = sp.GetStoredPoint("MoveWindowStart");
                                        sp.DeleteTimer("MoveWindow");
                                    }
                                    var startMousePt = sp.GetStoredPoint("MoveWindowMouseStart");
                                    var currMousePt = sp.GetCurrentMousePoint();
                                    var currWinPt = wnd.Location;
                                    if(sp.GetStoredBool("MoveWindowActive")) {
                                        wnd.Location = new Point(currWinPt.X + currMousePt.X - startMousePt.X, currWinPt.Y + currMousePt.Y - startMousePt.Y);
                                    }
                                    sp.StorePoint("MoveWindowMouseStart", currMousePt);
                                `);
        }
    }
} else {
    if(sp.GetStoredBool("MoveWindowActive"))
    {
        sp.DeleteStoredHandle("MoveWindowHandle");
        sp.DeleteStoredBool("MoveWindowActive");
        sp.DeleteTimer("MoveWindow");
        sp.DeleteStoredPoint("MoveWindowMouseStart");
        sp.DeleteStoredPoint("MoveWindowStart");
    }
}