gpt4 book ai didi

macos - 如何判断 CGEvent 触发的操作何时完成?

转载 作者:行者123 更新时间:2023-12-03 17:56:55 24 4
gpt4 key购买 nike

我正在使用CGEventPost()以编程方式发布键盘和鼠标事件。这些事件最终将触发其他事件/操作(例如,某些窗口变为事件状态、按下按钮、在文本字段中输入字母)。为了同步线程,我想知道何时由特定 CGEvent 触发所有这些事件。已完成处理。

全部CGEventPost() s 最终将作用于单个应用程序的单个窗口。

编辑:

Nielsbot 的解决方案效果很好。我最终为 CCL 粗略地实现了 MCL 的事件派发功能。该函数会阻塞,直到 Cocoa 运行进程循环中的所有当前事件都执行完毕。由于所有键盘和鼠标事件最终都会触发在此线程上运行的操作,因此这种方法效果很好。

我对此唯一担心的是,事件调度在 CGEvent 触发事件循环中的操作“之前”被调用,但我的测试当前表明这种情况没有发生。所以我现在正在使用这个解决方案。

就 FYSA 而言,发布的事件似乎需要保守的 1 毫秒才能进入运行循环,至少在我的设置中是这样。

(defun event-dispatch ()
(with-shadow (gui::queue-for-event-process
(lambda (f &key at-start)
(declare (ignore at-start))
(funcall fun-orig f :at-start nil)))
(gui::call-in-event-process (lambda () ()))))

最佳答案

插入自定义事件类型队列作为标记怎么样?等到该事件触发您自己的一些代码 - 这可能足以表明您之前发布的所有事件都已得到处理...

关于macos - 如何判断 CGEvent 触发的操作何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com