[OT] [AHK] zaklady prace s AHK
Moderator: Hacker
|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
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
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.
alebo
HTH
Roman
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
Code: Select all
RunOnce(Title)
{
IfWinExist, %Title%
WinActivate, %Title%
Else
Run, c:\programy\totalcmd\totalcmd.exe
Return
}
$^#!j::
RunOnce("Total Commander")
Return
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.
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
, jen mit na ahk vic casu!
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

Terka,
Ale osobne by som taketo nieco vyriesil skor GoSubom alebo volanim funkcie.
To by som nebol ja. 

HTH
Roman
P.S.: Blahozelam k 100-mu prispevku!
Hej, len nesmies pouzivat $, z Helpu k Hotkeys:da se z jednoho skriptu spustit druhy?
Takze ked mas pred nejakym hotkey $, nespustis ho Sendom.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.
Ale osobne by som taketo nieco vyriesil skor GoSubom alebo volanim funkcie.
S ODPOVEDI SE MOC NEPAREJ


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.
Nuz, asi by to islo aj elegantnejsie, ale tak dospel som cca. k tomuto:
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
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
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.
No, mam jeden hlavny, do ktoreho su #Includenute ostatne. A potom mame este ScriptMerge.Mam vetsi mnozstvi skriptu ktere pouzivam, coz predpokladam ze Ty taky. Davas je nejak "dohromady", aby jsi mel spusteny jeden a ne 20 malych?
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.
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)

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)
No, pekne, a to som si konecne nasiel cas odpisat ti. 
Inac
staci aj takto:
HTH
Roman

Inac
Code: Select all
NewStr := RegExReplace(clipboard, "[/]", "\",PocetNahrazeni)
Code: Select all
NewStr := RegExReplace(clipboard, "/", "\",PocetNahrazeni)
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.
diky. uz vim ze [] jsou v tomto pripade zbytecna
Ted resim:
1. jak #includnout skript ktery je #persistent do meho hlavniho skriptu:
2. zda lze u funkci jako StringTrimLeft, OutputVar, InputVar, Count
pouzit syntaxi OutputVar := StringTrimLeft ....
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
pouzit syntaxi OutputVar := StringTrimLeft ....