首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将OSX Obj-C/CG屏幕截图代码移植到js-ctypes在最后一行崩溃

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

Stack Overflow用户
提问于 2015-05-11 16:42:44
回答 1查看 50关注 0票数 1

我移植了一些objective/CoreGraphics代码,它需要多个监视器的屏幕截图,但它不起作用。jsctypes的人帮不上忙,因为这部分只是我在回答问题

objc/cg代码来自这里:https://stackoverflow.com/a/28247749/1828637

我的jsctype/struct/声明在这里:mac.jsm

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

最后一行是造成崩溃的第643行:

代码语言:javascript
复制
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);

这与

代码语言:javascript
复制
[data writeToFile:@"/tmp/screenshot.png" atomically:YES];

但我更改了桌面/.png的路径

我写信给专家,用文本差分软件对齐线条,以确保我做了所有的事情。

我想我没有错过任何东西,我不知道它为什么会在最后一条线上崩溃

是否有任何ObjC/CG人看到错误的类型定义或我遗漏的东西(例如,ObjC代码使用复合状态,我不确定我在端口中是否正确地理解/翻译了它们)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-11 17:00:46

哇,所以在挣扎了几个小时之后,我立刻意识到这一点。

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

如果有人想测试这一点,这是一个简单的firefox addon测试用例。

  1. 安装一个允许从此处安装github repos的加载项:https://addons.mozilla.org/en-US/firefox/addon/github-extension-installer/
  2. 在这里工作的分支上提交:https://github.com/Noitidart/NativeShot/tree/f5f2e8606d3c5c657e901239d3ceb8c8c79a4494
  3. 然后点击右下角的“”按钮,点击“下载Zip”按钮。
  4. 单击添加到firefox的工具栏按钮图标,如以下屏幕截图所示:http://i.imgur.com/n7lSxje.png
  5. 检查桌面您现在有一个png文件与所有显示器的屏幕截图,巨大的道具@KenThomas!
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30173185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档