Προς το περιεχόμενο

AutoHotkey : αυτοματοποίηση και μακροεντολές στα Windows


Eusebius

Προτεινόμενες αναρτήσεις

Ενότητες

 

1. Εισαγωγή, 2. Ανάπτυξη συντομογραφιών/βραχυγραφιών, 3. Αναχαρτογράφηση πληκτρολογίου [Remapping], 4. Πληκτροσυντομεύσεις, 5. Άλλα κόλπα, 6. Έτοιμα σκριπτ από τo φόρουμ του AutoHotkey, 7. Προβλήματα, 8. Σύνδεσμοι

 

 

autohotkeylogo2ow5.png

 

 

 

1. Εισαγωγή

 

Το AutoHotkey είναι ένα εργαλείο ανοιχτού κώδικα για την αυτοματοποίηση επαναλαμβανόμενων εργασιών στα Windows. Μερικά πράγματα που κάνει:

  • Πληκτροσυντομεύσεις [Hotkeys] για εκτέλεση εντολών ή σειράς εντολών (μακροεντολών)
  • Συντομογραφίες που αναπτύσσονται αυτόματα καθώς γράφουμε [Hotstrings]
  • Αναχαρτογράφηση πλήκτρων και κουμπιών [Remapping]
  • Διαχείριση παραθύρων
  • Κ.π.ά. Π.χ., φτιάχνει ολόκληρα προγράμματα με γραφικό περιβάλλον, παράθυρα διαλόγου κλπ. (Αλλά αυτά απαιτούν γνώσεις προγραμματισμού και, επίσης, δεν ξέρω αν έχει νόημα να τα φτιάχνεις με το AHK. Μάλλον υπάρχουν καταλληλότερες γλώσσες...)

Το σάιτ: AutoHotkey - Free Mouse and Keyboard Macro Program with Hotkeys and AutoText

 

Γιατί μου αρέσει και γιατί το προτείνω

  • Συνδυάζει πράγματα που δεν τα βρίσκεις μαζεμένα σʼ ένα πρόγραμμα
  • Είναι εύκολο, με πλήρη τεκμηρίωση, γραμμένη με απλά λόγια
  • Εξελίσσεται συνέχεια και έχει ζωηρή κοινότητα
  • Είναι δωρεάν και ανοιχτού κώδικα (GPL)
  • Είναι καθαρό και ελαφρύ

Πώς το χρησιμοποιώ

  • Κατεβάζω το AutoHotkey και το εγκαθιστώ
  • Φτιάχνω ένα αρχείο με κατάληξη .ahk και βάζω μέσα τις εντολές, μακροεντολές και πληκτροσυντομεύσεις που θέλω
  • Φτιάχνω στο Startup μια συντόμευση προς αυτό το αρχείο, ώστε να ξεκινάει αυτόματα μαζί με τα Windows

Το AutoHotkey δεν έχει γραφικό περιβάλλον. Ό,τι ορίζουμε το ορίζουμε γράφοντας μέσα σε σκριπτάκια, δηλ. απλά αρχεία κειμένου. Αλλά η γλώσσα του είναι πολύ απλή και τα πράγματα που ενδιαφέρουν τον περισσότερο κόσμο γίνονται πολύ εύκολα. Πολύ συχνά φτάνει μία αράδα:

 

>
::btw::by the way
::βδγ::παρεμπιπτόντως
CapsLock::Return  ; Εξουδετερώνει το CapsLock.
+#l::Run, http://insomnia.gr/vb3/forumdisplay.php?f=9

 

Για να σας ανοίξω την όρεξη, δείτε μια ωραία ιδιότητα των συντομογραφιών: :-) Με βάση το από πάνω, αν γράψουμε βδγ, αναπτύσσεται σε παρεμπιπτόντως. Αν γράψουμε Βδγ, αναπτύσσεται σε Παρεμπιπτόντως. Το ίδιο για τα λατινικά.

 

Το μόνο που πρέπει να φροντίζουμε είναι να έχουμε λίγο συγυρισμένο (και σχολιασμένο) το σκριπτ, για να μη ζαλιζόμαστε όταν το κοιτάζουμε ή όταν ψάχνουμε να βρούμε κάτι.

 

Εγκατάσταση, συμβατότητα, φορητότητα

 

Η εγκατάσταση του προγράμματος είναι καθαρή: Συσχετίζει τα αρχεία .ahk με τη μηχανή autohotkey.exe και τα προσθέτει στο Νέο Αρχείο του context menu, για να τα φτιάχνουμε στα γρήγορα. Πέρα απʼ αυτά και τις πληροφορίες για την απεγκατάσταση δεν γράφει τίποτε άλλο στο μητρώο ούτε βάζει πράγματα έξω από τον κατάλογό του στο Program Files. Δηλ. είναι φορητό: για να εκτελέσουμε ένα σκριπτ χρειαζόμαστε μόνο δύο αρχεία, τη μηχανή και το σκριπτ, και δίνουμε: autohotkey.exe script_name.ahk. Αυτό είναι σπουδαίο πλεονέκτημα: μπορούμε να έχουμε πάντα μαζί μας όλες τις συντομογραφίες, τις συντομεύσεις μας κλπ.

 

Στα XP και στα 2000 δουλεύει πλήρως. Στα 98 ένα μικρό κομμάτι των δυνατοτήτων χάνεται. Στα Vista δεν ξέρω ακόμα... Επίσης, είναι σχετικά οικονομικό σε πόρους. Το σκριπτ που έχω και τρέχει συνέχεια στα XP είναι γύρω στις 1.000 αράδες και τρώει από 3 έως 5 MB μνήμη.

 

