AHK: Come utilizzare un tasto di scelta rapida insieme alla GUI


3

La mia GUI funziona bene.

Ecco uno screenshot della mia casella di modifica, GUI:

inserisci qui la descrizione dell'immagine

F1licenzia la sceneggiatura.
Vorrei quindi inserire 1, 2, 3 o 4 e fare clic Submito premere ENTER; quale Enter non viene attualmente accettato ma lo invia in una modalità nascosta o qualcosa di ignoto a me che sta accadendo nel mondo AHK. - risolto da davidmneedham - grazie!

codice : non funziona come desiderato

#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

Quello che sto cercando di incorporare è questo
F1:, ENTER 1,2,3,4
OPPURE
premere semplicemente fper sparare "2, ENTER"
premere vper sparare "3, ENTER"


Ho guardato questo codice da (CODICE LINK HERE_HOTKEYS) e guardando questo (CODICE LINK HERE_KEYPRESS) :

Codice investigativo:

#SingleInstance force

Input, Key, L1

MsgBox You pressed %Key%!

OnExit ExitSub
return

ExitSub:
ExitApp

Non riesco a comprendere come incorporarlo nel F1licenziare lo script e nell'accettare il codice originale della GUI OPPURE accettare fo v, in cui una qualsiasi riga termina lo script e non verrà eseguita di nuovo fino a F1quando non viene premuto.

Ricapitolare:

F1fuochi di fuoco 
 2,Enter 
o 
3, Enter 
o 
4, Enter 
o 
f 
o 
v 
... termina la sceneggiatura finché F1 non viene premuto ancora una volta.

Risposte:


2

Il motivo per cui la finestra si chiude senza alcuna azione quando si preme Enterè che il pulsante Annulla è elencato come azione predefinita.

Cambia queste righe:

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

E imposta il pulsante Invia come azione predefinita:

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

Il motivo per cui i tasti di scelta rapida sensibili al contesto non funzionano è perché hai WinTitle sbagliato: il titolo della finestra è "Immetti selezione". Utilizzare invece le seguenti righe

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

Lo script funzionale completo è di seguito:

#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

Ah, buono a sapersi. AHK per programmatori ... ma anche chi taglia / incolla il codice LOL. Ma la preoccupazione principale è che [f] e [v] sparano, ma sparare senza essere un nuovo tasto di scelta rapida dopo che la funzionalità di f1 + GUI distruggono. Quindi, uno per una buona condivisione. Non una risposta per dire, ma un buon commento.
ejbytes

Parzialmente risposto, grazie. Credito, dove il credito è dovuto nella mia domanda mod con le tue informazioni aggiornate.
ejbytes

Ho aggiornato la mia risposta per rispondere alla seconda parte della tua domanda.
davidmneedham,

Sto cercando di seguire la logica e la sintassi perché non capisco completamente. Ho ricevuto questo suggerimento da un utente. Ho pensato che fosse se AHK fosse attivo e che "fosse" la sintassi reale. Quindi è una sintassi che fol.ows ....? "Selezione" o "Inserisci selezione"? Dove esattamente o quale riga del mio codice dato? Ti dispiacerebbe fare una taglia / incolla la mia + la tua? Grazie!
ejbytes,

Ah, "Enter Selection" è il titolo della mia finestra ?! LOL
ejbytes
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.