AhkThread

Create a real additional AutoHotkey thread in current process using AutoHotkey.dll.


OutputVar := AhkThread(ScriptOrFile, Parameters, Title, ScriptIsFile, DllToUse)
Function Example: Thread := AhkThread("MsgBox Message from thread.")

Parameters

OutputVar

The name of the variable in which to store the object for newly created thread.
Using this object we can call all AutoHotkey.dll functions with simple object syntax.

ScriptOrFile (optional)

The AutoHotkey script to execute. This parameter can be one of the following:

- Script passed as string or variable containing string.
- Path to an ahk file. Parameter ScriptIsFile must be set to true to start a script from file.
- Empty or omitted to start an empty script ("#Persistent`n#NoTrayIcon").
- 0 to prepare the thread but not start it. Use ahkdll or ahktextdll to start new thread.

Parameters (optional)

Command line parameters that will be available in built-in variable A_Args object.

Title (optional)

Title for the dll thread (by default filename) that will be shown in MsgBox, Gui... when no Title is given.

ScriptIsFile (optional)

Set to true or 1 if ScriptOrFile is a path to a file on disk or network.

DllToUse (optional)

Path or Resource name for AutoHotkey.dll that will be used to create new thread.

General Remarks

ahkdll and ahktextdll will behave different when AutoHotkey.dll is compiled.
When ScriptOrFile is omitted or empty, the compiled script is executed.

To free resources for the thread we have to call ahkthread_free(obj) and also release the object (obj:="").
obj.ahkterminate() can be called optionally.

Methods
ahkdll Load a new thread from a file, current thread will be terminated.
ahktextdll Load a new thread from a string/memory/variable, current thread will be terminated.
ahkReady Returns 1 (true) if a thread is being executed currently, 0 (false) otherwise.
ahkTerminate Terminate thread.
ahkReload Reload thread using same parameters used with ahkdll or ahktextdll.
ahkFunction Call a function via SendMessage method. Mainly used with AutoHotkey.dll to call a function in dll script or call a function in main script from dll.
ahkPostFunction Call a function via PostMessage method (does not wait until function returns). Also used mainly with AutoHotkey.dll
ahkExecuteLine Executes script from given line pointer.
ahkLabel Goto (PostMessage) or Gosub (SendMessage) a Label. Also used mainly with AutoHotkey.dll
ahkFindFunction Find a function and return its pointer.
ahkFindLabel Find a label and return its pointer.
addFile Add and optionally execute additional script/code from file. Not available for scripts compiled with AutoHotkeySC.bin.
addScript Add and optionally execute additional script/code from text/memory/variable. Not available for scripts compiled with AutoHotkeySC.bin.
ahkExec Execute some script/code from text/memory/variable temporarily. Not available for scripts compiled with AutoHotkeySC.bin.
ahkassign Assign a value to variable or pointer of variable.
ahkgetvar Retrieve a value from a variable.
ahkPause Pause Script.

Related

AutoHotkey.dll, Objects, DllCall

Examples

ahkdll:=AhkThread("Msgbox `% variable:=`"Thread`"") ; Loads the AutoHotkey module and starts the script.
While !ahkdll.ahkgetvar.variable
  Sleep 50 ; wait until variable has been set.
MsgBox % ahkdll.ahkgetvar.variable ; Display content of variable in thread
ahkthread_free(ahkdll),ahkdll:="" ; Stop execution in thread and free resources.