Τα παραδείγματα που παραθέτω είναι όλα απʼ αυτό το σκριπτάκι. Τα περισσότερα είναι πράγματα που μπορεί να φτιάξει ο καθένας ρίχνοντας μια ματιά στην Βοήθεια του AutoHotkey. Δείχνουν ένα ελάχιστο μέρος των δυνατοτήτων του προγράμματος, αφού οι συνδυασμοί και οι δυνατότητες είναι πολύ περισσότερα, ενώ μπορεί να κάνει κανείς πολύ πιο σύνθετα πράγματα αρκεί να καταλαβαίνει τα βασικά από προγραμματισμό.

 

Έκρινα ότι μια παρουσίαση έχει νόημα επειδή δεν υπάρχει τίποτα για το AutoHotkey στα ελληνικά. Αλλιώς η επίσημη παρουσίαση, π.χ., το Quick-start Tutorial, φτάνει και περισσεύει, υπάρχει σε διάφορες γλώσσες και είναι γραμμένη από ανθρώπους που ξέρουν το πρόγραμμα απʼ έξω κι από μέσα.

 

Κάπου-κάπου δίνω λινκ για την on-line βοήθεια του AutoHotkey. Η on-line βοήθεια είναι ολόιδια με τη βοήθεια του προγράμματος.

 

 

 

2. Ανάπτυξη συντομογραφιών/βραχυγραφιών

 

Δηλ. γράφουμε κάτι και αλλάζει αυτόματα σε κάτι άλλο.

 

Το μεγάλο πλεονέκτημα του AHK εδώ είναι ότι οι συντομογραφίες του [hotstrings] δουλεύουν σε οποιοδήποτε πρόγραμμα στα Windows και σε οποιαδήποτε περιοχή δέχεται κείμενο: Notepad, Wordpad, MS Office, OpenOffice, Thunderbird, IM κλπ. κλπ. Έτσι, αντί να ορίζουμε χωριστά συντομογραφίες για κάθε πρόγραμμα, έχουμε ένα σκριπτάκι να τρέχει και κάνουμε τη δουλειά μας παντού. (Και το ίδιο σκριπτάκι το ξαναχρησιμοποιούμε όταν επανεγκαταστήσουμε τα Windows ή όταν θέλουμε να δουλέψουμε σε ένα άλλο κομπιούτερ!)

 

Το κλασικό παράδειγμα από την Βοήθεια του προγράμματος:

 

>::btw::by the way

 

Το παρακάτω αναπτύσσεται σε δύο γραμμές μόλις γράψουμε μφχ και πατήσουμε έναν χαρακτήρα τέλους, π.χ. διάστημα ή Enter:

 

>
::μφχ::Με φιλικούς χαιρετισμούς,{Enter}Eusebius

 

Αντί να βάζουμε {Enter} για αλλαγή γραμμής, μπορούμε να χρησιμοποιήσουμε ένα «continuation section»:

 

>
::μφχ::
 ( LTrim
 Με φιλικούς χαιρετισμούς,
 Eusebius
 http://a.com/
 +00 012-3456789
 Σας αρέσει η υπογραφή μου;
 Την έφτιαξα με το AutoHotkey!
 )

 

Προσοχή! Όταν η συντομογραφία είναι στα ελληνικά, το ανάπτυγμα μπορεί να περιέχει και βασικά λατινικά. Το αντίστροφο δεν γίνεται! Ή, για να ακριβολογώ, γίνεται, αλλά αφενός θέλει κόλπα και αφετέρου δεν ξέρω πόσο αξιόπιστο είναι. Δεν το έχω δοκιμάσει εκτεταμένα. Αυτό είναι ένα μειονέκτημα του AHK για εμάς που γράφουμε σε δύο αλφάβητα...

 

Γίνεται λοιπόν, αλλά είναι λίγο μπελάς: (Δεν το χρησιμοποιώ. Το έφτιαξα έτσι, για παράδειγμα...)

 

>
::blahtest::
 SendInput, ^+2
 Sleep, 100
 SendInput,
   ( LTrim
   Μπλα μπλα μπλα...
   Blah blah blah...
   Μπλα μπλα μπλα...
   Eusebius
   )
 SendInput, ^+1
 Return

 

Σημείωση 1η
. Με το Ctrl+Shift+1 (^+1) μπαίνει το αγγλικό πληκτρολόγιο και με το Ctrl+Shift+2 (^+2) το ελληνικό. Η χρήση τους για αλλαγή πληκτρολογίου στο AΗΚ είναι μια ιδέα που μου έδωσε ο
alkisg
. Για τέτοιες δουλειές πλεονεκτούν απέναντι στο κλασικό Alt+Shift. (Πρέπει βέβαια να οριστούν πρώτα από τον Πίνακα Ελέγχου των Windows.
Δεν χρειάζεται να αντικαταστήσουν το Alt+Shift. Μπορούμε να τα έχουμε παράλληλα.
)

 

Σημείωση 2η
. Το
Sleep, 100
(αναστέλλει την εκτέλεση για 100 χιλιοστά του δευτερολέπτου) είναι για να δουλέψει σωστά η εντολή στο μυστήριο OpenOffice. Δουλεύει και με χαμηλότερη τιμή αλλά το άφησα 100 για ασφάλεια. Στα Wordpad, Notepad, στον Firefox και στο Thunderbird και σε διάφορους text editors που δοκίμασα δεν ήθελε καθόλου Sleep.

 

Δεν είναι εκνευριστικό να αρχίσεις να γράφεις μια διεύθυνση URL ενώ το πληκτρολόγιο είναι στα ελληνικά; Ιδού μία λύση! Μόλις δει την ακολουθία των ελληνικών χαρακτήρων, κάνει Alt+Shift και την αντικαθιστά με τη λατινική, δηλ. τα δύο πράγματα που θα έπρεπε να κάνουμε με το χέρι και ενώ μπορεί να είχαμε γράψει ολόκληρη τη διεύθυνση. Αν δεν κοιτάξουμε την οθόνη ενώ γράφουμε, δεν παίρνουμε είδηση τίποτα!

 

