This method is totally unobtrusive and even works when you have other Gui's in the script (just remember to number them). At the most, it may use a little bit of extra memory to house the gui, but it won't be much.
And finally, here's the basic outline. You use a button to run labels and an edit to pass strings. The combination of the two can be used for virtually anything you'd need this kind of communication for, but, of course, other controls can be used to make things simpler.
Here's an example of transferring a string to another script:
Receiver:
;The text serves as a Unique IDentifier for the sender. gui,add,text,,UID1 gui,add,edit,vmsg -wantreturn return guiclose: gui,submit msgbox,% msg return
Sender:
detecthiddenwindows,on return escape:: controlsettext,Edit1,The magical teleporting text!,ahk_class AutoHotkeyGUI,UID1 winclose,ahk_class AutoHotkeyGUI,UID1 return
And here's an example of running a label from another script:
Receiver:
;The button does double duty as both the identifier and the receiver. gui,add,button,,UID1 return ButtonUID1: msgbox,% "The """ a_guicontrol """ button launched this thread." return
Sender:
detecthiddenwindows,on return escape:: controlclick,Button1,ahk_class AutoHotkeyGUI,UID1 return
Feel free to use this however you like with no obligation to refer to me. I'm merely pointing out a feature.
If you have any questions at all, just ask.