AHK: как использовать горячую клавишу в сочетании с GUI

мой графический интерфейс работает нормально.

вот скриншот моего окна редактирования, GUI:

enter image description here

F1 срабатывает скрипт.


Затем я бы ввел 1, 2, 3 или 4 и нажал Submit или нажмите ENTER;который ввод в настоящее время не принимается, но отправляет его в скрытый режим или что-то неизвестное мне, что происходит в мире AHK. -- исправлено davidmneedham -- спасибо!

код: не работает так, как хотелось бы

#NoEnv
#SingleInstance Force

F1::

    aa := "1) opt 1 or (f)"
    bb := "2) opt 2 (v)"
    cc := "3) open opt 3"
    dd := "4) open opt 4"

    Gui, Add,   Text, x50  y50  w100 h30, %aa%
    Gui, Add,   Text, x50  y70  w100 h30, %bb%
    Gui, Add,   Text, x50  y90  w300 h30, %cc%
    Gui, Add,   Text, x50  y110 w300 h30, %dd%

    Gui, Add,   Text, x50  y140 w50  h20, Selection:
    Gui, Add,   Edit, x100 y140 w100 h20 vChoice
    Gui, Add,   Text, x205 y140 w300 h30, (press ENTER)


    ;Gui, Add, Button, x50  y170 w50 h30  default gCancel, Cancel 
    ;Gui, Add, Button, x130 y170 w50 h30  gSubmit, Submit

    ;Enter command fix by davidmneedham on StackExchangs thanks!        
    Gui, Add, Button, x50  y170 w50 h30  gCancel, Cancel 
    Gui, Add, Button, x130 y170 w50 h30  default gSubmit, Submit

    Gui, Color, EEAA99
    Gui +LastFound  ; Make the GUI window the last found window for use by the line below.
    WinSet, TransColor, ff00ff
    Gui, Show, w350 h250, Enter Selection

;I even tried a while loop, here but it caused other problems
;while(true) 
;{ 
;  If (GetKeyState("f"))
;  { 
;     msgbox, f pressed
;     break 
;  } 
;}

return


Submit: 
    Gui, Submit

    if (Choice = "2")
    {
        msgbox chose 2
    }
    else if (Choice = "3")
    {
        msgbox chose 3
    }
    else if (Choice = "4")
    {
        msgbox chose 4
    }
    else
    {   
        msgbox chose 1
    }

    ButtonCancel:
        Gui, destroy
    return

;One suggestion I tried this

#If WinActive("Download ahk_exe AutoHotkey.exe")
    f:: Send 2{Tab 2}{Enter}
    v:: Send 3{Tab 2}{Enter}
#If

то, что я пытаюсь включить это:

F1 введите 1,2,3,4


Или просто


нажмите f стрелять "2, ENTER"


нажмите v стрелять "3, ENTER"






Я просмотрел этот код из (ССЫЛКА С КОДОМ HERE_HOTKEYS) и смотришь на этом (ССЫЛКА С КОДОМ HERE_KEYPRESS):

исследуя код:

#SingleInstance force

Input, Key, L1

MsgBox You pressed %Key%!

OnExit ExitSub
return

ExitSub:
ExitApp

Я не могу, как включить это в
F1 запуск скрипта и принятие
GUI исходный код или принять f или v, in
когда линия закончится сценарий
и не будет работать снова до F1 при нажатии.

Recap:

F1 fires script 
2, Enter 
or 
3, Enter 
or 
4, Enter 
or 
f 
or 
v 
... ends the script until F1 pressed once more.
7
задан ejbytes
29.04.2023 13:23 Количество просмотров материала 3696
Распечатать страницу

1 ответ

причина, по которой ваше окно закрывается без каких-либо действий при нажатии введите является то, что кнопка Отмена указана как действие по умолчанию.

изменить эти строчки:

Gui, Add, Button, x50  y170 w50 h30  default gCancel, Cancel 
Gui, Add, Button, x130 y170 w50 h30  gSubmit, Submit

и сделать кнопку Отправить действие по умолчанию:

Gui, Add, Button, x50  y170 w50 h30  gCancel, Cancel 
Gui, Add, Button, x130 y170 w50 h30  default gSubmit, Submit

причина вашей контекстной горячие клавиши не работают, потому что вы ошиблись WinTitle: ваш заголовок страницы окно "введите выбор". Вместо этого используйте следующие строки

#If WinActive("Enter Selection")
  f:: Send 1{Tab 2}{Enter}
  v:: Send 2{Tab 2}{Enter}
#If

полный функциональный скрипт ниже:

#NoEnv
#SingleInstance force

F1::

    aa := "1) opt 1 or (f)"
    bb := "2) opt 2 (v)"
    cc := "3) open opt 3"
    dd := "4) open opt 4"

    Gui, Add,   Text, x50  y50  w100 h30, %aa%
    Gui, Add,   Text, x50  y70  w100 h30, %bb%
    Gui, Add,   Text, x50  y90  w300 h30, %cc%
    Gui, Add,   Text, x50  y110 w300 h30, %dd%

    Gui, Add,   Text, x50  y140 w50  h20, Selection:
    Gui, Add,   Edit, x100 y140 w100 h20 vChoice
    Gui, Add,   Text, x205 y140 w300 h30, (press ENTER)

    Gui, Add, Button, x50  y170 w50 h30  gCancel, Cancel
    Gui, Add, Button, x130 y170 w50 h30  default gSubmit, Submit

    Gui, Color, EEAA99
    WinSet, TransColor, ff00ff
    Gui, Show, w350 h250, Enter Selection

return

#If WinActive("Enter Selection")
    f:: Send 1{Tab 2}{Enter}
    v:: Send 2{Tab 2}{Enter}
#If

Submit: 
    Gui, Submit

    if (Choice = "2")
    {
        msgbox chose 2
    }
    else if (Choice = "3")
    {
        msgbox chose 3
    }
    else if (Choice = "4")
    {
        msgbox chose 4
    }
    else
    {   
        msgbox chose 1
    }

    Gui, Destroy
return

Cancel:
    Gui, Destroy
return
2
отвечен davidmneedham 2023-04-30 21:11

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх