将 OSX Obj-C/CG 截图代码移植到 js-ctypes - 最后一行崩溃

Ported OSX Obj-C/CG Screenshot Code to js-ctypes - crash on final line

我移植了一些 objective-c/CoreGraphics 代码,可以截取多个显示器的屏幕截图,但它不起作用。 jsctypes 的人无法提供帮助,因为该部分只是我在回答问题 lol

objc/cg 代码来自这里:

我的 jsctypes type/struct/declares 在这里:https://github.com/Noitidart/NativeShot/blob/mac-troubleshooting/modules/ostypes_mac.jsm

jsctypes 端口在这里:https://github.com/Noitidart/NativeShot/blob/mac-troubleshooting/modules/workers/MainWorker.js#L443-656

最后一行是导致崩溃的第 643 行:

var rez_writeToFile = ostypes.API('objc_msgSend')(data, ostypes.HELPER.sel('writeTofile:atomically:'), myNSStrings.get(OS.Path.join(OS.Constants.Path.desktopDir, 'full_ss.png')), ostypes.CONST.YES);

这与

的目标不谋而合
[data writeToFile:@"/tmp/screenshot.png" atomically:YES];

除非我将路径更改为 ...desktop/...png

我写信给 sepearte gists,以对齐文本差异软件中的行以确保我做了所有事情。

我不认为我错过了任何我不知道为什么它在最后一行崩溃的东西

是否有人 ObjC/CG 看到任何错误的类型定义或我遗漏的内容(例如 ObjC 代码使用复合语句我不确定我 understood/translated 它们是否正确港口)。

哇哦,所以在努力了几个小时之后发布这个我马上就意识到了哈哈

选择器中的大小写错误!!我有 writeTofile:atomically 而不是 writeToFile:atomically!

如果有人想对此进行测试,这是一个简单的 firefox 插件测试用例。

  1. 安装插件,允许从此处的 github 存储库安装插件:https://addons.mozilla.org/en-US/firefox/addon/github-extension-installer/
  2. 转到在此处工作的分支上提交:https://github.com/Noitidart/NativeShot/tree/f5f2e8606d3c5c657e901239d3ceb8c8c79a4494
  3. 然后点击右下角 "Download Zip" 按钮下方的 "Add to Firefox" 按钮
  4. 单击添加到 firefox 的工具栏按钮图标,如以下屏幕截图所示:http://i.imgur.com/n7lSxje.png
  5. 检查桌面,您现在有一个 png 文件,其中包含所有显示器的屏幕截图,@KenThomas 的巨大支持!