AutoIT Sintassi porfavor!

Stato
Discussione chiusa ad ulteriori risposte.

Valar Morghulis

Utente Platinum
4 Luglio 2010
3,702
142
319
1,118
Salve , mi servirebbe la sintassi della istruzione che dice"se premo un tasto faccio una cosa , altrimenti un altra".
È una if lo so ma non so come si scrive. E se potete fatemi un esempio.

Inviato dal mio LG-E610 utilizzando Tapatalk
 
a quanto mi ricordo di autoit, per gli if non si mettono parentesi tonde ma una sintassi del tipo..
PHP:
if $variabile = true Then
//cose da fare per il vero
else
//cose da fare se è falso

Vuoi fare una Hotkeys, in modo che appena premi un tasto ti fa partire una funzione?
Se la risposta è si allora basta usare la funzione HotKeysSet ( CLICCAMI ), basta inserire come primo parametro il tasto da te scelto tra virgolette e graffe "{A}" e come secondo parametro la funzione da richiamare, in questo caso farai una funzione e gli passerai il nome come parametro.. "_Start"

Per leggere gli input dalla tastiera "a stile keylogger", si dovrebbe usare la funziona _IsPressed ( CLICCAMI ) anche se mi ha dato sempre problemi quando la usavo..

Esempio di utilizzo con if:
PHP:
#include <Misc.au3>#include <MsgBoxConstants.au3>

Local $hDLL = DllOpen("user32.dll")

While 1
    If _IsPressed("10", $hDLL) Then
        ConsoleWrite("_IsPressed - Shift Key was pressed." & @CRLF)
        ; Wait until key is released.
        While _IsPressed("10", $hDLL)
            Sleep(250)
        WEnd
        ConsoleWrite("_IsPressed - Shift Key was released." & @CRLF)
    ElseIf _IsPressed("1B", $hDLL) Then
        MsgBox($MB_SYSTEMMODAL, "_IsPressed", "The Esc Key was pressed, therefore we will close the application.")
        ExitLoop
    EndIf
    Sleep(250)
WEnd
 DllClose($hDLL)
Il codice lo ho preso dalla pagina di autoit..
 
a quanto mi ricordo di autoit, per gli if non si mettono parentesi tonde ma una sintassi del tipo..
PHP:
if $variabile = true Then
//cose da fare per il vero
else
//cose da fare se è falso

Vuoi fare una Hotkeys, in modo che appena premi un tasto ti fa partire una funzione?
Se la risposta è si allora basta usare la funzione HotKeysSet ( CLICCAMI ), basta inserire come primo parametro il tasto da te scelto tra virgolette e graffe "{A}" e come secondo parametro la funzione da richiamare, in questo caso farai una funzione e gli passerai il nome come parametro.. "_Start"

Per leggere gli input dalla tastiera "a stile keylogger", si dovrebbe usare la funziona _IsPressed ( CLICCAMI ) anche se mi ha dato sempre problemi quando la usavo..

Esempio di utilizzo con if:
PHP:
#include <Misc.au3>#include <MsgBoxConstants.au3>

Local $hDLL = DllOpen("user32.dll")

While 1
    If _IsPressed("10", $hDLL) Then
        ConsoleWrite("_IsPressed - Shift Key was pressed." & @CRLF)
        ; Wait until key is released.
        While _IsPressed("10", $hDLL)
            Sleep(250)
        WEnd
        ConsoleWrite("_IsPressed - Shift Key was released." & @CRLF)
    ElseIf _IsPressed("1B", $hDLL) Then
        MsgBox($MB_SYSTEMMODAL, "_IsPressed", "The Esc Key was pressed, therefore we will close the application.")
        ExitLoop
    EndIf
    Sleep(250)
WEnd
 DllClose($hDLL)
Il codice lo ho preso dalla pagina di autoit..

Il primo punto è quello che cerco, HotKeySet.
Siccome sono duro di comprendonio , riesci a farmi una brevissima stringa in cui dici " Se premo space torno ad a altrimenti niente". Te ne sarei grato !
 
non ho capito bene ciò che devi fare per quanto ho capito fin ora il codice è :

HotKeysSet("{SPACE}","_Start") e a questo punto farai una funzione chiamata _Start (Puoi scegliere tu il nome non per forza _Start) con ciò che deve fare, non c'è nemmeno bisogno dell'if siccome richiama subito la funzione quando si preme Space..
 
non ho capito bene ciò che devi fare per quanto ho capito fin ora il codice è :

