Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何编写一个OSX应用程序,即使它不处于活动状态,也可以影响更改(自定义光标、绘制图像)?_Cocoa_Macos Carbon_Nsimage_Osx Snow Leopard_Nscursor - Fatal编程技术网

Cocoa 如何编写一个OSX应用程序,即使它不处于活动状态,也可以影响更改(自定义光标、绘制图像)?

Cocoa 如何编写一个OSX应用程序,即使它不处于活动状态,也可以影响更改(自定义光标、绘制图像)?,cocoa,macos-carbon,nsimage,osx-snow-leopard,nscursor,Cocoa,Macos Carbon,Nsimage,Osx Snow Leopard,Nscursor,我之前问过一个关于在OSX上更改光标系统范围的问题。我使用NSCursor来更改光标,但效果仅在应用程序处于活动状态时才有效。当另一个应用程序处于活动状态时,自定义光标将丢失 这是一个相关的、更一般的问题。如何编写一个具有系统妻子效应的应用程序?例如,即使您的应用程序未处于活动状态,但在屏幕上绘制图像时,是否还有其他内容处于活动状态 我知道我可能需要比Cocoa API更低的级别。我就是不知道从哪里开始找?我需要看哪些具体的碳API?甚至更低 任何提示都将不胜感激!如果您特别知道如何在系统范围内

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

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

我知道我可能需要比Cocoa API更低的级别。我就是不知道从哪里开始找?我需要看哪些具体的碳API?甚至更低

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


谢谢

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


你是在尝试实现一个主题化应用程序还是类似的东西?你的目标是什么?如果你告诉我们你想做什么,我们可能会建议其他方法。

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

你说

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

那就假装吧。创建一个应用程序,可能是
LSUIElement
,也可能不是,具体取决于您想要的行为。创建一个无边框窗口(键入
NSBorderlessWindowMask
)并用清晰的颜色填充。将其窗口级别设置得足够高,以使其在所有内容上都浮动(使用
-[NSWindow setLevel://code>,尽管我想不出最好的级别是什么),并将其拉进去


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

这里有一个简单的例子,说明我正在尝试做的一件事。我正在编写一个演示辅助应用程序,它以编程方式在屏幕上显示“激光指针”的等价物。我的第一个想法是使用鼠标光标本身作为指针,并将其外观更改为红色圆圈。如果你说这不可能,我想在屏幕上画一个红色圆圈,并通过编程控制它,但即使应用程序本身不活动(在本例中,当演示以全屏运行时),它也应该能够显示出来。谢谢我想你可能得重新考虑你在做什么。激光指针是有效的,因为它们产生的点比投影的图像要亮得多,所以在它上面很显眼。屏幕上的任何红点都将与投影一样明亮,因此不会立即可见。谢谢您的回答!我会试试这些东西。