[OT] [AHK] zaklady prace s AHK

Moderated forum for Slovak and Czech users

Moderator: Hacker

Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

|Prosim o dalsi radu:
Rada bych vytvorila funkci, ktera checkne zda je program spusten, pokud je aktivuje ho; pokud neni tak ho spusti a aktivuje. Ztroskotala jsem tady:

RunOnce(ByRef title) {
IfWinExist, title
WinActivate, title
else
run c:\wincmd\wincmd.exe
return
}

$^#!j::

RunOnce (Total Commander)
return
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Terka,
Ak chces pouzit ByRef, tak musis funkciu volat s premennou ako parametrom. Alebo sa na ByRef vykasles - v tomto pripade je uplne nepotrebny.

A dalej - nezabudnut na %-ta. ;)

Code: Select all

RunOnce(ByRef Title)
{
	IfWinExist, %Title%
		WinActivate, %Title%
	Else
		Run, c:\programy\totalcmd\totalcmd.exe
	Return
}

$^#!j::
	Name = Total Commander
	RunOnce(Name)
Return
alebo

Code: Select all

RunOnce(Title)
{
	IfWinExist, %Title%
		WinActivate, %Title%
	Else
		Run, c:\programy\totalcmd\totalcmd.exe
	Return
}

$^#!j::
	RunOnce("Total Commander")
Return
HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

Aha. Nechodilo mi to kvuli % (skolacka chyba). ByRef jsem nechapala, ale bylo to v napovede, tak jsem to zkousela s nim.
Diky!
Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

da se z jednoho skriptu spustit druhy?
mam zkratku
$^#!r::
a chci druhym skriptem udelat neco jako:

loop 3
{
Send, {CTRLDOWN}{LWINDOWN}{ALTDOWN}r{ALTUP}{CTRLUP}{LWINUP}
;spustit druhy script zmacknutim jeho zkratky
sleep 30*1000
}
S ODPOVEDI SE MOC NEPAREJ
--------------------------------------------------------------------------------------------
da se to nejak udelat, aby kdyz po $^#!r nezmacknu zadne cislo, aby nasledujici loop probehl 1x?
$^#!r::
pocet :=1
Input, pocet,L1,T3
loop %pocet%
{
MSGBOX, AHOJ
}
return
DIKY, docela me to bavi :D, jen mit na ahk vic casu!
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Terka,
da se z jednoho skriptu spustit druhy?
Hej, len nesmies pouzivat $, z Helpu k Hotkeys:
The $ prefix forces the keyboard hook to be used to implement this hotkey, which as a side-effect prevents the Send command from triggering it.
Takze ked mas pred nejakym hotkey $, nespustis ho Sendom.
Ale osobne by som taketo nieco vyriesil skor GoSubom alebo volanim funkcie.
S ODPOVEDI SE MOC NEPAREJ
:D To by som nebol ja. :)
da se to nejak udelat, aby kdyz po $^#!r nezmacknu zadne cislo, aby nasledujici loop probehl 1x?

Code: Select all

Input, Pocet, L1 T3, , 2,3,4,5,6,7,8,9
IfNotEqual, ErrorLevel, Match
	Pocet = 1
:)

HTH
Roman
P.S.: Blahozelam k 100-mu prispevku! :)
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

diky za 100, mas na tom lvi podil! :)
Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

Hackere, slo by:
pri zavirani oken RMB na liste je nabidka "Close" obvykle jako posledni. Slo by to udelat tak, aby byla vzdy posledni?
Napr u napovedy k ahk tomu tak neni.
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Terka,
Asi ano, ale urcite nie jednoducho, a osobne by som si na to netrufol.

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

:o
ale slo by neco takoveho:
kdyz kliknes na listu pravym tlacitkem,
a jeste jednou pravym tl., tak misto RMB posli "c" jako close?
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Nuz, asi by to islo aj elegantnejsie, ale tak dospel som cca. k tomuto:

Code: Select all

SysGet, XDblClickDiff, 36
SysGet, YDblClickDiff, 37
SystemDoubleClickTime := DllCall("GetDoubleClickTime")

$~RButton::
	MouseGetPos, X, Y
	IfEqual, A_ThisHotkey, %A_PriorHotkey%
		IfLess, A_TimeSincePriorHotkey, %SystemDoubleClickTime%
		{
			EnvSub, PriorX, %X%
			Transform, PriorX, Abs, %PriorX%
			IfLessOrEqual, PriorX, %XDblClickDiff%
			{
				EnvSub, PriorY, %Y%
				Transform, PriorY, Abs, %PriorY%
				IfLessOrEqual, PriorY, %YDblClickDiff%
				{
					MouseGetPos, , , Handle
					WinGetClass, Class, ahk_id %Handle%
					IfEqual, Class, Shell_TrayWnd
					{
						Sleep, 500
						Send, c
					}
				}
			}
		}
	PriorX = %X%
	PriorY = %Y%