>
:*:ςςς.::{Alt Down}{Shift}{Alt Up}www.
:*:ηττπ::{Alt Down}{Shift}{Alt Up}http

 

Σημείωση
. Ο αστερίσκος ανάμεσα στις άνω και κάτω τελείες λέει του AHK να αναπτύξει την «συντομογραφία» χωρίς να περιμένει χαρακτήρα τέλους, δηλ. το κενό διάστημα και διάφορα άλλα:

 

-()[]{}:;"/\,.?!`n `t

 

Το `n σημαίνει Enter και το `t σημαίνει Tab. Το κενό διάστημα (ο πιο συχνός χαρακτήρας τέλους) βρίσκεται ανάμεσα σʼ αυτά τα δύο.

 

Άμα δεν μας αρέσουν οι προεπιλεγμένοι χαρακτήρες τέλους, ορίζουμε τους δικούς μας βάζοντας το εξής μέσα στο σκριπτάκι και προσαρμόζοντάς το ανάλογα:

 

#Hotstring EndChars -()[]{}:;'"/\,.?!`n `t

 

Άλλα δύο παραδείγματα. Το πρώτο είναι για γερμανικά από αγγλικό πληκτρολόγιο και το δεύτερο για BBCode. Το λατινικό ερωτηματικό μετά τον αστερίσκο λέει του AutoHotkey να κάνει την αλλαγή ακόμα κι αν η συντομογραφία βρίσκεται μέσα σε λέξη. Οι συντομογραφίες του BBCode είναι εις διπλούν, ώστε να δουλεύουν και στο ελληνικό και στο λατινικό πληκτρολόγιο. (Τα άλλα ερωτηματικά, τα ελληνικά, εισάγουν σχόλια. Το AutoHotkey τα αγνοεί αυτά τα σχόλια. Είναι για δική μας ευκολία.)

 

>
:*?:auuu::{ASC 0228}  ; a Umlaut
:*?:ouuu::{ASC 0246}  ; o Umlaut
:*?:uuuu::{ASC 0252}  ; u Umlaut
:*?:szzz::{ASC 0223}  ; Eszett

 

>
[noparse]:*:bbbold::[b][/b]{Left 4}[/noparse]
[noparse]:*:βββολδ::[b][/b]{Left 4}[/noparse]
[noparse]:*:bblink::[url=][/url]{Left 7}[/noparse]
[noparse]:*:ββλινκ::[url=][/url]{Left 7}[/noparse]
[noparse]:*:bblist::[list]{Enter}[*]{Enter}[*]{Enter}[/list]{Up 2}[/noparse]
[noparse]:*:ββλιστ::[list]{Enter}[*]{Enter}[*]{Enter}[/list]{Up 2}[/noparse]

 

Νά και η άμοιρη η άνω τελεία, που κοντεύει να πεθάνει εξαιτίας των κομπιουτερικών πληκτρολογίων: Εδώ δεν χρησιμοποιώ συντομογραφία αλλά πληκτροσυντόμευση (Alt+Ctrl+Τελεία), οπότε κανονικά θα έπρεπε να μπει στην άλλη ενότητα...

 

>
^!.::Send, {ASC 0183}  ; Άνω τελεία

 

Ανάλογες πληκτροσυντομεύσεις μπορούμε να φτιάξουμε και για άλλους χαρακτήρες που δεν γράφονται εύκολα από το στάνταρ πληκτρολόγιο. Π.χ., τα λεγόμενα ανωφερή εισαγωγικά (0147 και 0148) ή το σύμβολο της παραγράφου (0167).

 

 

 

3. Αναχαρτογράφηση πληκτρολογίου [Remapping]

 

Αλλάξτε ή εξουδετερώστε οποιοδήποτε πλήκτρο ενός πληκτρολογίου! Μόνο και μόνο γιʼ αυτό πρέπει δοκιμάσετε το AHK! :-) Δείτε πόσα πράγματα γίνεται να αλλάξουμε στο πληκτρολόγιο, στο ποντίκι και στο joystick!

 

Έστω ότι έχουμε πληκτρολόγιο με Winkey μόνο από τη μία μεριά και θέλουμε να βάλουμε και από την άλλη, όπου έχει μόνο AppsKey (αυτό που βγάζει το context menu). Ορίζουμε το AppsKey να στέλνει δεξιό Winkey και, για να μη χάσουμε το AppsKey (που είναι χρήσιμο κι αυτό), το βάζουμε σε μία άλλη συντόμευση, π.χ., Shift+Space (που συνήθως δεν χρειάζεται για κάτι άλλο και είναι εύχρηστο):

 

>
AppsKey::RWin
+Space::AppsKey

 

Έστω ότι έχουμε δύο WinKey και δεν θέλουμε κανένα. Τα εξουδετερώνουμε τελείως:

 

>
LWin::Return
RWin::Return

 

Ένα άλλο παράδειγμα. Μετατρέπουμε το Capslock σε Ctrl:

 

>
CapsLock::Ctrl

 

Ή το ξεφορτωνόμαστε τελείως:

 

>
CapsLock::Return

 

Δείτε σχετικά: Overriding or Disabling Hotkeys [των Windows]

 

 

 

4. Πληκτροσυντομεύσεις

 

Συνδυάζοντας ένα ή περισσότερα από τα Winkey (#), Shift (+), Ctrl (^) και Alt (!) με όποιο πλήκτρο θέλουμε μπορούμε να εκτελέσουμε οτιδήποτε. Η εντολή που χρησιμοποιούμε είναι συνήθως το Run. Οι παράμετροι του Run (οι εντός αγκυλών είναι προαιρετικές):

 

Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]

 

