移植OSX Obj-C / CG屏幕截图代码到js-ctypes - 在最后一行

时间:2015-05-11 16:42:44

标签: objective-c firefox-addon core-graphics core-foundation jsctypes

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

objc / cg代码来自此处:https://stackoverflow.com/a/28247749/1828637

我的jsctypes类型/ 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代码使用复合语句,我不确定我是否理解/在端口中正确翻译它们)。

1 个答案:

答案 0 :(得分:0)

哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇

选择中的套管拼写!!我有writeTofile:atomically而不是writeToFile:atomically

如果有人想测试一下,那就是一个简单的firefox插件测试用例。

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