上下文关于 action_handler_t
IDA 提供了多种功能和 API 来扩展和增强其可用性,其中一项功能是action_handler_t通过idaapi.action_handler_t在 IDAPython 中继承来创建用户定义的对象。
该功能涉及多个 API,但其中一个要求是拥有一个继承所述idaapi.action_handler_t类并实现两个方法的类。其中一种方法是update(self, ctx)(另一种是activate(self, ctx))。
在 IDA 应用程序的生命周期中,该update方法将在某些事件(启动、加载新 IDB、焦点转移到另一种形式等)上多次调用。更新然后通过发出另一个调用来传达是否应启用或禁用操作以及何时再次查询update。
这些事件之一是操作的activation调用返回。动机是作为激活动作的结果而执行的动作可能会改变相同动作或其他动作的状态。
实际问题
在使用 IDA 和某些 Qt 信号/插槽功能时,我创建了一个activation立即返回并将其大部分登录安排到其他插槽的方法,现在我失去了update使操作响应整体状态的“激活后”调用改变和改变自己的状态(从禁用到启用,反之亦然)。
我的问题是,如何强制updateIDA 的内核调用所有现有操作,以便当我延迟的代码完成时,它可以手动告诉 IDA 它应该调用update所有操作来查询它们的新状态?