Συνήθως χρησιμοποιώ και την παράμετρο του working directory. Δεν ξέρω ποια προγράμματα την χρειάζονται και ποια όχι (ούτε πολυκαταλαβαίνω τί τη θέλουν), αλλά τη βάζω για να είμαι σίγουρος. :-P

 

>
+#c::Run, control  ; Πίνακας Ελέγχου
+#d::Run, %A_MyDocuments%  ; Ανοίγει τον φάκελο My Documents
+#i::Run, http://insomnia.gr/vb3/search.php?do=getnew
+#m::Run, http://mail.google.com/mail/
+#n::Run, notepad
+#t::Run, %A_MyDocuments%\todo.txt

 

Στα δύο URL δεν χρειάζεται να ορίσουμε πρόγραμμα, αφού το πρωτόκολλο HTTP θα είναι ήδη συσχετισμένο με κάποιο πρόγραμμα στον υπολογιστή μας, κατά προτίμηση με κάποιο σοβαρό πρόγραμμα για σερφάρισμα. Το ίδιο για το αρχείο απλού κειμένου (.txt): αν δεν έχουμε αλλάξει την προεπιλογή, θα ανοίξει με το Notepad.

 

Για την εντολή Run, notepad: το Notepad/Σημειωματάριο είναι από τα προγράμματα που μπορούμε να τα εκτελούμε δίνοντας μόνο ένα σύντομο όνομα χωρίς ολόκληρη τη διαδρομή του εκτελέσιμου, είτε επειδή το εκτελέσιμο βρίσκεται κάπου μέσα στο path του περιβάλλοντος είτε επειδή η διαδρομή δηλώνεται από το πρόγραμμα στο μητρώο [registry] μαζί με ένα σύντομο όνομα για γρήγορη εκτέλεση. Άλλα τέτοια πρόγράμματα είναι, π.χ., το κομπιουτεράκι (calc), το Acrobat Reader (acrord32), το MS Word (winword) και ο Mozilla Firefox (firefox). Αυτό δεν ισχύει μόνο για το AHK βέβαια. Με τον ίδιο τρόπο τα εκτελούμε και από το Run/Εκτέλεση.

 

Για τα υπόλοιπα προγράμματα χρειάζεται η πλήρης διαδρομή. Π.χ.:

 

>
+#a::Run, %A_ProgramFiles%\Azureus\azureus.exe

 

Δύο σημειώσεις:

 

Πρώτον
, αποφεύγω να χρησιμοποιώ το Winkey μόνο του, για να μην εξουδετερώνω συντομεύσεις των Windows (π.χ., το Winkey+L, που κλειδώνει τον σταθμό εργασίας), αφού σε περίπτωση σύγκρουσης υπερισχύει το AutoHotkey. Χρησιμοποιώ λοιπόν σχεδόν πάντα το Winkey μαζί με κάτι άλλο, π.χ., εκτελώ το
πατώντας Winkey+Shift+L.

 

Δεύτερον
, καλό είναι να χρησιμοποιούνται
μεταβλητές
κατά το δυνατόν, είτε εσωτερικές μεταβλητές του AHK είτε μεταβλητές περιβάλλοντος των Windows (τις δεύτερες τις βλέπουμε δίνοντας
set
από την κονσόλα). Δηλ. αντί για C:\Program Files να γράφουμε %A_ProgramFiles%. Έτσι, αν αύριο βάλουμε το Program Files στο D: ή αν βάλουμε γερμανικά Windows (όπου η διαδρομή είναι C:\Programme) το σκριπτάκι και οι εντολές θα δουλεύουν χωρίς να χρειαστεί να αλλάξουμε κάτι.

 

Επειδή καμιά φορά οι αράδες βγαίνουν μακρυνάρια με το %A_ProgramFiles%, έχω φτιάξει και μια μεταβλητή της μεταβλητής, %PF%, και χρησιμοποιώ κι αυτή.
:-)

 

Με μια συντόμευση μπορούμε βέβαια να εκτελέσουμε και πάνω από μία εντολές:

 

>
+#i::
 Run, http://insomnia.gr/vb3/search.php?do=getnew
 Run, http://mail.google.com/mail/
 Run, notepad
 Return

 

Άλλη μία σημείωση
. Τα hotkeys και hotstrings της μίας αράδας τερματίζουν αυτόματα χωρίς να χρειάζεται Return στο τέλος. Αντίθετα, αν στο τελευταίο παράδειγμα δεν βάλουμε Return, η εκτέλεση θα συνεχίζεται με άλλες εντολές που έχουμε από κάτω μέχρι να συναντήσει ένα Return. Δεν το θέλουμε αυτό!
:-)

 

Κι άλλη μία
. Στο συντακτικό του AHK οι εσοχές [indentation] είναι προαιρετικές. Τις βάζουμε όπου θέλουμε και όπως θέλουμε, για να γίνει πιο ευανάγνωστο το σκριπτ, ειδικά σε σύνθετες κατασκευές. Μάλιστα, με έναν text editor που χρωματίζει κώδικα AHK είναι ακόμα καλύτερα για το μάτι. Δείτε ένα κομμάτι στον
:

 

insomniaahkscitebw9.png

 

Αν τα σκριπτάκια μας έχουν πολύ πράμα, είναι βολικότερο να χρησιμοποιούμε έναν text editor της προκοπής και όχι το σημειωματάριο των Windows.

 

Η προτίμησή μου είναι ο
, που όμως δεν είναι πολύ φιλικός στην πρώτη γνωριμία. Το
κάνει πάνω-κάτω τα ίδια πράγματα (μοιράζονται την ίδια βάση) και είναι φιλικότερο και με πιο χαρωπά χρώματα. Ένα άλλο πολύ αγαπητό πρόγραμμα είναι το
.

 

