Sorry, I can't provide the detailed code.
When I cancel all DLL threads, the error disappears.
AutoHotke.exe - 系统错误
---------------------------
无法创建新的堆栈防护页面
AutoHotke.exe - 系统错误
---------------------------
无法创建新的堆栈防护页面
Code: Select all
f:=ahkdll()
t:=f.add
t["MsgBox",0] ;<===There is a mistake here.
Code: Select all
f:=AhkThread()
t:=f.addScript
t["MsgBox",0]
Code: Select all
f:=ahkdll()
f.new("#Persistent")
t:=f.add
MsgBox t["MsgBox",1]
ahkdll(){
static dll:=fileread(a_ahkdir "\AutoHotkey.dll","RAW")
return CriticalObject({"":r:=MemoryLoadLibrary(&dll)
,"func":DynaCall(MemoryGetProcAddress(r,"ahkFunction"),"s==sssssssssss")
,"post":DynaCall(MemoryGetProcAddress(r,"ahkPostFunction"),"i==sssssssssss")
,"new":DynaCall(MemoryGetProcAddress(r,"ahktextdll"),"ut==sss")
,"add":DynaCall(MemoryGetProcAddress(r,"addScript"),"ut==si")
,"exec":DynaCall(MemoryGetProcAddress(r,"ahkExec"),"ut==sui")
,"get":DynaCall(MemoryGetProcAddress(r,"ahkgetvar"),"s==sui")
,"set":DynaCall(MemoryGetProcAddress(r,"ahkassign"),"ui==ss")
,"sub":DynaCall(MemoryGetProcAddress(r,"ahkLabel"),"ui==sui")
,"pause":DynaCall(MemoryGetProcAddress(r,"ahkPause"),"i==s")
,"exit":DynaCall(MemoryGetProcAddress(r,"ahkTerminate"),"i==i")
,"ready":DynaCall(MemoryGetProcAddress(r,"ahkReady"),"")
,"reload":DynaCall(MemoryGetProcAddress(r,"ahkReload"),"i==i")})
}
Code: Select all
ahkdll(){
ver:=A_TickCount,init:=FileCopy(a_ahkdir "\AutoHotkey.dll",a_ahkdir "\AutoHotkey" ver ".dll"),dll:=fileread(a_ahkdir "\AutoHotkey" ver ".dll","RAW")
return CriticalObject({"":r:=MemoryLoadLibrary(&dll)
,"func":DynaCall(MemoryGetProcAddress(r,"ahkFunction"),"s==sssssssssss")
,"post":DynaCall(MemoryGetProcAddress(r,"ahkPostFunction"),"i==sssssssssss")
,"new":DynaCall(MemoryGetProcAddress(r,"ahktextdll"),"ut==sss")
,"add":DynaCall(MemoryGetProcAddress(r,"addScript"),"ut==si")
,"exec":DynaCall(MemoryGetProcAddress(r,"ahkExec"),"ut==sui")
,"get":DynaCall(MemoryGetProcAddress(r,"ahkgetvar"),"s==sui")
,"set":DynaCall(MemoryGetProcAddress(r,"ahkassign"),"ui==ss")
,"sub":DynaCall(MemoryGetProcAddress(r,"ahkLabel"),"ui==sui")
,"pause":DynaCall(MemoryGetProcAddress(r,"ahkPause"),"i==s")
,"exit":DynaCall(MemoryGetProcAddress(r,"ahkTerminate"),"i==i")
,"ready":DynaCall(MemoryGetProcAddress(r,"ahkReady"),"")
,"reload":DynaCall(MemoryGetProcAddress(r,"ahkReload"),"i==i")})
}
Users browsing this forum: No registered users and 3 guests