D'accord. Je sais que c'est une question très stupide… .. Mais je suis déjà bloqué depuis une heure.
J'ai très peu d'expérience avec ahk, mais j'ai réussi à faire fonctionner chaque script jusqu'à présent sans aucun problème. J'ai exploré les tutoriels ahk mais n'ai trouvé aucune solution jusqu'à présent.
J'essaie de passer à prev. application avec un seul pavé numérique hors touche . J'ai essayé:
!{Tab}
,
{Alt down}{Tab}{Alt up}
Je l'ai essayé avec des délais de veille, multiligne, entre crochets, avec et sans virgule après une commande, etc.
Je suis assez sûr que c'est très simple mais quelque chose que je n'ai pas encore essayé.
Toute suggestion?
$F1:: AltTab()
$F2:: AltTabMenu()
; AltTab-replacement for Windows 8:
AltTab(){
list := ""
WinGet, id, list
Loop, %id%
{
this_ID := id%A_Index%
IfWinActive, ahk_id %this_ID%
continue
WinGetTitle, title, ahk_id %this_ID%
If (title = "")
continue
If (!IsWindow(WinExist("ahk_id" . this_ID)))
continue
WinActivate, ahk_id %this_ID%, ,2
break
}
}
; AltTabMenu-replacement for Windows 8:
AltTabMenu(){
list := ""
Menu, windows, Add
Menu, windows, deleteAll
WinGet, id, list
Loop, %id%
{
this_ID := id%A_Index%
WinGetTitle, title, ahk_id %this_ID%
If (title = "")
continue
If (!IsWindow(WinExist("ahk_id" . this_ID)))
continue
Menu, windows, Add, %title%, ActivateTitle
WinGet, Path, ProcessPath, ahk_id %this_ID%
Try
Menu, windows, Icon, %title%, %Path%,, 0
Catch
Menu, windows, Icon, %title%, %A_WinDir%\System32\Shell32.dll, 3, 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%
}
ActivateTitle:
SetTitleMatchMode 3
WinActivate, %A_ThisMenuItem%
return
;-----------------------------------------------------------------
; Check whether the target window is activation target
;-----------------------------------------------------------------
IsWindow(hWnd){
WinGet, dwStyle, Style, ahk_id %hWnd%
if ((dwStyle&0x08000000) || !(dwStyle&0x10000000)) {
return false
}
WinGet, dwExStyle, ExStyle, ahk_id %hWnd%
if (dwExStyle & 0x00000080) {
return false
}
WinGetClass, szClass, ahk_id %hWnd%
if (szClass = "TApplication") {
return false
}
return true
}
EDIT (suggéré par l'utilisateur Ooker):
Le script affiche un menu que vous pouvez choisir.
Voici à quoi ça ressemble:
Vous ne devriez pas envoyer manuellement alt + tab car il s’agit d’une commande spéciale de windows, utilisez plutôt les commandes AltTab qui le font pour vous.
AltTabMenu
ouvre le menu des onglets et sélectionne le programme, tandis que AltTab
, ShiftAltTab
le parcourent.
h::AltTabMenu
n::AltTab
m::ShiftAltTab
Si vous voulez juste revenir à l’application précédente, utilisez Send,! {Esc}
Il y a quelques problèmes avec Windows 8/10 et des touches comme ctrl-alt-del et alt-tab. Voici une solution:
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
Enfin, finalement, j'ai trouvé la raison et quelques "solutions" ici et ici .. Il semble que Windows 8 bloque Ahk {Alt Bas} {Tab} et AltTabMenu et quelques autres clés.
Pour l'instant, j'utilise ceci pour faire défiler les fenêtres:
Send !{ESC}
Ceci pour afficher le AltTabMenu:
Run, "C:\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Window Switcher.lnk"
Et ceci pour passer à l’application précédente comme suggéré dans l’un des sujets:
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}
Ce serait génial de pouvoir accéder à l’application précédente sans éclabousser AltTabMenu.
A travaillé pour moi:
F1::
Send, {ALT DOWN}{TAB}{ALT UP}
return
Il simule le comportement Alt + Tab pour la touche F1.