1 (изменено: Вадя, 2014-01-16 19:03:11)

Тема: AHK: alt-tab menu не вызывается

[РЕШЕНО]

В доках AHK довольно однозначно описана функциональность так называемого alt-tab menu,
но как не пытался вызвать его, оно не появляется. В истории нажатия клавиш отслеживал, нужные клавиши нажимаются в нужном порядке, но бесполезно. Может это проблема виндовз 8.1? Или я чего-то не понимаю, хоть перечитай все доки и убей (первое я сделал)

Вот примеры, которые я попробовал (с перезгрузкой скрипта, поочерди, все как положено):

LCtrl & CapsLock::AltTab
RButton & WheelUp::AltTabMenu
#g::Send {Alt Down}{Tab}
#g::Send {Alt Down}{Ctrl Down}{Tab Down}
Send {Tab Up}{Alt Up}{Ctrl Up}
#g::
KeyWait LWin
SendInput {Alt Down}{Tab}
KeyWait LButton, D
SendInput {Alt Up}
return

это вот пример непосредственно из доков, но все равно не работает

*F1::Send {Alt down}{tab} ; Asterisk is required in this case.
!F2::Send {Alt up}  ; Release the Alt key, which activates the selected window.
~*Escape::
IfWinExist ahk_class TaskSwitcherWnd
    Send {Escape}{Alt up}  ; Cancel the menu without activating the selected window.
return

2

Re: AHK: alt-tab menu не вызывается

Попробовал последний пример - отлично работает на Win 7.
F1 - вызов альттаба и перещелкивание,
F2 - Активация выбранного окна
Esc - Отмена менюхи

3

Re: AHK: alt-tab menu не вызывается

Вот такой пример работает? Удерживая среднюю кнопку мыши, можно при помощи колёсика переключаться между пунктами "AltTab Menu".

MButton::AltTabMenu
WheelDown::AltTab
WheelUp::ShiftAltTab

4 (изменено: Вадя, 2013-12-08 00:32:25)

Re: AHK: alt-tab menu не вызывается

ypppu пишет:

Вот такой пример работает? Удерживая среднюю кнопку мыши, можно при помощи колёсика переключаться между пунктами "AltTab Menu".

Похожее я видел где-то тоже, попробовал еще раз - не вызывается меню, вместо этого залипают клавиши (приходится сбрасывать через ctrl+alt+del на экран блокировки и возвращаться по esc). Есть такое предположение, что это связано с ahk_class TaskSwitcherWnd (это окно AltTab Menu в вин 8.1 так называется). В старых доках я видел другой класс окна (из цифр #32..). Но нигде на офф.форуме и в доках не попадалось упоминание что вин 8.1 чем то отличается в плане работы AltTab Menu или не поддерживается.

вот так еще попробовал, окно не появляется все равно, но хоть клавиши не залипают )


~#z Up::
SendInput {Alt down}{Tab}                                
WinWait, ahk_class TaskSwitcherWnd, , 1
if ErrorLevel
{
    SendInput {Alt up}
    MsgBox, WinWait timed out.
    KeyHistory
    return
}
WinWaitClose
SendInput {Alt up}
Return

в окне KeyHistory имеем следующее


5B  15B         d    4.08    LWin               C:\Users\*\Documents\AutoHotkey.ahk - AutoHotkey v1.1.13.01
5A  02C         d    0.14    Z                  
5B  15B         u    0.05    LWin               
5A  02C    h    u    0.05    Z                  
A4  038    i    d    0.00    LAlt               ;здесь имеем чистую комбинацию LAlt+Tab 
09  00F    i    d    0.00    Tab                
09  00F    i    u    0.00    Tab                ;LAlt зажат как положено
A4  038    i    u    1.00    LAlt               ;окно ahk_class TaskSwitcherWnd не появилось

5

Re: AHK: alt-tab menu не вызывается

Когда писались "доки", вроде ещё не было WinVista, Win7, WIn8.

6

Re: AHK: alt-tab menu не вызывается

ypppu пишет:

Когда писались "доки", вроде ещё не было WinVista, Win7, WIn8.

Я так и понял что придется забыть про эту тему пока ) Вот этот скрипт замены AltTab.ahk работает в win8.1, но не совсем так как хочется. А править среди 2174 строк кода https://github.com/studgeek/AltTabAHK/b … AltTab.ahk хочется в последнюю очередь )

7

Re: AHK: alt-tab menu не вызывается

Когда экспериментировал с очередным сочетанием клавиш для другой программы каким-то образом
иногда появлялось AltTab Menu винды. Хотя обработка была для Ctrl+Tab и альта не было видно даже в логе нажатых клавиш. Через какую-то хитрозакрученную жопу оно все работает )

8 (изменено: Вадя, 2014-01-16 19:01:53)

