[AHK]自定义消息实现两个脚本之间通信

61 篇文章 6 订阅
本文介绍了如何编写两个AHK脚本,通过自定义消息机制实现一个脚本控制另一个,如发送特定数字使接收脚本退出。这种方法展示了模块功能的解耦和界面与代码的分离,以TC功能为例,通过消息号进行调用。
摘要由CSDN通过智能技术生成

自己编写的两个脚本,用自定义消息实现,一个脚本控制另一个脚本,让被控脚本挂起或退出。

从aaa.ahk向bbb.ahk发送一个消息,bbb.ahk捕获消息后再进行处理,比如:
从aaa.ahk中向bbb.ahk发送特定的数字:12345,bbb.ahk捕获后立即退出。

aaa.ahk

F1::
msgbox  发送消息测试,点击确定,将发送8888到bbb.exe
PostMessage,0x5555,8888,,,bbb.ahk
return

F2::
msgbox 退出测试,点击确定,将让bbb.exe退出
PostMessage,0x5555,12345,,,bbb.ahk
return

bbb.ahk

GUI,+ToolWindow -SysMenu
Gui,show
OnMessage(0x5555,"MsgMonitor")
return
MsgMonitor(wParam)
{
	if(wparam="12345")
	{
		msgbox % "bbb收到:" wparam
		exitapp
		}
	else
		msgbox % "bbb收到:" wparam
}

有了自定义消息机制就可以实现模块功能解耦,实现界面调用和代码分开。把功能代码集中到一个脚本中实现,然后从界面中通过发送消息来调用相应的功能。界面甚至可以用另一种语言实现。

TC的每个功能都可以发送消息号调用,向TC致敬!
在这里插入图片描述

AutoHotkey 脚本之间传递参数可以通过多种方式实现,以下是其中两种常见的方法: 1. 使用文件传递参数 可以将参数写入一个文本文件中,然后在另一个脚本中读取该文件以获取参数。例如,假设第一个脚本需要传递一个文件路径给第二个脚本: 第一个脚本: ``` FileAppend, C:\example\file.txt, param.txt Run, second_script.ahk param.txt ``` 第二个脚本: ``` FileReadLine, param, %1% ; do something with the param variable ``` 在第一个脚本中,`FileAppend`命令将参数写入`param.txt`文件中,然后使用`Run`命令启动第二个脚本,并将`param.txt`文件作为参数传递给它。 在第二个脚本中,`FileReadLine`命令读取`%1%`参数(也就是`param.txt`文件的路径),然后将其存储在`param`变量中,供脚本使用。 2. 使用 SendMessage 函数传递参数 另一种常见的方法是使用`SendMessage`函数来传递参数。这种方法需要第一个脚本知道要发送消息的另一个脚本的窗口句柄(句柄是一个唯一的标识符,用于标识应用程序中的窗口)。 第一个脚本: ``` WinGet, hWnd, ID, second_script.ahk SendMessage, 0x400 + 1, 0, "C:\example\file.txt", , ahk_id %hWnd% ``` 第二个脚本: ``` OnMessage(1025, "MyMessage") Return MyMessage(wParam, lParam, Msg, hwnd) { if (Msg = 1025) { param := lParam ; do something with the param variable } } ``` 在第一个脚本中,`WinGet`命令获取第二个脚本的窗口句柄。然后,使用`SendMessage`函数将消息发送到该句柄。在这种情况下,我们使用了一个自定义消息`0x400 + 1`,并将参数`C:\example\file.txt`作为消息的`lParam`参数。 在第二个脚本中,我们使用`OnMessage`函数来监听我们自定义消息。当消息被发送时,`MyMessage`函数会被调用,并将`lParam`参数存储在`param`变量中,以供脚本使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值