如何在Mac OS X上获取活动应用程序的关键窗口参考

时间:2014-07-02 18:24:05

标签: c++ macos

我正在编写服务应用程序在后台运行,并在Mac OS X上捕获“焦点”窗口。“焦点”窗口表示窗口当前正在接收用户输入。 (在Mac中我认为这称为key window
我目前正在使用CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);获取窗口列表,并获得kCGWindowLayer == 0的第一个窗口。 (因为列表是从前到后的顺序)。

但事实并非如此。有时如果活动应用程序弹出一个无模式对话框,无模式对话框将成为关键窗口,但它不是kCGWindowLayer == 0的第一个窗口,所以我会得到一个错误的窗口。

获取活动应用程序的关键窗口的正确方法是什么?或者可以告诉我关键窗口更改的通知回调也没问题。

此外,由于我在不属于我的应用程序的窗口上操作,NSApplication.windowWithWindowNumber可能无效。

0 个答案:

没有答案