Re: AHK: alt-tab menu не вызывается

Решил проблему на родном форуме AHK, топик с решением:
http://www.autohotkey.com/board/topic/9 … esnt-work/

9 (изменено: mendisabal, 2014-04-17 12:01:01)

Re: AHK: alt-tab menu не вызывается

Простите, я так понял, в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run нужно добавить все 3ри екзешника CertMgr.Exe ,makecert.exe и signtool.exe ?
Как это правильно сделать ?

10 (изменено: Вадя, 2014-04-17 12:16:58)

Re: AHK: alt-tab menu не вызывается

добавить все 3ри екзешника CertMgr.Exe ,makecert.exe и signtool.exe ?

Там нигде не написано что нужно эти экзешники в авторан пихать ) Они используются для подписи exe-файла, которому вы хотите дать права на доступ к Метро-интефейсу винды (т.е. к alt-tab меню, т.к. оно входит именно в этот интерфейс).
А добавлять в указанную ветку авторана нужно именно подписанное приложение, т.к. другими способами авторан для него не сработает.
И подписанное приложение должно находится в доверенных локациях:
\Program Files\
\windows\system32\

На всякий случай поясню по русски:
1. Изменить сертификат приложения (для этого подойдет программа Resource Hacker)
2. Подписать приложение (для этого используются CertMgr.Exe ,makecert.exe и signtool.exe)
3. Поместить в доверенную локацию (\Program Files\  или \windows\system32\)
*при выполнении пунктов 1..3 приложение будет иметь доступ к alt-tab menu
4. При необходимости иметь автозапуск приложения поместить его в указанную ветку авторана

11 (изменено: mendisabal, 2014-04-17 13:45:22)

Re: AHK: alt-tab menu не вызывается

Спасибо за русский, я только начал обуздание 8.1, не ожидал таких сложностей, да и альт+таб мне необходимо на рабочем столе а не в метро (я понял что все равно понадобятся права ), буду пробовать ,program files x86 не является "доверенной локацией" ? .ahk файл одинаково с екзешником подписывать ?

12

Re: AHK: alt-tab menu не вызывается

mendisabal пишет:

альт+таб мне необходимо на рабочем столе а не в метро

альт+таб меню является частью метро-интерфейса вне зависимости от ваших потребностей, оно одинаковое как на рабочем столе, так и в метро

mendisabal пишет:

program files x86 не является "доверенной локацией" ?

доверенные локации указаны на сайте майкрософта, этот список я и скопировал

mendisabal пишет:

.ahk файл одинаково с екзешником подписывать ?

только экзешник )

13

Re: AHK: alt-tab menu не вызывается

Вадя, ознакомьтесь с этой темой, отредактируйте свой пост.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14 (изменено: mendisabal, 2014-04-17 18:32:32)

Re: AHK: alt-tab menu не вызывается

Вадя пишет:

только экзешник )

Это радует ), но возникла другая ситуация, в 2х словах:
Необходимо по одинарному нажатию кнопки перелистывать подряд все открытые приложения, а по долгому нажатию её же - закрывать (Alt+F4). Но оказалось, что alt+tab перелистывает только последние 2ва приложения и если открыто их всего 5ть ,то до 3х из них "дело не дойдет". Ув. Вадя, вы как человек решивший свою задачу, наверняка столкнулись с этим вопросом, в голове есть алгоритмы удержания alt и многократного нажатия tab ,при этом пересчет открытых в данный момент приложений, но это как то сложно все, не подскажите более простой способ решить мою задачу ?
Win+tab аналогично себя ведет(, с другой стороны, если задачу поставить наоборот, т.е. при удержании перелистывание, а при однократном нажатии - закрытие ,решаемо без проблем...

15

Re: AHK: alt-tab menu не вызывается

Alt+Esc мне подходит, пусть в этом выборе нет рабочего стола, но я готов с этим смирится, жалко что работает только с развернутыми окнами .
В итоге все упирается в действие "развернуть все окна", казалось бы, это делает shift+win+m, но это не так, это сочетание разворачивает только те окна, которые были свернуты по win+b, граждане, как развернуть абсолютно все свернутые окна ?

16

Re: AHK: alt-tab menu не вызывается

граждане, как развернуть абсолютно все свернутые окна ?

PostMessage, 0x112, 0xF030,,,  ahk_id 0xFFFF 

Но не советую!

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: alt-tab menu не вызывается


WinGet, ID, List
Loop % ID
    WinMaximize % "ahk_id" ID%A_Index%

Но тоже много лишнего открывает

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18

Re: AHK: alt-tab menu не вызывается

WinGet, ID, List
Loop % ID {
    WinExist("ahk_id" ID%A_Index%)
    WinGet state, MinMax
    if (state = -1) {
        WinRestore
    }
}

19 (изменено: mendisabal, 2014-04-20 21:12:23)

Re: AHK: alt-tab menu не вызывается

Работает ! Только почему то портиться размер некоторых окон, хотя они открыты были до сворачивания на весь экран.

numpad3::
WinGet, ID, List
Loop % ID {
    WinExist("ahk_id" ID%A_Index%)
    WinGet state, MinMax
    if (state = -1) {
        WinRestore
    }
}
sleep 50           
Send {Alt down}{Escape}{Alt up} ;собственно перебор сам)
       
