Guida [GUIDA]AutoHotKey

Stato
Discussione chiusa ad ulteriori risposte.

.PixeL

Utente Emerald
26 Aprile 2011
962
36
239
408
Ultima modifica da un moderatore:
Ciao nabbetti.

Siccome in questo periodo vanno di moda i bot in AutoHotKey oggi ho deciso di spiegarvi più o meno cos'è.

.:Cos'è AHK?:.

Chiamarlo linguaggio è esagerato.
L'AutoHotKey (Letteralmente Automatizzazione degli HotKey) è un programma che si basa principalmente sul creare bot che hanno nel 99% dei casi degli HotKey (vedi cap. succ).

I bot creati in AutoHotKey non hanno GUI (Graphic User Interface) quindi non agiscono a livello visivo e non hanno quelle finestre che troverete in qualsiasi programma in qualunque linguaggio.


.:Cosa sono gli HotKey?:.

Gli HotKey (= tasti caldi) sono quel tasti che schiacciati insieme (se sono una combinazione) fanno compiere al programma (AutoHotKey in questo caso) una determinata istruzione.

In pratica se setto come HotKey il tasto "F2" e gli affido un'istruzione io schiacciando F2 avrò quell'istruzione.

.:Creare un Bot in AHK:.

Ovviamente io vi insegnerò le basi, se volete guide più dettagliate, il Web ne è pieno zeppo.
Ma le basi bastano per creare Bot semplici come quelli di S4.