HotKeysSet("{SPACE}","_Start") e a questo punto farai una funzione chiamata _Start (Puoi scegliere tu il nome non per forza _Start) con ciò che deve fare, non c'è nemmeno bisogno dell'if siccome richiama subito la funzione quando si preme Space..

La macro sarebbe un qualcosa del tipo
a:: (o almeno io inizio così)
Send {1 down}
Send {1 up}
Send {Space down}
Send {Space up}

e poi questa "if" in modo tale che se io clicco Space torna ad a e quindi rifà tutto mentre se non clicco niente ovviamente non cambia nulla.
Immagina che io prema 1 e poi space (facciamo finta per un gioco di luci) e poi debba aspettare che esca la luce per premere il tasto space e ricominciare tutto da capo. Ovviamente se la luce non la vedo non premo niente e sarebbe questo "l'else". Spero di essermi spiegato ma sono di fretta :\
 
La macro sarebbe un qualcosa del tipo
a:: (o almeno io inizio così)
Send {1 down}
Send {1 up}
Send {Space down}
Send {Space up}

e poi questa "if" in modo tale che se io clicco Space torna ad a e quindi rifà tutto mentre se non clicco niente ovviamente non cambia nulla.
Immagina che io prema 1 e poi space (facciamo finta per un gioco di luci) e poi debba aspettare che esca la luce per premere il tasto space e ricominciare tutto da capo. Ovviamente se la luce non la vedo non premo niente e sarebbe questo "l'else". Spero di essermi spiegato ma sono di fretta :\
Scusami ma non ho capito bene, se riesco a spiegare meglio sarebbe meglio xD in ogni caso taggo [MENTION=200092]Because[/MENTION] che potrebbe aiutarti..
 
Scusami ma non ho capito bene, se riesco a spiegare meglio sarebbe meglio xD in ogni caso taggo @Because che potrebbe aiutarti..

