AutoHotkey

napísal , 6 Sep 2010 [ Efektivita Hacky Skriptovanie Windows ]

CTRL

Ak ste takí leniví ako ja, určite vás irituje každý klik navyše a radi používate všemožné klávesové skratky, gestá s myšou a podobné srandy. Ak ešte nie ste dostatočne leniví, raz to aj na vás prijde :p

Problém je, že často neexistujú skratky na to, čo zrovna potrebujete, či už vinou programu alebo operačného systému. Na druhej strane je kopa nevyužitých kombinácií kláves alebo dokonca samostatných kláves, na ktoré dal výrobca nejakú nepoužiteľnú hovadinu. :p Tu prichádza na pomoc AutoHotkey, vďaka ktorému môžete efektívnejšie ovládať počítač a využívať klávesy, ktoré by inak akurát zapadali prachom.

Čo je teda AutoHotkey? V podstate skriptovací jazyk (pre Windows), pomocou ktorého môžete veľmi jednoducho namapovať na prakticky ľubovoľnú udalosť v počítači (slačenie klávesy, pohyb myši, otvorenie okna, určitý čas bez aktivity, ...) vami zvolenú udalosť (stlačenie klávesy, poslanie správy oknu, spustenie programu, otvorenie súboru, zápis do logu, nič :), ...). Možno sa to na prvý pohľad nezdá, ale takáto vec má neskutočne veľa využití.

V tomto článku sa dozviete ako v priebehu zlomku sekundy spúšťat programy, prehadzovať skladby vo Winampe, písať super-advanced smajlíkov, ako čeliť zlým vtipom a ďalšie užitočné veci ;)

Po nainštalovaní AutoHotkey treba ako prvú vec vytvoriť súbor s príponou .ahk, v ktorom bude náš skript. Na spustenie skriptu stačí 2x kliknúť na daný súbor a už je aktívny. AHK skripty sú potom permanentne spustené a čakajú na systémové udalosti. Samozrejme zaberajú v pamäti pomerne málo miesta (okolo 4MB) a prakticky nijak nespomaľujú systém, inak by strácali na význame a ja by som tu o nich nepísal :)

Spúšťanie programov

Po vytvorení súboru môžeme veselo písať skripty - pre začiatok niečo jednoduchšie - skript, ktorý bude spúšťať programy/otvárať súbory/adresy:

#c:: Run calc.exe
^!n:: Run D:\Docs\notes and whatnot.txt
^+g:: Run http://google.com

Toto je celý skript a už v takomto stave robí celkom slušné veci - Win+C otvorí kalkulačku, Ctrl+Alt+N otvorí textový súbor s rýchlymi poznámkami a Ctrl+Shift+G otvorí Google v defaultnom prehliadači.

Winamp

Ale zatiaľ to nie je nič prevratné a dá sa to čiastočne riešiť aj vytvorením obyčajných odkazov, takže prejdime na big guns!

#IfWinExist ahk_class Winamp v1.x
Media_Prev:: PostMessage, 0x111, 40044, , ,Winamp
Media_Play_Pause:: PostMessage, 0x111, 40046, , ,Winamp
Media_Next:: PostMessage, 0x111, 40048, , ,Winamp

^Media_Play_Pause:: PostMessage, 0x111, 40045, , ,Winamp
^Media_Prev:: PostMessage, 0x111, 40144, , ,Winamp
^Media_Next:: PostMessage, 0x111, 40148, , ,Winamp
#IfWinExist

Tento skript posiela Winampu (ak je spustený) rôzne správy po stlačení multimediálnych kláves (samozrejme môžete použiť aj ne-multimedíalne klávesy:). Posielané správy prehadzujú skladby, pauzujú prehrávanie a skáču po 5 sekundách dopredu/dozadu (kompletný zoznam správ sa dá ľahko vygoogliť). Vďaka takémuto krátkemu kódu za zrazu z inak fuckin' useless multimediálnych kláves stáva ultimátny nástroj na ovládanie Winampu bezohľadu na to v akom okne sa nachádzate. Neat :) Podobné správy existujú aj pre foobar2000 (Media_Next:: Run C:\Program Files\foobar2000\foobar2000.exe /next) a pravdepodobne aj pre kopu ďalších prehrávačov.

Ovládanie hlasitosti

Ďalšia fajn vec je skript na ovládanie hlasitosti - to sa zíde napríklad pokiaľ výrobca notebooku vyžaduje na takúto triviálnu vec inštaláciu 50MB kravín (Sony:) alebo pokiaľ dodávaná utilita nefunguje ak ste v okne, ktoré zachytáva klávesy Volume_Up a Volume_Down (Lenovo;). Vista/7 a XP majú inú správu zvuku, takže treba použiť 2 rôzne prístupy.