Λίγο πιο πονηρά κόλπα.

 

Εκτέλεση/Ενεργοποίηση. Αυτό είναι από τα αγαπημένα μου. Με ένα και μοναδικό hotkey καλείς ένα πρόγραμμα είτε τρέχει είτε όχι (δηλ. παύει να σε απασχολεί αν το πρόγραμμα τρέχει ήδη ή δεν τρέχει, πού βρίσκεται κλπ.).

 

Το πρόβλημα που κλήθηκε να λύσει το AutoHotkey εδώ: Κάποια προγράμματα υποστηρίζουν single-instance mode. Έτσι, μπορείς να ορίσεις ένα hotkey: αν δεν τρέχουν τα εκτελεί, αν τρέχουν ενεργοποιεί το παράθυρο. Άλλα προγράμματα, όπως ο Firefox και ο xplorer², δεν υποστηρίζουν single-instance mode. Αν τα εκτελέσεις ενώ τρέχουν, ανοίγει νέο παράθυρο, που συνήθως δεν το θες. Νά πόσο απλά λύνεται το πρόβλημα στον xplorer²:

 

>
; xplorer² Pro ( Winkey+Backspace )
#Backspace::
 IfWinExist, ahk_class ATL:ExplorerFrame
   {
   WinActivate
   Return
   }
 Run, %PF%\xplorer2\xplorer2_UC.exe, %PF%\xplorer2
 Return

 

Τί γίνεται εδώ:

  • Πατάμε Winkey+Backspace
  • Αν υπάρχει παράθυρο του xplorer², ενεργοποιείται και η εκτέλεση του hotkey τερματίζεται
  • Αλλιώς η εκτέλεση προχωράει στο Run, ώστε να ξεκινήσει ο xplorer²

 

Η ίδια δουλειά με αντεστραμμένες τις συνθήκες και λίγο πιο συνεπτυγμένο κώδικα:

 

>
#Backspace::
 IfWinNotExist, ahk_class ATL:ExplorerFrame
   Run, %PF%\xplorer2\xplorer2_UC.exe, %PF%\xplorer2
 WinActivate
 Return

 

Το παράθυρο του xplorer² ανιχνεύεται εδώ με την κλάση του. Ο άλλος τρόπος που προσφέρει το AutoHotkey είναι με τον τίτλο ή μέρος του τίτλου. Για να βρούμε την κλάση ενός παραθύρου, κάνουμε δεξί κλικ στο εικονίδιο του system tray, ξεκινάμε τον Window Spy και πάμε το καταδεικτικό πάνω στο παράθυρο του προγράμματος που θέλουμε.

 

insomniaahktraymenu1tradp2.png

 

Άλλη ωραία και απλή λύση. Κάθε φορά που ξεκινάω το Μείζον Ελληνικό Λεξικό πρέπει να γυρίσω τη γλώσσα στα ελληνικά (ξεκινάει στα αγγλικά επειδή αυτά έχω default στα Windows) και μετά να πατήσω Tab για να πάει ο δρομέας στο κουτάκι και να γράψω τη λέξη που θέλω. Πρόσθεσα λοιπόν ένα Alt+Shift κι ένα Tab στις εντολές με τις οποίες εκτελείται/ενεργοποιείται το Μείζον:

 

>
+#z::
 SetTitleMatchMode, 2
 IfWinExist, Μείζον Ελληνικό Λεξικό
   {  
   WinActivate
   Return
   }
 Else
   {
   Run, %PF%\Meizon\mel.exe, %PF%\Meizon
   WinWaitActive, Μείζον Ελληνικό Λεξικό
   Sleep, 4000
   Send, {Tab}{LAlt Down}{LShift}{LAlt Up}
   }
 Return

 

Χρειάστηκε να αναστείλω σʼ ένα σημείο την εκτέλεση για 4΄΄ (Sleep, 4000), διότι το αρχαίο Μείζον (10 ετών πια) ξεκινάει κάπως μυστήρια στα XP και, παρόλο το WinWaitActive, το Alt+Shift πήγαινε στο βρόντο. :-)

 

Απλά πράγματα που σε απαλλάσσουν από επαναλαμβανόμενες ενοχλήσεις. :-)

 

Άλλα δύο κόλπα, για να τελειώνουμε μʼ αυτή την ενότητα.

 

Αυτό είναι από την Βοήθεια του AHK. Αν είναι ανοιχτό το συρτάρι του κύριου CD/DVD, το κλείνει. Αν είναι κλειστό, το ανοίγει. Το χρησιμοποιώ συνέχεια. (Η συντόμευση που έχω ορίσει είναι Alt+Ctrl+Winkey+Space.) Τα σχόλια είναι του προγραμματιστή του AutoHotkey, Chris Mallett:

 

>
+!#Space::
 Drive, Eject
; If the command completed quickly,
; the tray was probably already ejected.
; In that case, retract it:
 If A_TimeSinceThisHotkey < 1000  ; Adjust this if needed.
   Drive, Eject, , 1
 Return

 

Με τα παρακάτω γράφω στα γρήγορα τρέχουσα ώρα και ημερομηνία. Με το ένα στο φορμάτ 1999-12-31 23:59:59 και με το άλλο στο φορμάτ 19991231235959. Το δεύτερο είναι πιο βολικό για ονόματα αρχείων και καταλόγων. Για το ένα φορμάτ έφτιαξα μία δική μου μεταβλητή. Το άλλο το παίρνεις έτοιμο με μία από τις μεταβλητές του AHK.

 

>
+#F5::
 FormatTime, MyTime1, , yyyy-MM-dd HH:mm:ss
 SendInput, %MyTime1%
 Return
 
+#F6::Send, %A_Now%

 

