将变量存在hook中
支持芯片: SHMICTRL系列芯片 ESP32-S3系列void hook_set(str text);
void hook_set(int num);
//参数可以是字符串变量和整数变量
hook_set函数需要放在hook_run函数之后,按序号进行数据的存储,第一个存储的是0号,在回调用使用hook_get(0)获取;
由于wifi_getinfo读出的各种信息仅在onWiFI32事件中才能起作用,而在回调函数中无法正确读出wifi_getinfo的数值,因此我们构建了hook_set语句;
当执行hook_run执行后,会将对应的回调做好标志,在执行hook_set语句的时候,会自动更改设有标志的hook选项,以确保在回调事件中使用hook_get获取值;
示例
//在urljpg控件中create事件中,使用
void create()
{ hook_add("onWIFI32","urljpg","doWIFI");
}
//urljpg控件中
void doWIFI() //处理bin下载完成之后的事件
{ str url;
int size;
url=hook_get(0); //url
size=hook_get(1); //size
...... //对应处理
}
//在appbase的onWIFI3事件中
void onWIFI32(int m){
if (m==4){ //httpdnbin 下载二进制数据完成
$dnpool_busy=0; //下载完成
hook_run("onWIFI32","*","*"); //获取onWIFI32所有的hook项目,并可赋值
hook_set(wifi_getinfo(5)); //url
hook_set(wifi_getinfo(19)); //size
}
}
注意
- 详细参见:控件间hook钩子调用