Many thanks for providing these tokens:
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.
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."
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.
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.
Executing Instance Example.kmmacros (2.8 KB)
Yeah, did a quickie test and the AppleScript environment variable is the same as the token.
Oh I know what Peter meant now. Duh.
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.
Instance Macro Examples.kmmacros (5.0 KB)
(Edit: forgot the results)