如何编写可以影响更改的OS X应用程序(自定义光标,绘制图像),即使它不活动?

时间:2011-08-07 20:49:54

标签: cocoa macos-carbon nsimage osx-snow-leopard nscursor

我之前曾询问过有关在OSX上更改系统范围内光标的问题。我使用NSCursor来更改光标,但效果只有在应用程序处于活动状态时才会生效。当另一个应用程序变为活动时,自定义光标将丢失。

这是一个相关的,更一般的问题。你如何编写一个具有系统妻子效应的应用程序?例如,即使您的应用程序未处于活动状态,也会在屏幕上绘制图像,还有其他内容?

据我所知,我可能需要比Cocoa API更低级别。我只是无法弄清楚从哪里开始寻找?我需要查看的任何特定Carbon API?甚至更低?

任何指针都将不胜感激!如果您特别知道如何在系统范围内更改光标或如何绘制图像并移动它(无论哪个应用程序处于活动状态),那么这也将解决我当前的问题!我可以编写一个可以在系统上安装时实现此目的的应用程序吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

你可以达到你想要的效果,但不是你想要的方式。

你说,

  

我正在编写一个演示辅助应用程序,它以编程方式在屏幕上显示“激光指针”的等效内容。我的第一个想法是使用鼠标光标本身作为指针,并将其外观更改为红色圆圈。

然后假装那个。创建一个类型为LSUIElement的应用程序,可能不是,具体取决于您想要的行为。创建一个无边框窗口(类型NSBorderlessWindowMask)并用清晰的颜色填充它。将它的窗口水平设置得足够高,以便它漂浮在所有东西上(使用-[NSWindow setLevel:],虽然我无法想到最好的水平是什么),并将其吸引到它。

当你不是最重要的应用程序时,你无法设置光标。确实,你不能只是在屏幕上涂鸦。但如果你聪明的话,你可以得到同样的效果。

答案 1 :(得分:0)

Mac OS X上的任何API都不提供此行为。您必须修改操作系统中的资源文件,这是一个非常危险的操作,可能会阻止目标计算机。你必须知道你在做什么。

您是否尝试实施主题应用程序或类似的东西?你的目标是什么?如果您告诉我们您要做什么,我们可以建议其他方法。