Dopo aver scaricato il file (vedi cap. Download) lo installate.
Se aprirete il file AutoHotKey.exe partite già confusi. Io vi consiglio di fare click destro sul Desktop e andare a Nuovo -> AutoHotKey Script (se non ce l'avete vuol dire che non avete installato bene AHK). Oppure potete fare su Nuovo -> Documento di testo; facendo così, però, poi dovrete salvare il file come "NOMECHEVOLETE.ahk"
Quindi create le istruzioni.

Dunque, cominciamo settando l'HotKey.
Facciamo finta che abbiamo bisogno di un Bot che abbia come HotKey il tasto "CapsLock" che ci spammi la barra spaziatrice.
Codice:
[COLOR=#b22222]CapsLock::[/COLOR]  '[COLOR=#006400] Allora, abbiamo messo l'HotKey(CapsLock) e per far sì che sia un HotKey abbiamo inserito dopo i " :: "[/COLOR]
Loop                     [COLOR=#006400]' Chi sa programmare sa già cosa significa, vuol dire che ripeterà i comandi per le volte stabilite (se lo volete  far ripetere all'infinito basta scrivere "Loop" altrimenti "Loop 1" per farlo fare 1 volta "Loop 2" per 2 volte e così via..[/COLOR]
{                         '[COLOR=#006400] Parentesi Graffa aperta per indicare che l'HotKey si riferisce a tutto quello che vi è racchiuso[/COLOR]
If not GetKeyState ([COLOR=#b22222]"CapsLock"[/COLOR]) [COLOR=#006400]' Se non viene schiacciato CapsLock[/COLOR]
Break                   [COLOR=#006400]'Il bot non viene attivato[/COLOR]
Send {[COLOR=#b22222]Space down[/COLOR]} {[COLOR=#b22222]Space up[/COLOR]} [COLOR=#006400]' Il bot fa pressione sullo Spazio (Space down) e lo rilascia (Space up)[/COLOR]
}                          [COLOR=#006400]'Parentesi Graffa chiusa[/COLOR]
Il codice è ben commentato, non pens
o non capirete.
Basterà chiudere il file e, se ve lo chiede, salvarlo in formato .ahk ed avrete creato il vostro Bot.
Ora lo testate. Se non funziona di certo avete fatto qualche errore nel source. Click destro sul file e "Edit" per modificarlo.
Dopo aver creato il source funzionante fate click destro sul file e "Compile". Oppure cercate il file "Ahk2exe" e Compilate da lì (avrete anche la possibilità di modificare l'icona).

.:Altri esempi:.

HotKey: Alt+Z Funzione : Reload Cancel (1 + w + space + space + 3 + space)

Codice:
AltZ::
Loop 1
{
If not GetKeyState ("Alt")
break
send 1w{space down}{space up}{space down}{space up}3{space down}{space up}

HotKey: Alt Funzione : AirHug (2 + Space + Shift + Shift + Space + ClickSX + Shift + Shift + 3 + Space) [Versione completa]

N.B.: non riesco davvero a trovare il motivo, ma senza la funzione "Sleep" e i comandi messi in righe diverse, questo bot non funziona, quindi il metodo non sarà il tradizionale (vedi pag.2 di questo Topic
Perciò il codice sarà ben commentato
Codice:
LAlt::            [COLOR=#006400]'HotKey[/COLOR][/LEFT]
Loop 2           '[COLOR=#008000]Ripeterà per 2 volte[/COLOR]                  
{                   '[COLOR=#008000]Tutto ciò che è racchiuso nelle parentesi graffe[/COLOR]
If not GetKeyState ("LAlt") '[COLOR=#008000]Solita storia[/COLOR]
Break            ' [COLOR=#008000]Se non viene schiacciato l'hotkey, esci dal ciclo Loop[/COLOR]
Send {2 down}' [COLOR=#008000]Fai pressione sul tasto 2[/COLOR]
sleep 1           '[COLOR=#008000]Non fare niente per 1 ms (millisecondo, 1 millesimo di secondo)[/COLOR]
send {2 up}{space}'[COLOR=#008000]Smetti di fare pressione sul tasto 2 (2 up) e schiaccia spazio[/COLOR]
sleep 1'[COLOR=#008000]Non fare niente per 1 ms (millisecondo, 1 millesimo di secondo)[/COLOR]
send {LShift down}'[COLOR=#008000]Pressione sullo Shift[/COLOR]
sleep 1           '[COLOR=#008000]Non fare niente per 1 ms (millisecondo, 1 millesimo di secondo)[/COLOR]
send {lshift up}{space} '[COLOR=#008000]Smetti di fare pressione sul tasto e schiaccia spazio[/COLOR]
sleep 1           '[COLOR=#008000]Non fare niente per 1 ms (millisecondo, 1 millesimo di secondo)[/COLOR]
send {LShift down}[COLOR=#008000]'Pressione sullo shift[/COLOR]
sleep 1           '[COLOR=#008000]Non fare niente per 1 ms (millisecondo, 1 millesimo di secondo)[/COLOR]
send {Lshift up}{space}'[COLOR=#008000]Smetti di fare pressione e chiaccia spazio[/COLOR]
sleep 1           '[COLOR=#008000]Non fare niente per 1 ms (millisecondo, 1 millesimo di secondo)[/COLOR]
send {3 down}'[COLOR=#008000]Pressione sul 3[/COLOR]
sleep 1           '[COLOR=#008000]Non fare niente per 1 ms (millisecondo, 1 millesimo di secondo)[/COLOR]
send {3 up}{space}[COLOR=#008000]'Smetti di fare pressione sul 3 e schiaccia spazio[/COLOR]
return            [COLOR=#008000]'Invio[/COLOR]
[LEFT]}                 '[COLOR=#008000]​Parentesi chiusa[/COLOR]
[/LEFT]

HotKey : F1 Funzione : navigare tra diverse finestre [esempio di combinazione multipla] (WinLogo + Tab)
Codice:
F1::      [COLOR=#006400]'HotKey[/COLOR]
{          [COLOR=#006400]'Non usiamo il Loop in questo caso[/COLOR]
Send {Win down}Tab  '[COLOR=#006400]Pressione sul WINLOGO (vedi capitolo "I tasti secondo AHK") e schiaccia Tab[/COLOR]
Sleep 100 [COLOR=#006400]'Fermo per 100 millisecondi[/COLOR]
Send {Win up}   [COLOR=#006400]'Ferma la pressione di WINLOGO[/COLOR]
}
HotKey : CapsLock per attivare e Alt di Sinistra per stopparlo Funzione : Premi "-" ogni secondo (per L0LL0)

Codice:
CapsLock::     [COLOR=#006400]'HotKey CapsLock[/COLOR]
Loop               [COLOR=#006400]'Ripeti all'infinito[/COLOR]
{                    [COLOR=#006400]'Parentesi aperta[/COLOR]
Send,-            [COLOR=#006400]'Premi "-"[/COLOR]
Sleep,1000      [COLOR=#006400]'Fermo per 1 secondo (1000 millisecondi)[/COLOR]
}                    [COLOR=#006400] 'Parentesi chiusa[/COLOR]
LAlt:: Pause     '[COLOR=#006400]HotKey Alt di Sinistra che metterà in pausa il bot[/COLOR] [COLOR=#006400][/COLOR]

.:Cosa vuol dire compilare:.

Molto semplice: la compilazione è una trasformazione da un file di progettazione (source di vb.NET, di Autoit, di AHK) a un file eseguibile (.exe). In questo modo i file compilati potranno essere usati anche da chi non ha AutoHotKey.
Se volete postare su un Forum o su un Sito Web o dare a qualcuno il vostro Bot ricordate di compilarlo! Se non lo compilerete potranno leggere il source e quindi copiarvelo (anche se è facile reflectare anche i file eseguibili, ma questa è un'altra storia).

.:I tasti secondo l'AHK:.

Per l'AHK , come per la maggior parte dei linguaggi, i tasti vengono scritti non per come appaiono.
Per esempio se vogliamo settare come HotKey il tasto centrale del Mouse come faremo?
Ecco una tabella (usate Google Translate se non conoscete l'inglese) dove vengono spiegati tutti i comandi possibili e immaginabili:
Mouse (tasti di scelta rapida del mouse richiede Windows NT/2000/XP o versioni successive)

LButton - il pulsante sinistro del mouse
RButton - il pulsante destro del mouse
MButton - tasto centrale del mouse o rotellina
WheelDown - ciò equivale a ruotare la rotellina del mouse verso il basso (verso di te)
WheelUp - l'opposto di quanto sopra
WheelLeft e WheelRight [v1.0.48 +] - questi due richiedono un mouse con la sinistra / destra funzionalità di scorrimento, ma non hanno alcun effetto sui sistemi operativi precedenti a Windows Vista.
(Vedi tasti di scelta rapida della rotellina del mouse per rilevare quanto la ruota è stata accesa.)
Supportato solo in Windows 2000/XP o versione successiva:
XButton1 - un pulsante che appare solo sui topi alcuni
XButton2 - un pulsante che appare solo sui topi alcuni
Tastiera

Nota: I nomi della lettera e tasti numerici sono gli stessi che singola lettera o cifra. Ad esempio: b è il tasto "b" e 5 è il tasto "5".
Space - la barra spaziatrice
Linguetta
Invio (o Return)
Fuga (o Esc)
Backspace (o BS)
Eliminare (o Del)
Inserire (o Ins)
Casa
Fine
PgUp
PgDn
Alto
Giù
Sinistra
Destra
ScrollLock
CapsLock
NumLock
Numlock Numlock ON OFF
Numpad0 NumpadIns
Numpad1 NumpadEnd
2 del tastierino numerico NumpadDown
3 del tastierino numerico NumpadPgDn
4 del tastierino numerico NumpadLeft
5 del tastierino numerico NumpadClear
6 del tastierino numerico NumpadRight
7 del tastierino numerico NumpadHome
Numpad8 NumpadUp
NUMPAD9 NumpadPgUp
NumpadDot (.) NumpadDel
NumpadDiv (/) NumpadDiv (/)
NumpadMult (*) NumpadMult (*)
NumpadAdd (+) NumpadAdd (+)
NumpadSub (-) NumpadSub (-)
NumpadEnter NumpadEnter

F1 a F24 - I 12 o più tasti funzione nella parte superiore della maggior parte delle tastiere.
AppsKey - questa è la chiave che richiama il tasto destro del mouse menu contestuale.
Lwin - il tasto sinistro logo Windows
Rwin - il diritto tasto logo Windows. Nota: a differenza Control / Alt / Shift, non vi è alcuna generica / neutro tasto "Win", perché il sistema operativo non lo supporta.
Control (o Ctrl)
Alt
Spostare
Nota: Lo spostamento hotkeys ::, :: Alt e controllo :: il fuoco al rilascio del tasto meno che non abbiano il prefisso tilde ~ come ad esempio Alt ::. Al contrario, un incendio specifici tasti di scelta rapida a sinistra oa destra, come LAlt :: quando viene premuto.
Nota: Per la maggior parte, questi prossimi 6 tasti non sono supportati da Windows 95/98/Me. Utilizzare sopra invece:
LControl (o LCtrl) - il tasto di navigazione a sinistra
Rcontrol (o RCtrl) - il tasto di destra
MAIUSC di sinistra - il tasto shift sinistro
MAIUSC di destra - il tasto shift destro
LAlt - il tasto Alt di sinistra
RAlt - Nota: se il layout della tastiera è AltGr al posto di RAlt, probabilmente lo si può usare come un prefisso tramite hotkey <^>! come descritto qui. Inoltre, "LControl & RAlt ::" AltGr si farebbe in un hotkey.
PrintScreen
CtrlBreak
Pausa
Break - Dal momento che questo è sinonimo di pausa, l'uso ^ CtrlBreak in hotkeys invece di Pausa o Break ^ ^.
Aiuto - questo probabilmente non esiste sulla maggior parte delle tastiere. Non è di solito la stessa F1.
Il sonno - nota che il tasto sleep su alcune tastiere potrebbe non funzionare con questo.
Di seguito sono presenti solo sulle tastiere multimediali o Internet che dispongono di pulsanti extra o chiavi:
Browser_Back
Browser_Forward
Browser_Refresh
Browser_Stop
Browser_Search
Browser_Favorites
Browser_Home
Volume_Mute
Volume_Down
Volume_Up
Media_Next
Media_Prev
Media_Stop
Media_Play_Pause
Launch_Mail
Launch_Media
Launch_App1
Launch_App2
SCnnn (dove nnn è il codice di scansione di un tasto) - Riconosce i tasti inusuali non menzionati sopra. Vedere Tasti speciali per i dettagli.
VKnn (dove nn è il codice esadecimale tasto virtuale di un tasto) - Questo metodo raramente utilizzato impedisce anche alcuni tipi di tasti di scelta rapida da richiedere l'hook di tastiera. Ad esempio, il seguente hotkey non utilizza il hook di tastiera, ma come un effetto collaterale che viene attivato premendo i tasti Home o NumpadHome: ^ VK24 :: MsgBox Hai premuto Home o NumpadHome mentre si tiene premuto il tasto Ctrl.
Limitazione nota: tasti di scelta rapida VK che sono costretti a utilizzare il gancio tastiera, ad esempio * VK24 e VK24 ~, si attiverà per una sola delle chiavi, non sia (ad esempio, ma non NumpadHome Home).
Per ulteriori informazioni sul metodo VKnn, vedere Tasti speciali.
Joystick

Joy1 attraverso Joy32: I pulsanti del joystick. Per aiutare a determinare i numeri dei pulsanti per il joystick, utilizzare questo script di test. Si noti che i simboli prefisso hotkey come ^ (controllo) e + (shift) non sono supportati (sebbene GetKeyState può essere utilizzato come sostituto). Si noti inoltre che la pressione dei pulsanti del joystick sempre "passa attraverso" la finestra attiva, se quella finestra è progettato per rilevare la pressione di pulsanti del joystick.
Sebbene i seguenti nomi joystick non possono essere utilizzati come tasti di scelta, possono essere utilizzati con GetKeyState:
JoyX, JoyY e Joyz: I (altezza / profondità) gli assi x (orizzontale), Y (verticale), e Z del joystick.
JoyR: Il timone o 4 ° asse del joystick.
Joyu e JoyV: Gli assi 5 e 6 del joystick.
JoyPOV: Il punto di vista (cappello) di controllo.
JoyName: Il nome del joystick o del suo driver.
JoyButtons: Il numero di pulsanti supportati dal joystick (non sempre preciso).
JoyAxes: Il numero di assi supportati dal joystick.
JoyInfo: Fornisce una stringa composta da zero o più delle seguenti lettere per indicare le capacità del joystick: Z (ha asse Z), R (ha R asse), U (ha asse U), V (ha asse V), P (POV ha il controllo), D (il controllo POV ha un numero limitato di discreti / distinto settings), C (il controllo è continuo POV / fine). Esempio stringa: ZRUVPD
Joysticks multipli: Se il computer ha più di un joystick e si desidera utilizzare uno oltre il primo, includere il numero di joystick (max 16) davanti al nome del controllo. Ad esempio, è 2joy1 primo pulsante del joystick secondo.
Nota: Se avete problemi a trovare uno script per riconoscere il tuo joystick, una persona segnalata la necessità di specificare un numero diverso da 1 joystick anche se solo un singolo joystick era presente. Non è chiaro come questa situazione si verifica o se è normale, ma sperimentando con il numero joystick nello script di test joystick può aiutare a determinare se questo vale per il sistema.
Vedi anche:
Joystick remapping: metodi di combinazioni di tasti e click del mouse con un joystick.

Joystick-To-Mouse script: usando un joystick come un mouse.









Traduzione offerta da GoogleTranslate. Versione originale
.:Download:.

Puoi scaricare AHK da qui.

.:Coming Soon...:.

Presto su questo post :



  • [*=left]altri esempi


  • [*=left]screenshot vari
Se hai dubbi di qualsiasi genere o vuoi farmi qualche critica o vuoi stuprarmi contattami!
Si accettano Like, +1 e trollate varie ;)

Attenzione!
Avevo sbagliato nello scrivere "Loop1" tutto attaccato. Se lo scrivete attaccato darà un errore.
Il comando è "Loop 1" o "Loop 2" e così via
Grazie Royal per avermelo fatto notare



 
Ultima modifica:
#Aggiornato primo post inseriti :


  • funzione Loop
  • traduzione spoiler dei tasti



Royal il tuo codice per il bot:
Codice:
#HotKey::
Loop1
{
Send {space down} {space up} {space down} {space up} 3 {space down} {space up} {space down}  {space up} '[COLOR=#008000] Puoi anche usare {space} senza down o up ma te lo sconsiglio perché la pressione è limitata
[/COLOR]}
 
Ultima modifica:
Io per creare AirHugging bot ho fatto questo codice:

LAlt:: Loop
{Numpad2 LShift LShift Numpad3
If not GetKeyState ("LAlt")
Break
Send {Space down} {Space up}
}

Lo apro con LAlt (Alt sx), si ripete una volta (Loop), e per fare l'airhug (in questo caso metto revo nel secondo slot e burst nel terzo e come skill ovviamente lo schield o.o) si farà tasto 2 (Numpad2) + skill attivata e disattivata subito +tasto 3 (Numpad3)
E' giusto?

EDIT: Ho provato a farlo partire ma mi esce questo errore:

Error at line 3.
Line Text: Numpad2 LShift Lshift Numpad3
Error: This line does not contain a ricognized action
The program will exit.
 
Io per creare AirHugging bot ho fatto questo codice:



Lo apro con LAlt (Alt sx), si ripete una volta (Loop), e per fare l'airhug (in questo caso metto revo nel secondo slot e burst nel terzo e come skill ovviamente lo schield o.o) si farà tasto 2 (Numpad2) + skill attivata e disattivata subito +tasto 3 (Numpad3)
E' giusto?

EDIT: Ho provato a farlo partire ma mi esce questo errore:

Error at line 3.
Line Text: Numpad2 LShift Lshift Numpad3
Error: This line does not contain a ricognized action
The program will exit.

;) Errori da principianti:
Codice:
LAlt::
Loop1
{
If not getkeystate ("LAlt")
break
[COLOR=#ff0000]Send [I]Numpad2 LShift LShift Numpad3 'questo dice "schiaccia i tasti numpad2 lshift etc." senza di questo comando non farai molto
}[/I][/COLOR][COLOR=#333333][I]
[/I][/COLOR]

Ti consiglio di rileggere la guida, hai saltato i passaggi più importanti (E comunque un AirHug Bot completo spara anche ;) )
 
  • Mi piace
Reazioni: Riki_
;) Errori da principianti:
Codice:
LAlt::
Loop1
{
If not getkeystate ("LAlt")
break
[COLOR=#ff0000]Send [I]Numpad2 LShift LShift Numpad3 'questo dice "schiaccia i tasti numpad2 lshift etc." senza di questo comando non farai molto
}[/I][/COLOR][COLOR=#333333][/COLOR]

Ti consiglio di rileggere la guida, hai saltato i passaggi più importanti (E comunque un AirHug Bot completo spara anche ;) )

Grazie mille, risolto :)
 
Ultima modifica:
Allora, io mi sono creato il mio bel BOT AirHug. Ho seguito le istruzioni nelle "Guide AutoHotKey". Ho messo tutte le funzioni e fino a qui tutto ok. Il problema è che quando lo avvio come amministratore, sulla chat mi funziona ma quando entro in una stanza e lo provo non funziona.. Come mai?
».Jìmi.«

Edit: Ecco il code. Non mi interessa se gli altri me lo copiano <.<

Codice:
LAlt:: 
Loop 2                     
{                     
If not GetKeyState ("LAlt") 
Break                   
Send {Numpad2} {LShift} {LShift} {Numpad3} 
}
 
Allora, io mi sono creato il mio bel BOT AirHug. Ho seguito le istruzioni nelle "Guide AutoHotKey". Ho messo tutte le funzioni e fino a qui tutto ok. Il problema è che quando lo avvio come amministratore, sulla chat mi funziona ma quando entro in una stanza e lo provo non funziona.. Come mai?
».Jìmi.«

Edit: Ecco il code. Non mi interessa se gli altri me lo copiano <.<


Codice:
LAlt:: 
Loop 2                     
{                     
If not GetKeyState ("LAlt") 
Break                   
Send {Numpad2} {LShift} {LShift} {Numpad3} 
}
Non capisco dove sia l'errore ._. Comunque in questo momento ho da fare (The Mentalist), poi lo provo a fixare

---------- Post added 27-04-12 at 13:48 ---------- Previous post was 26-04-12 at 22:08 ----------

._. Non va nemmeno a me ._. Ma scrive in chat
 
  • Mi piace
Reazioni: Riki_
Risolto ;)
Codice:
$LAlt:: Loop 2                     
{                     
If not GetKeyState ("LAlt") 
Break                   
Send {2 down}
sleep 1
send {2 up}{space}
sleep 1
send {LShift down}
sleep 1 
send {lshift up}{space}
sleep 1
send {LShift down}
sleep 1
send {Lshift up}{space}
sleep 1
send {3 down}
sleep 1
send {3 up}{space}
return 
}
 
Risolto ;)
Codice:
$LAlt:: Loop 2                     
{                     
If not GetKeyState ("LAlt") 
Break                   
Send {2 down}
sleep 1
send {2 up}{space}
sleep 1
send {LShift down}
sleep 1 
send {lshift up}{space}
sleep 1
send {LShift down}
sleep 1
send {Lshift up}{space}
sleep 1
send {3 down}
sleep 1
send {3 up}{space}
return 
}
Gli sleep sono di più tempo però se no va velocissimo e non funge XD
 
Gli sleep sono di più tempo però se no va velocissimo e non funge XD
Gli sleep, come ben saprai, li puoi fare di quanto tempo vuoi.
Ti do un paio di dritte:
  • prima di tutto inserisci il "Send LButton" così sparerà anche
  • poi per regolare lo "sleep" io ci metterei un InputBox (anche se non so se in ahk ci sia)


---------- Post added at 16:58 ---------- Previous post was at 16:57 ----------

P.S.: aggiungo agli esempi ;)
 
Ultima modifica:
Risolto ;)
Codice:
$LAlt:: Loop 2                     
{                     
If not GetKeyState ("LAlt") 
Break                   
Send {2 down}
sleep 1
send {2 up}{space}
sleep 1
send {LShift down}
sleep 1 
send {lshift up}{space}
sleep 1
send {LShift down}
sleep 1
send {Lshift up}{space}
sleep 1
send {3 down}
sleep 1
send {3 up}{space}
return 
}

Bene, ora prova e poi dico :)

EDIT: No, non va. Ti scrivo l'errore:
Error: Break/Continue must be enclosed by a Loop

Line
004: Break

The program will exit.
 
Bene, ora prova e poi dico :)

EDIT: No, non va. Ti scrivo l'errore:
Error: Break/Continue must be enclosed by a Loop

Line
004: Break

The program will exit.

Hai fatto un errore di battitura o nel copia e incolla, a me va perfettamente, e poi nell'errore che ti da dice che prima del Break di deve essere un Loop. E il Loop c'è ._.
Prova a mandare a capo il Loop


---------- Post added at 18:49 ---------- Previous post was at 18:47 ----------

​#Primo messaggio in aggiornamento ...
 
Si, il problema stava nel Loop...
Dopo faccio un release con un RC (fatto da me), e questo AirHug. Metto te nei crediti ;)
 
Stato
Discussione chiusa ad ulteriori risposte.