ahk吧 关注:873贴子:2,703
  • 10回复贴,共1

不同的ahk之间,实现变量互通

只看楼主收藏回复

不同的ahk之间,实现变量互通,除了剪切板ClipBoard这个变量外
还有哪个类似变量能像ClipBoard这样能直接拿来用?


IP属地:北京来自Android客户端1楼2024-09-16 23:04回复
    有替代方案也行,就是灵敏实时能在不同ahk间互通的变量


    IP属地:北京来自Android客户端2楼2024-09-16 23:05
    回复
      广告
      立即查看
      有专门的命令可以传递字符串,但是单纯传递变量做不到


      IP属地:辽宁3楼2024-09-17 16:56
      收起回复
        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
        }


        IP属地:辽宁4楼2024-09-17 19:59
        收起回复