2016-03-13 10 views
8

Ok. So che questa è una domanda molto stupida. Ma sono bloccato da un'ora.Qual è il modo giusto per inviare Alt + Tab in Ahk?

Ho avuto pochissima esperienza con ahk, tuttavia ho lavorato su ogni script fino ad ora senza problemi. Ho esplorato i tutorial di ahk ma non ho trovato nessuna soluzione fino ad ora.

Sto provando a passare a prev. app con una sola chiave numpad off. Ho provato:

!{Tab} 

,

{Alt down}{Tab}{Alt up} 

ho provato con ritardi sonno, multilinea, multilinea tra parentesi, con e senza le virgole dopo i comandi, ecc

I sono abbastanza semplice ma qualcosa che non ho ancora provato

Qualche suggerimento?

risposta

5
; AltTab-replacement for Windows 8: 

F1:: 
List = 
WinGet, AllWinsHwnd, List 
Loop, % AllWinsHwnd 
{ 
    WinGet, exStyle, exStyle, % "ahk_id" AllWinsHwnd%A_Index% 
    If !(exStyle & 0x100) 
     continue 
    WinGetTitle, CurrentWinTitle, % "ahk_id " AllWinsHwnd%A_Index% 
    If (CurrentWinTitle = "") 
     continue 
    IfWinActive, % "ahk_id " AllWinsHwnd%A_Index% 
     continue 
    WinActivate, % "ahk_id " AllWinsHwnd%A_Index% 
     break 
} 
return 



; AltTabMenu-replacement for Windows 8: 

F2:: 
List = 
Menu, windows, Add 
Menu, windows, deleteAll 
WinGet, AllWinsHwnd, List 
Loop, %AllWinsHwnd% 
{ 
    WinGet, exStyle, exStyle, % "ahk_id" AllWinsHwnd%A_Index% 
    If !(exStyle & 0x100) 
     continue 
    WinGetTitle, CurrentWinTitle, % "ahk_id " AllWinsHwnd%A_Index% 
    If (CurrentWinTitle = "") 
     continue 
    WinGetClass, CurrentWinClass, % "ahk_id " AllWinsHwnd%A_Index% 
    Menu, windows, Add, %CurrentWinTitle%, ActivateTitle 
    WinGet, Path, ProcessPath, % "ahk_id " AllWinsHwnd%A_Index% 
    If (CurrentWinClass = "ApplicationFrameWindow") 
     Menu, windows, Icon, %CurrentWinTitle%, %A_WinDir%\System32\SHELL32.dll, 3, 0 
    else 
     Menu, windows, Icon, %CurrentWinTitle%, %Path%,, 0 
} 
CoordMode, Mouse, Screen 
MouseMove, (0.4*A_ScreenWidth), (0.35*A_ScreenHeight) 
CoordMode, Menu, Screen 
Xm := (0.25*A_ScreenWidth) 
Ym := (0.25*A_ScreenHeight) 
Menu, windows, Show, %Xm%, %Ym% 
return 

ActivateTitle: 
SetTitleMatchMode 3 
WinActivate, %A_ThisMenuItem% 
return 
+0

Questo è esattamente quello che stavo cercando! Funziona alla grande! Grazie! –

2

Non dovresti inviare manualmente alt + tab perché è un comando speciale di Windows, piuttosto usa lo AltTab commands che lo fa per te.

AltTabMenu apre il menu scheda e seleziona il programma, mentre AltTab, ShiftAltTab navigare attraverso di esso.

h::AltTabMenu 
n::AltTab 
m::ShiftAltTab 
+0

Beh, mi sembrava una soluzione piacevole, ma non riuscivo a farlo funzionare. –

+0

L'ho studiato in profondità e non importa quanto scrivo la sceneggiatura, la chiave che dovrebbe aprire AltTabMenu o Invia Alt + Tab in qualche modo ignora la 'Tab' e lo script non funziona finché non premo hotkey + Real Tab sul mio tastiera. –

+0

@GlebG Aprire un nuovo file di testo vuoto, copiare il codice sopra nel file, salvare come * test.ahk * ed eseguire il file. Quindi premi i pulsanti: 'h n m h' – 2501

0

Bene, finalmente ho trovato la ragione e alcune "soluzioni" here e here. Sembra che Windows 8 blocchi Ahk {Alt Down} {Tab} e AltTabMenu e alcuni altri tasti.

Per ora sto usando questo per scorrere le finestre in avanti:

Send !{ESC} 

Questo per visualizzare l'AltTabMenu:

Run, "C:\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Window Switcher.lnk" 

E questo per passare alla applicazione precedente come suggerito in una delle Argomenti:

LCtrl & z:: ; AltTabMenu 


state := GetKeyState("Capslock", "T") 
if state = 1 
SetCapsLockState, Off ; CapsLock On blocks Task Switching metro window 

Send, !{Tab} ; prevents displaying inactive Task Switching metro window 
run, Window Switcher.lnk ; must be in script directory otherwise include path 
WinWait, Task Switching,, 2 
KeyWait, Ctrl 
Send, {Enter} 

if state = 1 
SetCapsLockState, On ; restores CapsLock State 
state = 

return 

#IfWinActive, Task Switching 
LCtrl & q::Send, {Right} 
LCtrl & a::Send, {Left} 

Sarebbe bello arrivare all'app precedente senza spruzzare AltTabMenu.

3

Se si desidera solo per tornare alla domanda precedente, utilizzare la trasmissione,! {Esc}

+0

Beh, questo era quello che stavo usando. Ma non era esattamente quello che stavo cercando. Capisco che passa al prev. app nell'ordine in cui è stata eseguita. Quindi funziona per passare al prev. app, ma non per tornare indietro. Grazie comunque! –

2

ci sono alcuni problemi con 8/10 di Windows e tasti come ctrl-alt-del e alt- scheda. Ecco una soluzione:

F1:: 
    { 
     Send {Alt Down}{Tab} ;Bring up switcher immediately    
     KeyWait, F1, T.5 ; Go to next window; wait .5s before looping 
     if (Errorlevel) 
     {  
     While (GetKeyState("F1","P")) { 
      Send {Tab}   
      Sleep, 400 ; wait 400ms before going to next window 
     } 
    } 
     Send {Alt Up} ;Close switcher on hotkey release 
} 
return 
Problemi correlati