问题标签 [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.
c++ - 帮助使用 OSSpinLock* 替换 while(true) {sleep(1);}
我在 OS X 上维护一个碳 C++ 应用程序。代码中的一个对象中有一个“自旋锁”,如下所示,
有一个提供给 AudioUnitAddRenderNotify() 的渲染后维护回调,它将设置这些不同对象的 mState。
我正在考虑使用内置的 OSSpinLock 系列函数来替换它(如果没有别的,因为它们是线程安全的,而且上面的代码似乎不是)。
这是一个合理的等价物吗?我是否还应该在操作这些对象的 mState 的维护线程中添加一些锁定保护?
cocoa - 用未弃用的 64 位代码替换 CMNewProfileSearch
我有现有的代码用于CMNewProfileSearch
查找然后迭代系统上的颜色配置文件,以获取它们的名称和完整路径。不幸的是,CMNewProfileSearch
在 Mac OS X 10.5 中已弃用,并且在编译 64 位应用程序时也不可用。
在阅读 ColorSync Manager 2.5 Reference 时,似乎迭代已安装颜色配置文件的新方法是使用该CMIterateColorSyncFolder
功能。
- 真的吗?
- 有没有一种可可的方式来做我想做的事?
- 有人有任何示例代码吗?
谢谢。
macos - 如何以编程方式获取 Mac OS X 保留的快捷键
我正在使用一个允许客户自定义分配的快捷键的应用程序。我想做的一件事是警告是否选择了 Mac OS X 已经在使用的快捷键。
我正在尝试使用 CopySymbolicHotKeys,但我不确定我是否正确使用它,因为它列出了保留的命令,即使我没有在“键盘”的“键盘快捷方式”选项卡窗格中看到它和鼠标”系统偏好设置。我希望能够获得那些“保留”以供系统使用的快捷方式,这是要使用的 API 吗?
我在下面包含了我的代码示例,请查看它以提供您可能想到的任何建议。
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 - 这更糟糕的是以上。
macos - 使用 C(Carbon,标准 C/C++)在 OSX 上将文件标记为可执行文件
我正在寻找一种以编程方式在 OS X 上的文件上设置“可执行”位的方法。我不想调用“chmod a+x”,但我想要与 chmod 调用相同的效果。有什么建议么?碳 API 或任何其他 C/C++ 函数都可以工作......
cocoa - Mac OS X:从 Cocoa 应用程序中杀死/退出整个进程树的最快方法
我知道对此有很多问题和答案,但我正在寻找一种有效且强大的解决方案。我需要从 Cocoa 应用程序中终止一个进程及其所有子进程。我得到了进程 ID,我要编写的代码是像这样执行 kill 命令
从我的应用程序中......但这对我来说似乎非常糟糕和残酷。没有更好的解决方案吗?Carbon 的 KillProcess() 和它的 Process Manager 朋友似乎没有多大帮助,除非我自己构建一个流程树表示。我错过了什么吗?
我还有一些代码可以根据 PID 发送退出 Apple 事件。如果能够将其发送到由父进程定义的树中的每个进程,自下而上,那就更好了。但这只是锦上添花。第一个问题的答案得到“点”。
fonts - Carbon/Cocoa 字体看起来不同
我正在尝试使用 Carbon 应用程序中的 ATSU api 绘制当前选择的系统字体。并且字体比所有其他本地应用程序都更大胆。这是我正在谈论的屏幕截图示例:
(来源:memecode.com)
最上面一行是 XCode,中间是我使用非粗体字体的应用程序,底部是我使用粗体字体的应用程序。我使用了相同的文本,以便轻松查看它们之间的重量差异。我用来创建我绘制的样式的代码是:
其中“Face()”返回一个包含字体名称的 C 字符串,“PointSize()”返回一个包含我想要的点大小等的整数。我正在使用以下代码检索这些值:
它返回有效的外观/点大小信息,实际上字体看起来是正确的,只是它看起来比其他应用程序更粗。它可能看起来没什么大区别,但是当您的整个应用程序充满文本时,它就会变得很明显。我的旗舰产品是一个电子邮件客户端......因此有很多文字。
创建布局并最终调用 ATSUDrawText 的绘图代码很长,我不确定它是否会导致问题..我认为它与样式更相关......但如果需要,我稍后会发布指向该来源的链接.
任何人都可以帮助我的字体看起来不那么粗体吗?
cocoa - 为什么 Spotlight 有时不运行我的查询?
我正在使用 Spotlight API,包括 Carbon 和 Cocoa 版本,我似乎每隔一段时间就会出现同样的问题:查询永远不会运行,也永远不会触发任何通知。但是,我想强调的是,它在大多数情况下都会运行,所以发生了一些奇怪的事情。
我没有写任何特定的应用程序。这只是一个 Spotlight 测试工具,因此不会根据用户输入触发查询。相反,它是在applicationDidFinishLaunching:
我的控制器内部配置和执行的。最初我尝试在 中执行此操作awakeFromNib
,但在这种情况下,查询从未运行。(我的理论是 RunLoop 还没有开始,但我不确定。)
这是applicationDidFinishLaunching:
Carbon 的代码:
以上是我凭记忆写的,所以可能包含原文中没有的错别字。原始代码编译并运行得很好,除了偶尔根本不工作。
是什么赋予了?也许applicationDidFinishLaunching:
不是 Spotlight 查询的正确位置。
objective-c - 为什么 Xcode 会给我这些错误?
我得到的错误是 Xcode 说 3 件事未声明(见下图) alt text http://snapplr.com/snap/ks4h
但是在头文件中我已经声明了它们(见下图)
替代文字 http://snapplr.com/snap/htmb
为什么我在声明这些错误时会收到这些错误。
完整代码:
头文件。
实施文件
cocoa - 如何在 OS X 上使用 Cocoa 或 Carbon 截取单个窗口?
我需要能够识别用户屏幕上的单个窗口并对其进行屏幕截图。屏幕数据将存储在内存中,而不是写入磁盘。
这已经通过命令行工具 /usr/sbin/screencapture 或 Grab 实用程序得到支持(尽管它们的功能不够广泛,无法证明我将它们作为子进程启动是合理的)。
参考/提示
- nm /usr/sbin/screencapture 返回私有 Cocoa 接口,包括似乎执行此操作的 _CGSGetSharedWindow。
- 第三方应用程序 Snapzpro 执行此操作(但不提供源代码)