Page 1 of 6

[OT] [AHK] zaklady prace s AHK

Posted: 2007-07-27, 12:13 UTC
by Terka
^#!a::
Send, {HOME}{SHIFTDOWN}{END}{SHIFTUP}{CTRLDOWN}c{CTRLUP} ;zkopirovani radku do schranky
Send, {TAB}%clipboard% ;vypsani schranky
obsah = To je zkouska
FoundPos := RegExMatch(%clipboard%, %obsah%)
MsgBox, %FoundPos%
;sem chci pridat case

Priklad:
mam v textovem editoru text "toto je cervena" a spustim skriptik vyse
nejde mi porovnat promenna obsahujici mezeru, pise mi to:
the following variable name contains an illegal character: "toto je cervena"

chtela bych, aby mi skriptik delal nasledujici:
1. zkopiruj radku do schranky
2. kdyz radka obsahuje "toto je modra", napis nekam jinam (napr. na konec textu) "this is blue"
3. kdyz radka obsahuje "toto je cervena", napis nekam jinam (napr. na konec textu) "this is red"


diky Terka

Posted: 2007-07-27, 18:32 UTC
by Hacker
nejde mi porovnat promenna obsahujici mezeru, pise mi to:
the following variable name contains an illegal character: "toto je cervena"
No, s expressionami (vyrazmi) sa pracuje trochu inac, nez povodne v AHK. Expressions su vyrazy, pri ktorych sa pouziva ":=" namiesto "=". Ked pouzijes ":=", tak premenne pises bez percent okolo, a cisty text pises v uvodzovkach, takze:

Code: Select all

Premenna1 = Ja som obsah premennej 1
Premenna2 := "Ja som obsah premennej 2"

Premenna3 = %Premenna1%%Premenna2%
Premenna4 := Premenna1 . Premenna2
Mrkni sekciu "Variables and Expressions" v Helpe, deviata zhora.


Ohladom toho skriptu:
- Ak ti netreba RegEx, nepouzivaj, zbytocne zlozite.
- Case AHK zatial nepodporuje.

Code: Select all

$^#!a::
	Send, {Home}+{End}^c

	IfEqual, Clipboard, Toto je cervena   ; prve musi byt nazov premennej, druhe obsah
	{
		MsgBox, This is red
	}

	IfEqual, Clipboard, Toto je modra
	{
		MsgBox, This is blue
	}

Return
Nazval by som ten skript Univerzalny prekladac. ;)

HTH
Roman

Posted: 2007-07-27, 20:37 UTC
by totcmd
Sic je to mimo téma, ale neodolám...

už dlouho jsem se tak od srdce nezasmál :D

díky...

Tento univerzální překladač jsem měl mít před půl rokem, než jsem se pustil do nápovědy... :D

Martin

Posted: 2007-07-30, 08:58 UTC
by Terka
Hacker>diky!
s tim reg.expr. - zkousela jsem
IfInString - coz by mi vyhovovalo nejvic, ale nejak mi to neslo,
az pak jsem zkusila RegExMatch() a StringGetPos

Posted: 2007-07-30, 16:06 UTC
by Terka
$^#!a::
string := "aa"
IfInString, string, a
;IfInString, ^nesmi byt procenta %string% , a
{
MsgBox, Schranka obsahuje %string%
} ;napise Schranka obsahuje aa ok
Proooc tam nesmi byt procenta kolem promenne?

Posted: 2007-07-30, 16:46 UTC
by Hacker
Nie som si isty, ci rozumiem - pytas sa, ze preco sa pise

Code: Select all

IfInString, string, a
a nie

Code: Select all

IfInString, %string%, a
?

Neviem, tak to je. Asi by bolo zbytocne porovnavat konstantu s konstantou.

Roman

Posted: 2007-07-30, 19:56 UTC
by Terka
proste mi to je divne ale budiz. dik, budu vas o svych prekladatelskych aktivitach informovat :))

Posted: 2007-08-17, 10:44 UTC
by Terka
at neotviram novy topic:
lze napsat vic prikazu na radku, musi byt {} na samotnem radku?
napr. toto chci zkratit
Loop 3
{
Send, ahoj
Sleep, 1000
}
na neco takoveho
Loop 3 {Send, ahoj ,Sleep, 1000}

Posted: 2007-08-17, 15:11 UTC
by Hacker
Ahoj,
Nie, len takto:

Code: Select all

Loop, 3 {
	Send, ahoj
	Sleep, 1000
}
alebo takto:

Code: Select all

Loop, 3
{	Send, ahoj
	Sleep, 1000
}
Roman

Posted: 2007-08-17, 17:05 UTC
by Terka
diky!

Posted: 2007-08-20, 15:08 UTC
by Terka
pri pouziti ahk windows spy, lze videt:
>>>>>>>>>>>( Visible Window Text )<<<<<<<<<<<
tady neco je
...
...
--------------------
lze nejak tato data dat do promenne? Neco jsem na netu nasla na ahk foru, ale nic z toho mi neslo krome

WinGetText, TohleTamJe, outlook
MsgBox %TohleTamJe%
ale nebylo tam vsechno, co spy pod ( Visible Window Text ) ukazuje

Posted: 2007-08-20, 20:53 UTC
by Hacker
Hm, zaujimave, mne to vypise vsetko. Skus ine okna, a prikaz

Code: Select all

WinGetText, TohleTamJe, A
(A = active window).

HTH
Roman

Posted: 2007-08-21, 09:15 UTC
by Terka
Tak nevim co je blbe, ale ted jsem to spustila a je tam vsechno. Jedine co jsem menila je myslim $ na zacatku klaves. zkratky.
K cemu ze je ten $ na zacatku dobry?
A nez jsem tuto odpoved stacila poslat, uz mi to opet nejde aniz bych udelala nejakou zmenu ve skriptu :((
tak to je ve funkcich winwait, winwaitactive atd. chybu brzy najdu..
tak jsem to vyresila jinak - pres CLICK
jde dat do ahk prikazy linuxu jako head tail grep ?

Posted: 2007-08-21, 13:59 UTC
by Hacker
$ instaluje keyboard hook, coz jest po slovensky taky maly programcek, taka brana, kontrolor, dozorca, ktoremu prejdu pod ruky vsetky klavesy, ktore stlacis, a potom je na nom, ci na ich zaklade nieco urobi a ci ich preposle dalej Windowsu. Ked tam ten $ nie je, tak Windows zobudi AHK ked nieco stlacis, ale AHK uz nema vplyv na to, ci sa ta klavesa preposle dalej, alebo nie. V prvom pripade je teda "panom" AHK, v druhom Windows. Osobne vsade davam $, ak to vyslovene niecomu neskodi.

Head, tail ani grep AHK vlastne nema, jedine ze by si ich spustala cez Run, atd. Pripadne naprogramovala sama. Head je vyslovene lahky, podobne aj grep. Tail by bol trosku zlositejsi.

Roman

Posted: 2007-08-21, 14:28 UTC
by Terka
1. jasne.
2. dobre, kdyz to budu potrebovat tak to zkusim. Nebo pokud budes tak hodny napis mi treba grep, predpokladam ze se to dela jako funkce.
zkusim:
Head cislo: StringSplit - Enter jako delimiter a cyklus ktery to tiskne a pridava za kazdou polozkou Enter. Podminka bude index pole<=cislo

Grep:to same jen porovnat polozku pole s tim co chci tisknout.

Tail: zjistit cislo posledni polozky pole a cyklus dat obracene.
Jinak diky!
tady neco k grepu:
http://www.autohotkey.com/forum/topic16164.html