Σημείωση
. Στην μία περίπτωση έχει Send και στην άλλη SendInput. Το SendInput είναι σχετικά πρόσφατη προσθήκη στη γλώσσα του AHK, πιο αξιόπιστο από το σκέτο Send και πολύ πιο γρήγορο (ακαριαίο):
.

 

 

 

5. Άλλα κόλπα

 

Βασική διαχείριση παραθύρων

 

Τρεις απλές εντολές για να μεγιστοποιούμε, να επαναφέρουμε και να ελαχιστοποιούμε παράθυρα με το Winkey και τα βέλη. Η παράμετρος A σημαίνει το ενεργό παράθυρο [Active].

 

>
#Up::WinMaximize, A
#Down::WinRestore, A
#Left::WinMinimize, A

 

Επειδή μερικά παράθυρα (ιδίως κάποια που ελαχιστοποιούνται στο system tray) δεν πολυσυμπαθούν το WinMinimize (ούτε μια άλλη εναλλακτική εντολή που προσφέρει το AHK), χρειάστηκε μια μικρή τροποποίηση. Πρόσθεσα μία συνθήκη και μία μακροεντολή. Τί λέει ο τροποποιημένος κώδικας:

  • Όταν πατάω Winkey και αριστερό βέλος
  • Αν είναι ενεργό ένα από τα εξής δύστροπα παράθυρα, θα πατάς Alt+Space (για να εμφανιστεί το μενού με τα Μετακίνηση, Επαναφορά κλπ.), θα κάνεις τρεις φορές κάτω (εκεί που είναι κανονικά η Ελαχιστοποίηση) και θα πατάς Enter, και μετά η εκτέλεση θα τερματίζεται
  • Αλλιώς (το Else εννοείται και παραλείπεται) θα στέλνεις WinMinimize, Α

>
#Left::
 SetTitleMatchMode, 2
 If (WinActive("Process Explorer -")
 OR WinActive("ahk_class SciTEWindow")
 OR WinActive("Treepad Lite")
 OR WinActive("eMule v0.")
 OR WinActive("- Mozilla Firefox"))
   {
   Send, !{Space}{Down 3}{Enter}
   Return
   }
 WinMinimize, A
 Return

 

Τώρα κανένα παράθυρο δεν αντιστέκεται! :-)

 

Βελτίωση προγραμμάτων

 

Το Treepad Lite είναι πολύ βολικό προγραμματάκι για οργάνωση σημειώσεων, αλλά δεν έχει autosave. Έχασα μία φορά πράγματα από κρασάρισμα και δεν θέλω να την ξαναπάθω, ούτε έχω όρεξη να ψάχνω για άλλο πρόγραμμα. Όρισα λοιπόν ένα timer:

 

>
SetTimer, AutoSaveTPL, 180000  ; AutoSave in Treepad Lite

 

Που κάθε 3 λεπτά (180.000 χιλιοστά του δευτερολέπτου) κάνει Save. Δεν ενδιαφέρει αν το παράθυρο του Treepad Lite είναι ενεργό ή ανενεργό. Αρκεί να υπάρχει: (Ο κώδικας είναι προσαρμοσμένος από ένα παράδειγμα στην Βοήθεια του AHK.)

 

>
AutoSaveTPL:
SetTitleMatchMode, 2
IfWinExist, Treepad Lite
 WinMenuSelectItem, , , File, Save
; If the app lacks a standard menu bar, use: ControlSend, , ^s
Return

 

Μπαλώματα για εκνευριστικά προβλήματα

 

Το επόμενο είναι λίγο ανόητο, αλλά δεν έχω τίποτα άλλο για να δείξω τις ποντικοεντολές του ΑΗΚ. :-P

 

Το έφτιαξα μια μέρα που είπα «δεν πάει άλλο» μʼ ένα από τα χρόνια bugs του ενός και μοναδικού Firefox. Χάνεται η εστίαση από τη σελίδα που βλέπεις: κάνεις, π.χ., PageUp και PageDown και δεν ακούει. Άμα δεν έχεις το ποντίκι στο χέρι, είναι εκνευριστικό να ψάχνεις να το βρεις. (Αναρωτιέμαι αν έχει καθίσει ποτέ κανείς από την ομάδα του Firefox να σερφάρει λίγα λεπτά χωρίς ποντίκι, να δει κάτι τέτοια ωραία bugs...). Έφτιαξα λοιπόν μια συντόμευση που κάνει κλικ κάπου στη σελίδα, για να επαναφέρει την εστίαση: :-P

 

>[color="grey"]
$^`::
 IfWinNotActive, ahk_class MozillaUIWindowClass
   {
   Send, ^`
   Return
   }	
 CoordMode, Mouse, Screen
 MouseGetPos, MouseX, MouseY
 MouseMove, 4, 512, 0
 Sleep, 500
 MouseClick, Left
 MouseMove, %MouseX%, %MouseY%, 0
 Return
[/color]

 

20070216. Update. Με τις νέες οδηγίες #IfWinActive, #IfWinNotActive, #IfWinExist, #IfWinNotExist η κατασκευή του από πάνω απλουστεύεται κι άλλο. Λέμε λοιπόν του AHK να εκτελέσει τη μακροεντολή που φτιάξαμε αν και μόνο αν είναι ενεργό το παράθυρο του Fx (που το δηλώνουμε με την κλάση του):

 

