0

マウスで移動しているウィンドウを離す前に右クリックして、ウィンドウを画面の隅 (4 分の 1) にスナップしたい。現在、アクティブなウィンドウを移動するのに苦労しています。左画面では、左上の位置にメモ帳を移動できますが、マウス ボタンを離すと元の位置に戻ります。名前で呼び出す必要があります。アクティブなウィンドウで動作するようにしたいのです。考え?

~Lボタン & ~Rボタン::

CoordMode,Mouse,Screen  ;mouse position relative to the screen
MouseGetPos,Xpos,Ypos   ;get mouse position coordinates
;WinGet, active_id, ID, A
;msgbox %Xpos%,%Ypos%   ;show the saved mouse coordinates 

RIGHT_height=537
RIGHT_width=848
RIGHT_leftpos=1680
RIGHT_rightpos=2523
RIGHT_toppos=-70
RIGHT_vp=460    

LEFT_height=518
LEFT_width=847
LEFT_leftpos=-8
LEFT_rightpos=834
LEFT_toppos=-10
LEFT_vp=503

;LEFT SCREEN
if (Xpos < LEFT_rightpos and ypos < LEFT_vp) {  ;LEFT top left
    WinMove,Untitled - Notepad,,%LEFT_leftpos%,%LEFT_toppos%,%LEFT_width%,%LEFT_height%

}

if (Xpos > LEFT_rightpos and Xpos < 1680 and ypos < LEFT_vp) {  ;LEFT top right
    MsgBox LEFT top right
}

if (Xpos < LEFT_rightpos and Xpos < 1680 and ypos > LEFT_vp) {  ;LEFT top right
msgbox LEFT Bottom Left
}

if (Xpos > LEFT_rightpos and Xpos < 1680 and ypos > LEFT_vp) {  ;LEFT top right
msgbox LEFT Bottom Right
}

;RIGHT SCREEN
if (Xpos < RIGHT_rightpos and Xpos >= 1680 and ypos < RIGHT_vp) {   ;RIGHT top left
msgbox RIGHT Top Left
}

if (Xpos > RIGHT_rightpos and Xpos >= 1680 and ypos < RIGHT_vp) {   ;RIGHT top right
msgbox RIGHT Top Right
}

if (Xpos < RIGHT_rightpos and Xpos >= 1680 and ypos > RIGHT_vp) {   ;RIGHT top right
msgbox RIGHT Bottom Left
}

if (Xpos > RIGHT_rightpos and Xpos >= 1680 and ypos > RIGHT_vp) {   ;RIGHT top right
msgbox RIGHT Bottom Right
}

戻る

4

1 に答える 1

1

追加する必要があります

Send, {LButton Up}

あなたのコードで。これにより、LButtonホットキーのアクションが完了したときに、ホールドがウィンドウを引き継ぐのを防ぎます。

で使用するWinMoveには、これをコマンドahk_idに入れる必要があります。WinMove下記参照。

~LButton & ~RButton::
    CoordMode,Mouse,Screen 
    MouseGetPos,Xpos,Ypos   
    WinGet, active_id, ID, A ; use active_id in WinMove
    Send, {LButton Up} ; Prevents window from snapping back


    RIGHT_height=537
    RIGHT_width=848
    RIGHT_leftpos=1680
    RIGHT_rightpos=2523
    RIGHT_toppos=-70
    RIGHT_vp=460    

    LEFT_height=518
    LEFT_width=847
    LEFT_leftpos=-8
    LEFT_rightpos=834
    LEFT_toppos=-10
    LEFT_vp=503

    ;LEFT SCREEN
    if (Xpos < LEFT_rightpos and ypos < LEFT_vp) {  ;LEFT top left
        WinMove,ahk_id %active_id%,,%LEFT_leftpos%,%LEFT_toppos%,%LEFT_width%,%LEFT_height%

    }

    if (Xpos > LEFT_rightpos and Xpos < 1680 and ypos < LEFT_vp) {  ;LEFT top right
        MsgBox LEFT top right
    }

    if (Xpos < LEFT_rightpos and Xpos < 1680 and ypos > LEFT_vp) {  ;LEFT top right
    msgbox LEFT Bottom Left
    }
Return
于 2013-09-05T20:44:04.997 に答える