XP   |   Vista/7

;XP
Volume_Up::
	SoundGet, volume
	volume := Round(volume+2)
	if Mod(volume,2) = 1
	{
		volume--
	}
	if volume > 100
	{
		volume := 100
	}
	SoundSet, volume
	GoSub, showVolume
return

Volume_Down::
	SoundGet, volume
	volume := Round(volume-2)
	if Mod(volume,2) = 1
	{
		volume--
	}
	if volume < 0
	{
		volume := 0
	}
	SoundSet, volume
	GoSub, showVolume
return

A ešte funkcie spoločné pre všetky OS slúžiace na vykreslenie ukazovateľa hlasitosti. Nevyzerá síce najlepšie, ale to nevyzerajú ani tie, čo sú dodávané k notebookom a tomuto sa dá aspoň ľahko pomôcť :)

showVolume:
	vol_PosY := A_ScreenHeight - 200

	vol_BarOptionsMaster = 1:B1 ZH12 ZX0 ZY0 W150 Y%vol_PosY% CBBlack CWSilver

	IfWinNotExist, vol_Master
	{
		Progress, %vol_BarOptionsMaster%, , bla, vol_Master
	}

	Progress, 1:%volume%, , %volume%
	SetTimer, vol_BarOff, 500
return

vol_BarOff:
	SetTimer, vol_BarOff, off
	Progress, 1:Off
return

Awwriiight, it's working!

Ďalšie...

Občas môžu v živote nastať situácie, kedy je potrebné konať rýchlo a každá sekunda sa počíta - napríklad keď niekto povie veľmi zlý vtip. Z takejto ošemetnej™ situácie vás dostane tento skript ;)

Media_Stop::SoundPlay, D:\Audio\Sounds\rimshot.wav, 1

Po stlačení klávesy prehrá príhodný zvuk - ja ho mám dokonca nastavený na samostatnej klávese, keďže u nás padajú zlé vtipy častejšie ako by bolo zdravé ;)

A nakoniec pár drobností:

;vypne display po pol sekunde
#o::
	Sleep 500
	SendMessage, 0x112, 0xF170, 2,, Program Manager
return


;rezim spanku
#s::DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)


;look of disapproval :)
^!d:: Send {ASC 3232}_{ASC 3232}


;tm
^!t:: Send {ASC 0153}


;zmena funkcii forward a back tlacitok na mysi
XButton1:: Send {PgDn}
XButton2:: Send {PgUp}

Pokiaľ sa čudujete čo je look of disapproval, je to tento smajlík ಠ_ಠ a možno vám ho už aj nejaký beťár™ poslal. Dá sa napísať aj bez AHK - vo všetkých unicode programoch by malo fungovať ALT+3232.. ale takto je to rozhodne pohodlnejšie a môžte disapprove-ovať koľko vám srdce ráči :)

Možností, ako využiť AutoHotkey, je samozrejme oveľa viac ako som napísal - dajú sa v ňom simulovať kliknutia myšou na určité miesta, skriptovať celé makrá, vytvárať GUI a veľa ďalších vecí, ktoré nájdete v manuále alebo na fórach AHK. Takže pokiaľ prídete na niečo užitočné, nebojte sa o to podeliť v commentoch.

BTW vedeli ste, že na slovenskej/českej klávesnici je apostrof? (AltGr+P :)

napísal , 6 Sep 2010

4 komentáre

komentuj ku každému komentáru sa v databáze ukladá iba meno, text a dátum, iba za účelom zobrazenia pod článkom
neukladá sa email, IP adresa ani informácie o prehliadači a údaje sa nepoužívajú na reklamu, newsletter, na žiadnu ekonomickú aktivitu, nikam sa neposielajú, sú v databáze len aby sa mohli zobraziť pod článkom
  1. txr [ Utorok 16.8.2011, 00:51 ]

    sice rok dozadu, ale povedz: pouzivas to?

  2. 81403 [ Utorok 16.8.2011, 09:33 ]

    No jasné, že to používam. Hlasitosť, nahradenie useless back/forward tlačítok na myši, ovládanie winampu, sleep, zhasnutie displaya, spúštanie programov.

    Bez AHK a 7 taskbar tweaker si už ani neviem predstaviť Windows.

  3. Mamut [ Utorok 6.12.2011, 15:29 ]

    pre menej narocnych hadam postaci nieco ako http://www.qliner.com/hotkeys/

ku každému komentáru sa v databáze ukladá iba meno, text a dátum, iba za účelom zobrazenia pod článkom
neukladá sa email, IP adresa ani informácie o prehliadači a údaje sa nepoužívajú na reklamu, newsletter, na žiadnu ekonomickú aktivitu, nikam sa neposielajú, sú v databáze len aby sa mohli zobraziť pod článkom