[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 , jen mit na ahk vic casu!
Terka,
Ale osobne by som taketo nieco vyriesil skor GoSubom alebo volanim funkcie.
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.
To by som nebol ja.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 ....