Exported function that executes script from given line pointer.
OutputVar := ahkExecuteLine(LinePointer, Mode, Wait)Function Example: LinePointer := DllCall("AutoHotkey.dll\ahkExecuteLine", "PTR", LinePointer, "UInt", 0, "UInt", 0, "PTR") VarPointer := DllCall("AutoHotkey.exe\ahkExecuteLine", "PTR", LinePointer, "UInt", 0, "UInt", 0, "PTR")
The name of variable in which to store the pointer to next line.
Pointer to Line to start execution from. NULL / false / 0 can be used to get pointer to first line.
0 - will not execute and return a pointer to next line
only.
1 - UNTIL_RETURN
2 - UNTIL_BLOCK_END
3 - ONLY_ONE_LINE
1 (true) if you want to wait until execution finishes, else FALSE / NULL / 0.
ahkFindFunc, ahkFindLabel, ahkassign
dll:=AhkThread("#Persistent`nMyVar:=""Hello World!""`nReturn`nMsgBox `% MyVar") ; start a new thread and set MyVar variable. hLine:=0 Loop 3 ; Retrieve pointer to 4-th executable line. hLine := dll.ahkExecuteLine[hLine] dll.ahkExecuteLine[hLine,1,1] ; execute from the 4-th line ; ---------------- Advanced Exaple ---------------- MsgBox this line will be executed twice ; AHK Structures global _AHKDerefType := "LPTSTR marker,{_AHKVar *var,_AHKFunc *func},BYTE is_function,param_count,WORD length" global _AHKExprTokenType := "{__int64 value_int64,double value_double,struct{{PTR *object,_AHKDerefType *deref,_AHKVar *var,LPTSTR marker},{LPTSTR buf,size_t marker_length, BOOL is_lvalue}}},UINT symbol,{_AHKExprTokenType *circuit_token, LPTSTR mem_to_free}" global _AHKArgStruct := "BYTE type,bool is_expression,WORD length,LPTSTR text,_AHKDerefType *deref,_AHKExprTokenType *postfix" global _AHKBreakPoint := "INT id,BYTE type,BYTE state,bool temporary" global _AHKLine := "BYTE mActionType,mArgc,WORD mFileIndex,UINT mLineNumber,_AHKArgStruct *mArg,PTR *mAttribute,_AHKLine *mPrevLine,*mNextLine,*mRelatedLine,*mParentLine,_AHKBreakPoint *mBreakPoint" global _AHKLabel := "PTR vTable,LPTSTR mName,_AHKLine *mJumpToLine,_AHKLabel *mPrevLabel,*mNextLabel" global _AHKFuncParam := "_AHKVar *var,WORD is_byref,default_type,{LPTSTR default_str,Int64 default_int64,Double default_double}" If (A_PtrSize = 8) global _AHKRCCallbackFunc := "UINT64 data1,data2,BYTE actual_param_count,create_new_thread,event_info,*_AHKFunc func" else global _AHKRCCallbackFunc := "ULONG data1,data2,data3,data4,data5,BYTE actual_param_count,create_new_thread,event_info,*_AHKFunc func" global _AHKFunc := "PTR vTable, LPTSTR mName, {PTR mBIF, _AHKLine *mJumpToLine},_AHKFuncParam *mParam, int mParamCount, mMinParamCount, PTR *mClass,_AHKVar **mGlobalVar, **mVar, **mLazyVar, **mStaticVar, **mStaticLazyVar, int mGlobalVarCount, mVarCount, mVarCountMax, mLazyVarCount, mStaticVarCount, mStaticVarCountMax, mStaticLazyVarCount, mInstances, BYTE mDefaultVarType, bool mIsBuiltIn, mIsVariadic, mPreprocessLocalVarsDone" global _AHKVar := A_PtrSize ":{Int64 mContentsInt64,Double mContentsDouble,PTR mobject},{char *mByteContents,LPTSTR mCharContents},{UINT_PTR mLength,_AHKVar *mAliasFor},{UINT_PTR mByteCapacity,UINT_PTR mBIV},BYTE mHowAllocated,mAttrib,mScope,mType,LPTSTR mName" hLine:=DllCall(A_AhkPath "\ahkExecuteLine","Ptr",hLine,"UInt",0,"UInt",0,"PTR") ; get pointer to first line in current script mLine:=Struct(_AHKLine,hLine) ; Check if this is our script and correct line number as it might be included file or static line that is executes before script starts While mLine.mFileIndex!=0 || mLine.mLineNumber!=1 mLine[] := mLine.mNextLine ; reassign next line and update Structure DllCall(A_AhkPath "\ahkExecuteLine","Ptr",hLine,"UInt",3,"UInt",1,"PTR") ; execute first line in current thread