问题标签 [macos-carbon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1759 浏览

c++ - 帮助使用 OSSpinLock* 替换 while(true) {sleep(1);}

我在 OS X 上维护一个碳 C++ 应用程序。代码中的一个对象中有一个“自旋锁”,如下所示,

有一个提供给 AudioUnitAddRenderNotify() 的渲染后维护回调,它将设置这些不同对象的 mState。

我正在考虑使用内置的 OSSpinLock 系列函数来替换它(如果没有别的,因为它们是线程安全的,而且上面的代码似乎不是)。

这是一个合理的等价物吗?我是否还应该在操作这些对象的 mState 的维护线程中添加一些锁定保护?

0 投票
1 回答
659 浏览

cocoa - 用未弃用的 64 位代码替换 CMNewProfileSearch

我有现有的代码用于CMNewProfileSearch查找然后迭代系统上的颜色配置文件,以获取它们的名称和完整路径。不幸的是,CMNewProfileSearch在 Mac OS X 10.5 中已弃用,并且在编译 64 位应用程序时也不可用。

在阅读 ColorSync Manager 2.5 Reference 时,似乎迭代已安装颜色配置文件的新方法是使用该CMIterateColorSyncFolder功能。

  1. 真的吗?
  2. 有没有一种可可的方式来做我想做的事?
  3. 有人有任何示例代码吗?

谢谢。

0 投票
3 回答
3889 浏览

macos - 如何以编程方式获取 Mac OS X 保留的快捷键

我正在使用一个允许客户自定义分配的快捷键的应用程序。我想做的一件事是警告是否选择了 Mac OS X 已经在使用的快捷键。

我正在尝试使用 CopySymbolicHotKeys,但我不确定我是否正确使用它,因为它列出了保留的命令,即使我没有在“键盘”的“键盘快捷方式”选项卡窗格中看到它和鼠标”系统偏好设置。我希望能够获得那些“保留”以供系统使用的快捷方式,这是要使用的 API 吗?

我在下面包含了我的代码示例,请查看它以提供您可能想到的任何建议。

0 投票
1 回答
1934 浏览

macos - OS X Leopard 上的 FSEvents 怪异

我想监视 mac 上几个目录的文件系统事件。我要监视的目录可能会在运行时发生变化,因此使用 FSEvents 这是我的应用程序所做的:

  • 创建一个全局回调函数来处理回调
  • 为每个文件夹创建一个新的 FSEventStreamRef,将其与上面创建的回调相关联,并向 eventStream 添加一个上下文,以帮助我将更改回调与此文件夹相关联

东西似乎大部分都有效,但我注意到在调用回调和将“eventPaths”值发送到回调时有些奇怪。

例如,如果我为 /Foo 和 /Bar 创建了 StreamRefs,如果我在 /Bar 中添加一个文件,我的回调几乎会立即被调用,但 eventPaths 指向 /Foo 中的一个位置,并且我与 StreamRef 关联的上下文是也是 /Foo 的。

或者,假设我正在监视 /Foo 和 /Bar,然后删除 /Bar(通过正确停止和关闭 /Bar 的 StreamRef)。我现在为 /Fee 创建一个新的 FSEventStreamRef 并与同一个回调关联。我对 /Fee 所做的任何更改都不会导致调用回调,但对 /Foo 的更改会继续引发回调。

我在网上看到的任何示例或文档都只讨论监视单个文件夹。我如何将单个回调与多个 FSEventStreamRefs 关联起来有什么问题吗?听起来这应该不是问题……

有没有人以可靠的方式做过类似的事情,或者对我可能会尝试不同的方法有什么建议?

我在试验时尝试做的一件事是使用单个 FSEventStreamRef 并通过我想要的所有路径向它传递一个 CFArrayRef,当我的监视列表更改关闭并重新创建一个新的 FSEventStreamRef - 这更糟糕的是以上。

0 投票
2 回答
563 浏览

macos - 使用 C(Carbon,标准 C/C++)在 OSX 上将文件标记为可执行文件

我正在寻找一种以编程方式在 OS X 上的文件上设置“可执行”位的方法。我不想调用“chmod a+x”,但我想要与 chmod 调用相同的效果。有什么建议么?碳 API 或任何其他 C/C++ 函数都可以工作......

0 投票
2 回答
8004 浏览

cocoa - Mac OS X:从 Cocoa 应用程序中杀死/退出整个进程树的最快方法

我知道对此有很多问题和答案,但我正在寻找一种有效且强大的解决方案。我需要从 Cocoa 应用程序中终止一个进程及其所有子进程。我得到了进程 ID,我要编写的代码是像这样执行 kill 命令

从我的应用程序中......但这对我来说似乎非常糟糕和残酷。没有更好的解决方案吗?Carbon 的 KillProcess() 和它的 Process Manager 朋友似乎没有多大帮助,除非我自己构建一个流程树表示。我错过了什么吗?

我还有一些代码可以根据 PID 发送退出 Apple 事件。如果能够将其发送到由父进程定义的树中的每个进程,自下而上,那就更好了。但这只是锦上添花。第一个问题的答案得到“点”。

0 投票
2 回答
1050 浏览

fonts - Carbon/Cocoa 字体看起来不同

我正在尝试使用 Carbon 应用程序中的 ATSU api 绘制当前选择的系统字体。并且字体比所有其他本地应用程序都更大胆。这是我正在谈论的屏幕截图示例:


(来源:memecode.com

最上面一行是 XCode,中间是我使用非粗体字体的应用程序,底部是我使用粗体字体的应用程序。我使用了相同的文本,以便轻松查看它们之间的重量差异。我用来创建我绘制的样式的代码是:

其中“Face()”返回一个包含字体名称的 C 字符串,“PointSize()”返回一个包含我想要的点大小等的整数。我正在使用以下代码检索这些值:

它返回有效的外观/点大小信息,实际上字体看起来是正确的,只是它看起来比其他应用程序更粗。它可能看起来没什么大区别,但是当您的整个应用程序充满文本时,它就会变得很明显。我的旗舰产品是一个电子邮件客户端......因此有很多文字。

创建布局并最终调用 ATSUDrawText 的绘图代码很长,我不确定它是否会导致问题..我认为它与样式更相关......但如果需要,我稍后会发布指向该来源的链接.

任何人都可以帮助我的字体看起来不那么粗体吗?

0 投票
1 回答
306 浏览

cocoa - 为什么 Spotlight 有时不运行我的查询?

我正在使用 Spotlight API,包括 Carbon 和 Cocoa 版本,我似乎每隔一段时间就会出现同样的问题:查询永远不会运行,也永远不会触发任何通知。但是,我想强调的是,它在大多数情况下都会运行,所以发生了一些奇怪的事情。

我没有写任何特定的应用程序。这只是一个 Spotlight 测试工具,因此不会根据用户输入触发查询。相反,它是在applicationDidFinishLaunching:我的控制器内部配置和执行的。最初我尝试在 中执行此操作awakeFromNib,但在这种情况下,查询从未运行。(我的理论是 RunLoop 还没有开始,但我不确定。)

这是applicationDidFinishLaunching:Carbon 的代码:

以上是我凭记忆写的,所以可能包含原文中没有的错别字。原始代码编译并运行得很好,除了偶尔根本不工作。

是什么赋予了?也许applicationDidFinishLaunching:不是 Spotlight 查询的正确位置。

0 投票
3 回答
493 浏览

objective-c - 为什么 Xcode 会给我这些错误?

我得到的错误是 Xcode 说 3 件事未声明(见下图) alt text http://snapplr.com/snap/ks4h

但是在头文件中我已经声明了它们(见下图)

替代文字 http://snapplr.com/snap/htmb

为什么我在声明这些错误时会收到这些错误。

完整代码:

头文件。

实施文件

0 投票
3 回答
1339 浏览

cocoa - 如何在 OS X 上使用 Cocoa 或 Carbon 截取单个窗口?

我需要能够识别用户屏幕上的单个窗口并对其进行屏幕截图。屏幕数据将存储在内存中,而不是写入磁盘。

这已经通过命令行工具 /usr/sbin/screencapture 或 Grab 实用程序得到支持(尽管它们的功能不够广泛,无法证明我将它们作为子进程启动是合理的)。

参考/提示

  • nm /usr/sbin/screencapture 返回私有 Cocoa 接口,包括似乎执行此操作的 _CGSGetSharedWindow。
  • 第三方应用程序 Snapzpro 执行此操作(但不提供源代码)