5

最近我尝试了 ColorSnapper应用程序,我注意到它可以保持其他应用程序处于活动状态。

(检查下面的屏幕,您可以看到 safari 窗口仍然处于活动状态,并且 ColorSnapper 也一直处于活动状态)。

在此处输入图像描述

怎么可能重现这种效果?

4

3 回答 3

4

我相信这些类型的应用程序在其 plist 文件中使用LSBackgroundOnly或作为启动服务键(参考)。LSUIElement

这里有更多关于它的信息。

于 2012-05-11T11:20:15.300 回答
2

我只是尝试一下,LSBackgroundOnly是解决方案,但是您必须设置窗口的级别。

例子 :

[mySpecialNSWindow setLevel:NSMainMenuWindowLevel];

这将在其他应用程序的窗口上方显示特殊窗口。

于 2012-05-11T14:50:31.700 回答
1

我认为正确的方法是(1)制作应用程序 LSBackgroundOnly,(2)使用此处描述的自定义透明窗口并将其级别设置为 NSFloatingWindowLevel,(3)在您的应用程序委托中使用类似的东西来监视鼠标移动尽管您的应用程序未处于活动状态,例如,让您的窗口跟随鼠标位置:

[NSEvent addGlobalMonitorForEventsMatchingMask:NSMouseMovedMask handler:^(NSEvent *event) {
        [window setFrameOrigin:[NSEvent mouseLocation]];
    }];

然后,您可以在(透明)窗口中拥有您喜欢的视图,移动它们并根据鼠标位置修改其内容。

于 2012-05-14T21:31:09.140 回答