2014-09-27 83 views
1

我有這個Autohotkeys腳本,我需要幫助。通過按下win + b窗口將移動另一個顯示器,在這種情況下是顯示器2.我希望每當它進入顯示器2時也使用鍵盤快捷鍵f11將其全屏顯示,然後當返回到顯示器1時把它從全屏中拿出來,然後把它扔掉。這可能嗎?這是我現在擁有的。使第二臺顯示器全屏顯示AHK

SysGet, Mon1, Monitor, 1 
SysGet, Mon2, Monitor, 2 

#b:: 
winget,windowtomove,id,A ;move active window 
gosub windowmove 
return 

windowmove: 
if not mon2left 
return 
wingetpos,x1,y1,w1,h1,ahk_id %windowtomove% 
winget,winstate,minmax,ahk_id %windowtomove% 
m1:=(x1+w1/2>mon1left) and (x1+w1/2<mon1right) and (y1+h1/2>mon1top) and (y1+h1/2<mon1bottom) ? 1:2 ;works out if centre of window is on monitor 1 (m1=1) or monitor 2 (m1=2) 
m2:=m1=1 ? 2:1 ;m2 is the monitor the window will be moved to 
ratiox:=abs(mon%m1%right-mon%m1%left)-w1<5 ? 0:abs((x1-mon%m1%left)/(abs(mon%m1%right-mon%m1%left)-w1)) ;where the window fits on x axis 
ratioy:=abs(mon%m1%bottom-mon%m1%top)-h1<5 ? 0:abs((y1-mon%m1%top)/(abs(mon%m1%bottom-mon%m1%top)-h1)) ;where the window fits on y axis 
x2:=mon%m2%left+ratiox*(abs(mon%m2%right-mon%m2%left)-w1) ;where the window will fit on x axis in normal situation 
y2:=mon%m2%top+ratioy*(abs(mon%m2%bottom-mon%m2%top)-h1) 
w2:=w1 
h2:=h1 ;width and height will stay the same when moving unless reason not to lower in script 

if abs(mon%m1%right-mon%m1%left)-w1<5 or abs(mon%m2%right-mon%m2%left-w1)<5 ;if x axis takes up whole axis OR won't fit on new screen 
    { 
    x2:=mon%m2%left 
    w2:=abs(mon%m2%right-mon%m2%left) 
    } 
if abs(mon%m1%bottom-mon%m1%top)-h1<5 or abs(mon%m2%bottom-mon%m2%top)-h1<5 
    { 
    y2:=mon%m2%top 
    h2:=abs(mon%m2%bottom-mon%m2%top) 
    } 
if winstate ;move maximized window 
    { 
    winrestore,ahk_id %windowtomove% 
    winmove,ahk_id %windowtomove%,,mon%m2%left,mon%m2%top 
    winmaximize,ahk_id %windowtomove% 
    } 
else 
    { 
    if (x1<mon%m1%left) 
     x2:=mon%m2%left ;adjustments for windows that are not fully on the initial monitor (m1) 
    if (x1+w1>mon%m1%right) 
     x2:=mon%m2%right-w2 
    if (y1<mon%m1%top) 
     y2:=mon%m2%top 
    if (y1+h1>mon%m1%bottom) 
     y2:=mon%m2%bottom-h2 
    winmove,ahk_id %windowtomove%,,x2,y2,w2,h2 ;move non-maximized window 
    } 
return 

感謝您的任何幫助!

回答

1

這的確是可能的,在這裏你去:

sysGet, d2, monitor, 2 
#ifWinActive ahk_class Chrome_WidgetWin_1 
#b:: 
    winGetPos, cx, cy, a 
    winGet, style, style 
    if !(style & 0xC00000) 
     send {f11} 
    send {blind}+#{right} 
    if !(((cx >= d2Left && cx <= d2Right) or (cx >= d2Right && cx <= d2Left)) and ((cy >= d2Top && cy <= d2Bottom) or (cy >= d2Bottom && cy <= d2Top))) 
     send {f11} 
return 
+0

你是一個生命的救星我的朋友,我感謝您的幫助! – Blake 2014-09-30 21:37:57

+0

您不會碰巧知道當窗口不在顯示屏上時,是否有方法在第二個顯示屏上沒有觸摸輸入? – Blake 2014-09-30 21:44:52

+0

你是在Win7還是8? – adaaaam 2014-09-30 22:47:20