Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AutoHotKey: Calling one script from another script

I just discovered AutoHotKey and it seems like a dream come true. I have two .ahk scripts, A.ahk and B.ahk. I want to call script B from within script A.

The AHK forums are strangely silent on the subject but I am sure this is possible.

like image 968
Abbas Avatar asked Dec 30 '10 18:12

Abbas


3 Answers

It's the #Include directive you are looking for. You include ScriptB.ahk, then call its functions like you normally would.

#include SomeFile.ahk

http://www.autohotkey.com/docs/commands/_Include.htm

like image 67
Corey Avatar answered Nov 11 '22 16:11

Corey


Using an #include directive is more common, but occasionally you will need to call an external AHK script. This is easily accomplished using the Run or RunWait commands. While you can pass arguments to the called script through the command line you cannot call functions within it directly. Also, this approach will create a separate thread for the called script, but that may be the point.

like image 31
Patient Zero Avatar answered Nov 11 '22 18:11

Patient Zero


What really helped was a combination of the previous answers and a little bit of outside knowledge. I needed a script that would call more than 1 script, and since my files were in different folders, I found that I needed to specify the entire path of the files (I am sure this could be shortened but this was good enough for me at this point). I also didn't want all the different scripts that were being called to appear in the tray of the taskbar so I added an ExitApp statement at the end. So my 'generalized' code was follows. Hopefully it can help another person.

#SingleInstance, Force

; HotKeys
#Include C:\Users\username\path1\Arrows.ahk
#Include C:\Users\username\path1\HomeEndModifiers.ahk

; SoundKeys
#Include C:\Users\username\path2\VolumeAdjustment.ahk

; Opening Programs
#Include C:\Users\username\path3\OpeningPrograms.ahk

ExitApp
```
like image 2
Diego Avatar answered Nov 11 '22 16:11

Diego