Più semplice di così non posso spiegarlo.
Immagina che io per iniziare questo gioco debba premere 1 e poi spazio.
Immagina che il gioco consista nel premere space quando vedo la luce (e quando premo space debba tornare all'inzio del gioco dove devo premere 1 e space).
PS: chiaro che se la luce non la vedo non premo niente :\
perciò per questo " Quando vedo la luce premo e se non la vedo niente" mi serve questo If , capito ora?
 
Più semplice di così non posso spiegarlo.
Immagina che io per iniziare questo gioco debba premere 1 e poi spazio.
Immagina che il gioco consista nel premere space quando vedo la luce (e quando premo space debba tornare all'inzio del gioco dove devo premere 1 e space).
PS: chiaro che se la luce non la vedo non premo niente :\
perciò per questo " Quando vedo la luce premo e se non la vedo niente" mi serve questo If , capito ora?

si può fare ma il "tempo" di quando appare la luce, sopratutto anche "dove appare" cambiano?

Inviato dal mio GT-I9505 utilizzando Tapatalk
 
Ultima modifica:
si può fare ma il "tempo" di quando appare la luce, sopratutto anche "dove appare" cambiano?

Inviato dal mio GT-I9505 utilizzando Tapatalk

Era un esempio , in realtà è , premo 1 poi space , appena arriva una immagine premo space devo rifare tutto , 1 space etc.
Se non succede niente , niente. :\

Del tipo:

a::
Send {1 down}
Send {1 up}
delay 300
Send {Space down}
Send {Space up}
if ( press space) \\ mettiamola così :\
{
go to a
}
else
{
\\ non succede niente? :\
}
end
 
Era un esempio , in realtà è , premo 1 poi space , appena arriva una immagine premo space devo rifare tutto , 1 space etc.
Se non succede niente , niente. :\
La logica rimane la stessa.
Il tempo da un immagine a un altra cambia suppungo, giusto?Anche la posizione ?(in qualche modo devi far capire al tuo script che l'immagine in quell'area è presente o no.Per questo te lo chiedo)

Inviato dal mio GT-I9505 utilizzando Tapatalk
 
La logica rimane la stessa.
Il tempo da un immagine a un altra cambia suppungo, giusto?Anche la posizione ?(in qualche modo devi far capire al tuo script che l'immagine in quell'area è presente o no.Per questo te lo chiedo)

Inviato dal mio GT-I9505 utilizzando Tapatalk
ODDIO. NO. NO. NO.

Sono partito con il chiedervi la sintassi e poi un esempio di sviluppo, se sapessi comè la sintassi corretta non starei qua.
Ragiona , se ti dico che c'è un else nel quale non faccio niente come faccio a sapere dopo quanto tempo l'immagine esce?
Devo fare qualcosa di banale , tutto qua. L'1 e space sono richiesti perchè sono una combinazione di tasti necessaria per "avviare il gioco" , chiamalo così se vuoi.
L'immagine esce a random , appena la vedo premo space e lo script torna all'inizio facendo ripartire il gioco > 1 e space e il gioco parte.
Se dopo aver premuto il tasto 1 e space non premo niente per un tempo che può essere anche infinito non deve fare nulla.
Te capì?
 
Allora... il tuo è un giochino no?
Con 1 e space il gioco parte... vabbene...
se invece premi space ti torna all'inizio del gioco e per ripartire dovrai ripremere 1 e space :omfg:?
(Si sono co****** e non ho capito bene)
 
Allora... il tuo è un giochino no?
Con 1 e space il gioco parte... vabbene...
se invece premi space ti torna all'inizio del gioco e per ripartire dovrai ripremere 1 e space :omfg:?
(Si sono co****** e non ho capito bene)

Premo 1 e poi Space , dopo un pò di secondi ( non definito) esce una immagine.
Quando esce l'immagine io devo premere spazio e rifare tutto. QUINDI , appena premo spazio lo script deve rifare 1 , space e stare fermo fino a che non premo Space.
La condizione ELSE dovrà essere niente LOGICAMENTE , nel senso che se l'immagine passa e sono ritardato o l'immagina non è ancora arrivata non premo nulla!
 
Premetto che non ho capito ancora nulla :asd: cioè si.. ma no :\

Poi, in base a quello che hai detto tu prima si preme 1 (E per ora non fa nulla) e aspetta che tu prema space (per far spuntare l'immagine), quindi, se non premi space non spunta no? e quindi rimane fermo finche non lo premi no?

Ora, una volta che spunta questa immagine tu devi premere space ( una cosa del tipo, acchiappa la talpa e tu col martello :asd: ) e una volta che lo hai premuto tornerai al punto di partenza, e dovrai premere 1 e poi space per rigiocare...
Dimmi se sbaglio...

Se è cosi ti consiglio di non fare prima clicchi 1 e in seguito space perchè oltre ad usare la Hotkeys dovresti anche usare la seconda opzione che ti ho dato ( _isPressed ), ti consiglio di fare direttamente che se preme 1 e space (insieme) si avvia il gioco cosi da far tutto su una hotkeys, non si può fare questo con solo hotkeys..
 
a::
Send {1 down}
Send {1 up}
Send {Space down}
Send {Space up}

Cosa c'è di difficile? Preme 1 e poi space e il gioco è startato. Ora manca la if per gestire il se premo space o meno.
 
ODDIO. NO. NO. NO.

Sono partito con il chiedervi la sintassi e poi un esempio di sviluppo, se sapessi comè la sintassi corretta non starei qua.
Ragiona , se ti dico che c'è un else nel quale non faccio niente come faccio a sapere dopo quanto tempo l'immagine esce?
Devo fare qualcosa di banale , tutto qua. L'1 e space sono richiesti perchè sono una combinazione di tasti necessaria per "avviare il gioco" , chiamalo così se vuoi.
L'immagine esce a random , appena la vedo premo space e lo script torna all'inizio facendo ripartire il gioco > 1 e space e il gioco parte.
Se dopo aver premuto il tasto 1 e space non premo niente per un tempo che può essere anche infinito non deve fare nulla.
Te capì?

Ok e come fai a capire quando l'immagine appare,affinchè puoi premere space?

Inviato dal mio GT-I9505 utilizzando Tapatalk
 
a::
Send {1 down}
Send {1 up}
Send {Space down}
Send {Space up}

Cosa c'è di difficile? Preme 1 e poi space e il gioco è startato. Ora manca la if per gestire il se premo space o meno.

C'è di difficile comprendere ciò che scrivi.. quando leggo Send{Space etc...} mi fa pensare che è una specie di macro dove il programma ti preme quello che vuoi tu..

Comunque, vedrò di provare a farti un codice stasera/domani , ma per questo c'è anche la funzione _isPressed e io mi ci faccio a pugni :\
 
Ultima modifica:
C'è di difficile comprendere ciò che scrivi.. quando leggo Send{Space etc...} mi fa pensare che è una specie di macro dove il programma ti preme quello che vuoi tu..

Comunque, vedrò di provare a farti un codice stasera/domani , ma per questo c'è anche la funzione _isPressed e io mi ci faccio a pugni :\
Ah si perchè AutoHotkey non fa questo? Non fa delle macro? :\
A me serve una macro si , uso questo "linguaggio" principalmente per creare macro. Ora è più chiaro?
Forse mi sono espresso male , ecco tutto.
L'esempio è qui riportato >
ef4a2e216f.png


Che è quello che ho provato a fare , sono arrivato appunto fino al "hotkeyset".
 
Ah si perchè AutoHotkey non fa questo? Non fa delle macro? :\
A me serve una macro si , uso questo "linguaggio" principalmente per creare macro. Ora è più chiaro?
Forse mi sono espresso male , ecco tutto.
L'esempio è qui riportato >
ef4a2e216f.png


Che è quello che ho provato a fare , sono arrivato appunto fino al "hotkeyset".
Se vabbe e ora mi confondi di nuovo...
Non eri tu quello che doveva premere i tasti? Da quello che ho capito dal source ti preme automaticamente 1 e space...
 
Se vabbe e ora mi confondi di nuovo...
Non eri tu quello che doveva premere i tasti? Da quello che ho capito dal source ti preme automaticamente 1 e space...

Ahaha... ci siamo capiti male fin dall'inizio.
Logico che voglio fare una macro , quando dicevo "premo " intendevo la macro ma vabbè , errore mio , pardon.

Tornando a noi , la macro quindi deve premere 1 e poi space e poi verificare la condizione CHE SE IO (persona umana) premo space deve rifare 1 e space altrimenti niente , chiaro ora ? :\
 
Ahaha... ci siamo capiti male fin dall'inizio.
Logico che voglio fare una macro , quando dicevo "premo " intendevo la macro ma vabbè , errore mio , pardon.

Tornando a noi , la macro quindi deve premere 1 e poi space e poi verificare la condizione CHE SE IO (persona umana) premo space deve rifare 1 e space altrimenti niente , chiaro ora ? :\

Dirlo cosi fin dall'inizio troppo difficile :\

"Voglio una macro che alla premuta di spacebar mi prema 1+space" :\(correggimi se sbaglio)

Io pensavo che il programma doveva fare tutto da solo, senza il tuo intervento dello spacebar per attivare la macro.



Inviato dal mio GT-I9505 utilizzando Tapatalk
 
  • Mi piace
Reazioni: Valar Morghulis
Dirlo cosi fin dall'inizio troppo difficile :\

"Voglio una macro che alla premuta di spacebar mi prema 1+space" :\(correggimi se sbaglio)

Io pensavo che il programma doveva fare tutto da solo, senza il tuo intervento dello spacebar per attivare la macro.



Inviato dal mio GT-I9505 utilizzando Tapatalk

Dopo essermi fatto 2 ore di elettronica + interrogazione e 2 di sistemi sono un pò rincoglionito pardon :\. Comunque si , il concetto è quello :3
 
Ella maddona finalmente ci capiamo..
il source della hotkeys e della funzione sono queste (cosi ricordo che si faccia)

PHP:
HotKeySet("{SPACE}","_funz")


Func _funz()   
   Send("{1}")  
   Send("{SPACE}")
EndFunc

Lo metti in background cosi lo nascondi e ogni volta che premi space attiverà la funziona _funz che premerà 1 e space non c'è bisogno di verificare con un if se la premi perchè una volta finita la funziona torna a non far nulla il programma e con la hotkey richiami la funziona quando ti pare..

Poi per comodita puoi fare una hotkey che te lo chiude.. e nella funzione un semplice Exit
 
Ella maddona finalmente ci capiamo..
il source della hotkeys e della funzione sono queste (cosi ricordo che si faccia)

PHP:
HotKeySet("{SPACE}","_funz")


Func _funz()   
   Send("{1}")  
   Send("{SPACE}")
EndFunc

Lo metti in background cosi lo nascondi e ogni volta che premi space attiverà la funziona _funz che premerà 1 e space non c'è bisogno di verificare con un if se la premi perchè una volta finita la funziona torna a non far nulla il programma e con la hotkey richiami la funziona quando ti pare..

Poi per comodita puoi fare una hotkey che te lo chiude.. e nella funzione un semplice Exit
Secondo me continua all'infinito. Poi non sò.


Inviato dal mio GT-I9505 utilizzando Tapatalk
 
Stato
Discussione chiusa ad ulteriori risposte.