AHK暂时没有类似的,你还可以选择将数据写到文件中,或者注册表中以便数据互通。但是效率会很低。现阶段最优解还是利用sendmessage命令来传递,如下(单方面传递)
【发送端】
F1::
Send_WM_COPYDATA("要传递的内容", "1.ahk ahk_class AutoHotkey") ;发送字符串到其他脚本的动作
return
Send_WM_COPYDATA(ByRef StringToSend, ByRef TargetScriptTitle)
{
VarSetCapacity(CopyDataStruct, 3*A_PtrSize, 0)
SizeInBytes := (StrLen(StringToSend) + 1) * (A_IsUnicode ? 2 : 1)
NumPut(SizeInBytes, CopyDataStruct, A_PtrSize)
NumPut(&StringToSend, CopyDataStruct, 2*A_PtrSize)
Prev_DetectHiddenWindows := A_DetectHiddenWindows
Prev_TitleMatchMode := A_TitleMatchMode
DetectHiddenWindows On
SetTitleMatchMode 2
SendMessage, 0x004A, 0, &CopyDataStruct,, %TargetScriptTitle%
DetectHiddenWindows %Prev_DetectHiddenWindows%
SetTitleMatchMode %Prev_TitleMatchMode%
return ErrorLevel
}
【接收端】
global CopyOfData := "" ;定义接收字符串的变量为全局,以便在本脚本引用
F2::
OnMessage(0x004A, "Receive_WM_COPYDATA") ;从发送端接收数据
msgbox,%CopyOfData%
return
Receive_WM_COPYDATA(wParam, lParam)
{
StringAddress := NumGet(lParam + 2*A_PtrSize)
CopyOfData := StrGet(StringAddress)
return true
}