The %ExecutingInstance% token returns (v9.0+) an opaque ID of the currently executing instance, including both the execution instance and the specific macro executing. ==It can be used to retrieve Local and Instance variables via AppleScript==.
Sounds fantastic!
But how do we use it?
Could you please provide a scripting example.
Hmmm, I think in Applescripts instead of the %ExecutingInstance% token you use the environment variable KMINSTANCE instead?
set kmInst to system attribute "KMINSTANCE"
tell application "Keyboard Maestro Engine"
set kmLocalVar1 to getvariable "Local__SomeLocalVariable" instance kmInst
set kmLocalVar2 to getvariable "Instance__SomeInstanceVariable" instance kmInst
setvariable "Local__FromAS" instance kmInst to "Variable set in AppleScript."
end tell
I've always assumed the token and the environment variable return the same thing, for the same instance.
I have used the %ExecutingInstance% token where if I ran a macro a second time, if a first instance was running I wanted to kill the first one, not the second one.
Example Macro
This example pauses a macro for 5 minutes. If a new instance is run during the 5 minutes, the original macro is cancelled and a new 5 minute timer started.
Pass in the value of an executing instance FROM A DIFFERENT INSTANCE and you can retrieve the values from that instance too.
2 macros below. First saves it's instance in a global variable. Sets an instance variable named Instance_MacroName to it's name.
Second set's the same variable name Instance_MacroName to it's own name, then calls an AppleScript. That AppleScript pulls the value of Instance_MacroName from the other Instance and from the Instance that called it and then sets some local variables (in the calling script) with the values. Values are displayed in a window and the first instance is cancelled.