Return
Vacsina je omacka ohladom detegovania right double-clicku, MouseGetPos, , , Handle a dalsie dva riadky zistuju, ci si prave nad taskbarom, a ak ano, po 500ms nastava Send, c.

No jo, aspon daco. :)

HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

Diky! Hned ho vyzkousim.
edit:super !:lol: -diky. Myslim ze skriptik muze byt docela uzitecny

V teto souvislosti me napada dalsi otazka:
Mam vetsi mnozstvi skriptu ktere pouzivam, coz predpokladam ze Ty taky. Davas je nejak "dohromady", aby jsi mel spusteny jeden a ne 20 malych?
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Mam vetsi mnozstvi skriptu ktere pouzivam, coz predpokladam ze Ty taky. Davas je nejak "dohromady", aby jsi mel spusteny jeden a ne 20 malych?
No, mam jeden hlavny, do ktoreho su #Includenute ostatne. A potom mame este ScriptMerge.

HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

ahoj zas mi to nejde :(

to co je nize je jiz VYRESENO - Zaver: kdyz mam 2 bezici skripty a jeden upravuju, tak reload nefunguje vzdy spravne!

chci udelat zamenu lomitek mezi \home\texty\logy\ <-> /home/texty/logy/
kdyz je ve stringu / zamen vsechny za \ , kdyz neni zamen \ za /
co mi nejde:
1.ifinstring
hledej := "p"
IfInString, clipboard, hledej
MsgBox, %hledej%
kdyz je v clipbordu text obsahujici p vypis ho jinak nic
------------------------------------------------------------------------------------------
2. vypsani poctu nahrazeni v RegExReplace
================================================ZDROJAK============================================

$^#!/:: ;prohozeni \home\texty\logy\ <-> /home/texty/logy/ (Win x Linux)
hledej := "p"
IfInString, clipboard, hledej
MsgBox, %hledej%
NewStr := RegExReplace(clipboard, "[/]", "\",OutputVarCount := "PocetNahrazeni") ;
;msgbox, %PocetNahrazeni%
return ;prohozeni \appl\dpst\logs\ <-> /appl/dpst/logs/ (Win x Linux)
==========================================================================================
==========================================================================================
==========================================================================================
vysledne FUNKCNI reseni (nepredpoklada existenci \ i / v jednom retezci
$^#!/:: ;prohozeni \home\texty\logy\ <-> /home/texty/logy/ (Win x Linux)
hledej := "\"
IfInString, clipboard, %hledej%
{
NewStr := RegExReplace(clipboard, "\\", "/",PocetNahrazeni) ;
;msgbox, pocet nahrazeni: %PocetNahrazeni%
Send, %NewStr%
}
else
{
NewStr := RegExReplace(clipboard, "[/]", "\",PocetNahrazeni) ;
Send, %NewStr%
}
return ;prohozeni \home\texty\logy\ <-> /home/texty/logy/ (Win x Linux)
User avatar
Hacker
Moderator
Moderator
Posts: 13052
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

No, pekne, a to som si konecne nasiel cas odpisat ti. :)
Inac

Code: Select all

 NewStr := RegExReplace(clipboard, "[/]", "\",PocetNahrazeni)
staci aj takto:

Code: Select all

 NewStr := RegExReplace(clipboard, "/", "\",PocetNahrazeni)
HTH
Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Terka
Senior Member
Senior Member
Posts: 326
Joined: 2006-05-24, 09:04 UTC

Post by *Terka »

diky. uz vim ze [] jsou v tomto pripade zbytecna
Ted resim:
1. jak #includnout skript ktery je #persistent do meho hlavniho skriptu:

Code: Select all

Menu, Tray, Icon, c:\ahk\hj\funkcni\ikona.ico
#persistent
$F11::Reload ;f11 je reload
SetTitleMatchMode 2

#Include  c:\ahk\hj\funkcni\final\TC-active_path_in_the_title_bar.ahk   ;tohle ma byt #Persistent a NECHODI -spatne #Include  ?
#Include c:\ahk\hj\funkcni\final\excel_text_to_columns.ahk                ;$^#!\  ;tohle chodi
2. zda lze u funkci jako StringTrimLeft, OutputVar, InputVar, Count
pouzit syntaxi OutputVar := StringTrimLeft ....
Post Reply