The main solution ahkFunction three Shortcoming:
1,Can not pass objects.
2,SendMessage clogging,Causing stagnation., Such as AhkThread.ahkFunction("Acc_Get",,,"")
3,Optional parameter is invalid
AhkThread.ahkFunction("Fuec") → Fuec(F:=1) → f=""
Code: Select all
AhkThread := AhkDllThread()
AhkThread.ahktextdll("
(LTrim %
#Persistent
Func(B,A:=3){
MsgBox % A
Return [1,2,A]
}
Func1(A:=8){
MsgBox % A
Return A
}
FuncPost_receive(f,s){
s[f]:=IsFunc(f)? %f%((s:=Object(s))*) : """"
}
)")
MsgBox, % AhkThread.ahkFunction("Func1")
MsgBox, % FuncPost_send(AhkThread,"Func",8).3
FuncPost_send(m,f,s*){
m.ahkPostFunction("funcPost_receive",f,r:=Object(s)),t:=A_TickCount
while (A_TickCount - t < 1000) and !s.HasKey(f)
Sleep,-1
Return s[f]
}
Code: Select all
FuncPost_send(m,f,s*){
m.ahkPostFunction("funcPost_receive",f,r:=Object(s)),t:=A_TickCount
while (A_TickCount - t < 1000) and !s.HasKey(f)
Sleep,-1
Return s[f]
}
FuncPost_receive(f,s){
s[f]:=IsFunc(f)? %f%((s:=Object(s))*) : ""
}