先运行接收端.ahk,再运行发送端.ahk测试【需要互相通信就两端都创建唯一隐藏窗口】

 

接收端.ahk

; 先运行接收端.ahk,再运行发送端.ahk测试【需要互相通信就两端都创建唯一隐藏窗口】
Gui Gui_Label_Gui: Show, Hide, <<接收端的唯一隐藏窗口名>>
OnMessage(0x4a, "ExecReceive_WM_COPYDATA")
return

; 更多详见帮助文档:https://wyagd001.github.io/zh-cn/docs/lib/OnMessage.htm

; 接收字符串后保存在变量名为"收到的字符串",以供调用
ExecReceive_WM_COPYDATA(wParam, lParam) {
  Global 收到的字符串 := StrGet(NumGet(lParam + 2*A_PtrSize))
  Try Gosub ExecReturn%wParam%
  Return true
}

; ExecSend的参3不带标签,就默认向主进程发送信息,接收信息后跳转到ExecReturn0【默认为"0"】
ExecReturn0:
  ToolTip %收到的字符串%
Return

; ExecSend的参数3设置为2时,进入这个ExecReturn2标签
ExecReturn2:
  ExitApp
Return

 

发送端.ahk

; 先运行接收端.ahk,再运行发送端.ahk测试【需要互相通信就两端都创建唯一隐藏窗口】
ExecSend("发送端发送的字符串 - 并延时2秒", "<<接收端的唯一隐藏窗口名>>", 0)
Sleep 2000
ExecSend("关闭接收进程的示例", "<<接收端的唯一隐藏窗口名>>", 2)
return

; 更多详见帮助文档:https://wyagd001.github.io/zh-cn/docs/lib/OnMessage.htm

ExecSend(StringToSend, Label="WinTitle", flag=0) {
  VarSetCapacity(CopyDataStruct, 3*A_PtrSize, 0)
  , NumPut((StrLen(StringToSend) + 1) * (A_IsUnicode ? 2 : 1), CopyDataStruct, A_PtrSize)
  , NumPut(&StringToSend, CopyDataStruct, 2*A_PtrSize)
  DetectHiddenWindows % ("On", DHW:=A_DetectHiddenWindows)
  WinGet, NewPID, PID, %Label% ahk_class AutoHotkeyGUI
  SendMessage, 0x4a, flag, &CopyDataStruct,, ahk_pid %NewPID% ahk_class AutoHotkey
  DetectHiddenWindows %DHW%
  Return ErrorLevel
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。