Return

20

Re: AHK: alt-tab menu не вызывается

Нет, некоторые окна просто "зависают", я уже начинаю понимать, что качественно разворачивать все окна средствами ahk вряд ли получиться, поэтому я решил попробовать изменить условия своей задачи, не сочтите за наглость пожалуйста .
   При одинарном нажатии на хоткей переключать открытые окна, т.е. жать alt+esc
При долгом удержании хоткея осуществлять перебор в меню Alt+tab т.е. зажать alt и с некой периодичностью нажимать tab, пока хоткей нажат.
  В арсенале имеется простой скрипт, при однократном нажатии num1 нажимается 3, а при долгом нажатии без отпускания 2 , причем периодично, до тех пор,пока не отпустишь num1:

$numpad1::
nil=0
   loop
   {
      If (A_TimeSinceThisHotkey>250)
      {
         Send ,2
         sleep 30
         nil=1
      }
      if !GetKeyState(SubStr(A_ThisHotkey,2), "P") 
      {
         if (nil=0)
        {  
         Send 3
        }
       Break

      }     
   }
   KeyWait, numpad1
Return

Флажок nil позволяет пропустить якобы однократное нажатие,после много кратного.
В блокноте все прекрасно работает, вот, весь вчерашний вечер я пытался адаптировать его под свою задачу, но безрезультатно :


numpad3::
Send {Alt down}
nil=0
   loop
   {
    
    If (A_TimeSinceThisHotkey>400)
      {
         sleep 60
         Send {tab}
         sleep 400
         nil=1
      }
      if !GetKeyState(SubStr(A_ThisHotkey,2), "P") 
      {
         if (nil=0)
        {
            
         Send {Alt down}{Escape}{Alt up} ;собственно перебор сам)
        }
       Break

      }     
   }
   KeyWait, numpad3
Send {Alt up}
Return

Само меню alt+tab подозрительно быстро мелькает на экране, при чем все задержки проверены простыми действиями в блокноте, помогите пожалуйста.

21

Re: AHK: alt-tab menu не вызывается

Всё управление двумя кнопками, самому понравилось.

+ открыть спойлер

2:: 
    IfWinNotActive ahk_class TaskSwitcherWnd
    {
        WaitUp = 1
        KeyWait, %A_ThisHotkey%, T0.4      
        SendInput % !ErrorLevel ? "!{Esc}" : "^!{Tab}"  
    }
    Else 
    {
        If WaitUp
            KeyWait, %A_ThisHotkey% 
        Else
            SendInput  {Right}
        WaitUp = 0
    }
    SendInput  {alt up}
    Return 
  
1::  
    IfWinActive ahk_class TaskSwitcherWnd 
    {
        SendInput  {Enter}
        KeyWait, %A_ThisHotkey% 
        Return
    }
    KeyWait, %A_ThisHotkey%, T0.4 
    If ErrorLevel
    {
        WinMinimizeAll
        WinActivate ahk_class Progman
        KeyWait, %A_ThisHotkey% 
        Return
    }
    WinGet, ID, List
    Loop % ID  {
        WinGet, Style, Style, % "ahk_id" ID%A_Index%
        if (Style & 0x20000000)   ;  WS_MINIMIZE   
            WinActivate % "ahk_id" ID%A_Index%  
    } 
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22 (изменено: serzh82saratov, 2014-04-21 16:06:40)

Re: AHK: alt-tab menu не вызывается

Alt+Esc мне подходит *** жалко что работает только с развернутыми окнами .

Можно поправить:

+ открыть спойлер

2:: 
    IfWinNotActive ahk_class TaskSwitcherWnd
    {
        WaitUp = 1
        KeyWait, %A_ThisHotkey%, T0.4      
        SendInput % !ErrorLevel ? "!{Esc}" : "^!{Tab}"  
        WinGet, State, MinMax, A
        If state != 1
            WinRestore A
    }
    Else 
    {
        If WaitUp
            KeyWait, %A_ThisHotkey% 
        Else
            SendInput  {Right}
        WaitUp = 0
    }
    SendInput  {alt up}
    Return 

Только почему то портиться размер некоторых окон, хотя они открыты были до сворачивания на весь экран.

Тут вроде не портится.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui