我移植了一些Objective-C/CoreGraphics代码,该代码屏幕截图进行了多个监视器,但它不起作用。JSCTYPES的家伙将无法提供帮助,因为本节只是我回答问题
OBJC/CG代码来自此处:https://stackoverflow.com/a/28247749/1828637
我的JSCTYPES类型/struct/声明在这里:https://github.com/noitidart/nativehot/nativehot/blob/mac-troubleshooting/modules/ostypes_mac.jsm
JSCTYPES端口在这里:https://github.com/noitidart/nativehot/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);
这与
的objectivec一致[data writeToFile:@"/tmp/screenshot.png" atomically:YES];
除了我更改了...桌面/... png
的路径我写信给Sepepearte Gist,以对齐文本diff软件中的行以确保我做了所有事情。
- 这是objc/cg:https://gist.github.com/noitidart/8affcd8bee60d2222222222222dcb52
- 这是jsctypes:https://gist.github.com/noitidart/3d4a4e8df625dbea8cc1
我不认为我错过了任何我不知道为什么它在最后一行崩溃
执行任何OBJC/CG的人都会看到任何类型的定义是错误的或我错过的任何类型定义(例如,OBJC代码使用复合措施,我不确定我不确定我在端口中正确理解/翻译它们)。
wowww,所以在挣扎了几个小时后,我就会意识到它立即意识到哈哈
选择器中的套管错字!我有writeTofile:atomically
,而不是writeToFile:atomically
!
如果有人想对此进行测试,这是一个简单的Firefox插件测试用例。
- 安装一个允许从此处安装github存储库中安装插件的插件
- 转到此处工作的分支:https://github.com/noitidart/nativeshot/tree/f5f2e8606d3c5c5c5c5c5c657e901239d39d3ceb8c8c8c8c8c8c8c79a4494 li>然后单击右下方的"添加到firefox"按钮,"下载zip"按钮
- 单击该屏幕截图中可以看到的工具栏按钮图标:https://i.stack.imgur.com/gokhc.png
- Check Desktop您现在有一个带有所有监视器的屏幕截图的单个PNG文件,@kenthomas的巨大道具!