>
#IfWinActive, ahk_class MozillaUIWindowClass
^`::
 CoordMode, Mouse, Screen
 MouseGetPos, MouseX, MouseY
 MouseMove, 4, 512, 0
 Sleep, 500
 MouseClick, Left
 MouseMove, %MouseX%, %MouseY%, 0
 Return
#IfWinActive

 

Τί σημαίνουν όλʼ αυτά:

  • Αν πατήσουμε Ctrl+Βαρεία ενώ είναι ενεργό του παράθυρο του Fx:
    • Παίρνει τις συντεταγμένες του καταδεικτικού σε σχέση με την οθόνη και τις αποθηκεύει σε δύο μεταβλητές
    • Στέλνει το καταδεικτικό 4 από αριστερά, 512 από πάνω (όσο πιο αριστερά γίνεται, για να μη χτυπήσει σε κανένα λινκ) με τη μέγιστη ταχύτητα (παράμετρος 0).
    • Αναστέλλει την εκτέλεση για 500 χιλιοστά του δευτερολέπτου (αλλιώς γίνονται μυστήρια πράγματα...)
    • Κάνει αριστερό κλικ
    • Στέλνει το καταδεικτικό πίσω (στις συντεταγμένες που κράτησε πριν)
    • Η εκτέλεση τερματίζεται

Γενικά με το ποντίκι γίνονται πολλά κόλπα, πολύ πιο σύνθετα απʼ αυτό. Και κάποια τέτοια είναι αγαπητά σε μερικούς παιχνιδάδες, απʼ όσο έχω καταλάβει, για να κλέβουν. Π.χ., λέμε του AHK να παρακολουθεί για ένα χρώμα κάπου ή για ένα παράθυρο και, μόλις εμφανιστεί αυτό, να κάνει τόσα κλικ στο τάδε ή το δείνα σημείο και μετά να εκτελέσει την τάδε ή την δείνα μακροεντολή. Για κάποιον με βασικές γνώσεις προγραμματισμού αυτά είναι παιχνιδάκι. Για τους άλλους είναι πιο ζόρικα. (Εκτός αν έχουν όρεξη για διάβασμα.)

 

Στο σάιτ του AutoHotkey έχει και ένα έτοιμο σκριπτ που μετατρέπει την αριθμομηχανή [Numpad] σε ποντίκι! Αν μείνετε ποτέ χωρίς ποντίκι, τώρα ξέρετε τί θα κάνετε! :-P

 

 

 

6. Έτοιμα σκριπτ από τo φόρουμ του AutoHotkey

 

Στο σάιτ του AHK έχει πολλά έτοιμα σκριπτ που είναι στην ουσία μικρά προγράμματα. Ακόμα περισσότερα υπάρχουν στο φόρουμ, φτιαγμένα από μέλη.

 

Δύο που χρησιμοποιώ συνέχεια. Το πρώτο είναι το Incrementally switch between windows. Το καλώ με μια συντόμευση, αρχίζω να γράφω μέχρι να έρθει πάνω-πάνω το παράθυρο που θέλω και χτυπάω Enter. Με έσωσε μια φορά που είχα να δουλέψω με 30 παράθυρα του ίδιου προγράμματος, που είχαν από ένα διαφορετικό αρχείο το καθένα. Ήταν εφιάλτης να ψάχνω το παράθυρο που θέλω με Alt+Tab ή με το ποντίκι:

 

insomniaahkwindowswitchuf6.png

 

Το δεύτερο είναι το 320MPH - Ultra Fast Anything-Launcher. Το καλώ κι αυτό με μια συντόμευση, γράφω μέχρι να μείνει ή να έρθει πάνω-πάνω αυτό που θέλω και χτυπάω Enter.

 

insomniaahk320mphtranspxj5.png

 

 

 

7. Προβλήματα

 

Δείτε μια ωραία συντόμευση:

 

>
+#g::
 Send, ^c
 Run, http://www.google.com/search?q=%Clipboard%
 Return

 

Τί κάνει:

  • Επιλέγουμε μια λέξη ή φράση
  • Πατάμε τη συντόμευση και η επιλογή αντιγράφεται στο πρόχειρο με Ctrl+C
  • Με τη μεταβλητή %Clipboard% το περιεχόμενο του προχείρου αποστέλλεται αυτόματα για αναζήτηση στο Google

Στα αγγλικά δουλεύει περίφημα. Στα ελληνικά όχι σε όλα τα προγράμματα, έτσι που περισσότερο σε ενοχλεί παρά σε διευκολύνει... Πρέπει να είναι θέμα Unicode. Πάλεψα λίγο με δύο σχετικές εντολές του AHK, την Transform και την ClipboardAll, αλλά δεν κατάφερα κάτι σπουδαίο και τα παράτησα. Στο μέτρο που είναι θέμα Unicode, θα διορθωθεί όταν το AHK βγει και σε έκδοση Unicode (είναι στο πρόγραμμα). Για την ώρα έχει μόνο ANSI.

 

Γενικά, τα μόνα παράπονά μου από το AHK σχετίζονται μʼ αυτό: ότι δεν έχει έκδοση Unicode. Παρόμοια προβλήματα συνάντησα όταν πήγα να χρησιμοποιήσω την εντολή FileAppend, η οποία κολλάει κείμενο στο τέλος ενός αρχείου.

 

 

 

8. Σύνδεσμοι

 

Σχετικοί με το AutoHotkey

  • 1 Hour Software by Skrommel ~ Τούτος έχει γούστο! :-) Έχει φτιάξει δεκάδες λιλιπούτεια προγραμματάκια με το AutoHotkey, που κάνουν από μια δουλειά το καθένα και τα κατεβάζεις είτε σε μορφή σκριπτ είτε ως εκτελέσιμα. Δεν έχω βρει κάτι που να μου χρειάζεται, αλλά διασκεδάζω με τις ιδέες. :-)
  • ac'tivAid ~ Εντυπωσιακό πακέτο με έτοιμα κόλπα από έναν συντάκτη του c't. (Γενικά οι Γερμανοί αγαπάνε το AHK και το έχουν ξεζουμίσει.) Δοκιμάστε το να δείτε τις δυνατότητες του AHK. (Είναι δίγλωσσο, αγγλικά και γερμανικά. Στα γερμανικά έχει αναλυτικές οδηγίες, στα αγγλικά μόνο περιγραφές των λειτουργιών. Αν δεν έχετε εγκατεστημένο AHK κατεβάστε το πρώτο από τα τέσσερα.)
  • Windows key στην αγγλική Wikipedia
  • Σκριπτάκια στο Wiki του Total Commander

  • Universal AutoCorrect with AutoHotKey and Wikipedia ~ Περίπου 4.000 λέξεις. Δεν είναι δύσκολο να φτιαχτεί κάτι τέτοιο στα ελληνικά ή να προστεθούν ελληνικά ζευγάρια στο σκριπτάκι.
  • 156 Useful Run Commands ~ Εντολές όπως acrodist, control color, write (Wordpad) κλπ., για χρήση στο AutoHotkey και γενικά.

 

Παρόμοια προγράμματα

  • AutoIt v3 ~ Η τρέχουσα έκδ. του προγράμματος από το οποίο ξεκίνησε το AutoHotkey. Και η μικροσοφτική σκριπτόγλωσσα από την οποία κατάγεται το AutoIt: ScriptIt.
  • KeyTweak ~ Μόνο για αναχαρτογράφηση πληκτρολογίου. Το κάνει αλλάζοντας τιμές στο μητρώο. Δεν χρειάζεται να τρέχει συνέχεια. Το εκτελείτε μια φορά και τελειώσατε!
  • SlickRun ~ Για εκτέλεση προγραμμάτων. Δεν το έχω δοκιμάσει, αφού κάνω την ίδια δουλειά με το 320MPH.
  • WinKey ~ Κλασικό προγραμματάκι για πληκτροσυντομεύσεις με το Winkey, από την Copernic, την εταιρεία του Copernic Desktop Search. Έχει αποσυρθεί πια από το σάιτ αλλά δουλεύει καλά, και σε XP ~ Ένα άλλο πλουσιότερο και ζωντανό πρόγραμμα: HotKeyz

 

Χρήσιμα εργαλεία για όταν φτιάχνουμε σκριπτάκια και παρουσιάσεις στο Ινσόμνια

 

 

 

Αλλαγές

  • 20070301. Μικροδιορθώσεις, μικροαλλαγές.
  • 20070216. Ενημέρωση για νέα οδηγία #IfWinActive, μικροδιορθώσεις, 1 λινκ.
  • 20070202. Μικροδιορθώσεις, 2 νέα λινκ.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κράτηση...

 

Το είχα σχεδόν έτοιμο από καιρό και κάποια στιγμή έπρεπε να το τελειώσω. Αλλά βγήκε πολύ μεγάλο και μπορεί να κόψω τίποτα. :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αποθηκεύουμε το παρακάτω σαν WellDone.js:

>
var shell = WScript.CreateObject("WScript.Shell");
shell.SendKeys("^+2");   //Βάλε ελληνικά
shell.SendKeys("+mpr;abo");
shell.SendKeys("^+1");   //Βάλε αγγλικά
shell.SendKeys("+Eusebius");

 

Μετά βάζουμε μια συντόμευση προς το WellDone.js στο start menu ή στην επιφάνεια εργασίας.

Δεξί κλικ στη συντόμευση που φτιάξαμε, ιδιότητες και της αναθέτουμε να ανοίγει με το συνδυασμό Alt+Ctrl+W.

 

Μετά όπου κι αν είμαστε, π.χ. εδώ στο Insomnia, πατάμε Alt+Ctrl+W και βγαίνει

Μπράβο Eusebius!!!
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...

Ευχαριστώ! :-)

 

Ενημέρωσα ένα παράδειγμα χρησιμοποιώντας κάτι που προστέθηκε τελευταία στη γλώσσα και πρόσθεσα λινκ στη σελίδα του πρότζεκτ στο SourceForge.net. Έχει ενταχθεί εδώ και μερικούς μήνες στο SF.net: http://sourceforge.net/projects/ahk/

 

Επίσης, για όσους ενδιαφέρονται, το πρότζεκτ χρειάζεται πόρους. Όχι! Δεν ζητάνε λεφτά! :-)

 

AutoHotkey Needs You

 

http://www.autohotkey.com/forum/viewtopic.php?t=14238

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν και δεν χρησιμοποιώ αυτό το πρόγραμμα, και μάλλον δε θα βρω την όρεξη να το ψάξω, δε μπορώ παρά να μη σε συγχαρώ για την καταπληκτική δουλειά σου (μόλις σήμερα το είδα). Μπράβο!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ, accipio! :-)

 

Πάντως δεν θέλει πολύ ψάξιμο. Μπορείς να ξεκινήσεις χρησιμοποιώντας μόνο hotstrings, αν σου χρειάζεται κάτι τέτοιο, ή καμιά συντόμευση της μίας αράδας. Μετά, αν θες κάτι που δεν ξέρεις πώς γίνεται, βρίσκεις στη βοήθεια ένα παράδειγμα που σου ταιριάζει, το ξεπατικώνεις και το προσαρμόζεις. Έτσι κάνω. :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το ειχα βρει πριν κανα χρονο και παλευα να φτιαξω σκριπτακι να παιζω το far cry με χειριστηριο (ναι doing) αλλα ψιλοαπελπιστηκα και το αφησα, δυστυχως δεν ειναι noob friendly.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μαζί με τη διαφήμιση του AutoHotkey πετύχαμε και διαφήμιση του Insomnia.gr: :-)

 

http://www.autohotkey.com/

http://www.autohotkey.com/docs/

 

Προηγουμένως το είχα αναγγείλει στο φόρουμ του AutoHotkey για να το βρίσκει κανείς αν ψάξει για autohotkey+greek:

 

http://www.autohotkey.com/forum/viewtopic.php?t=16708

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...