决定弃用System.dll了
来源:互联网 发布:mac无法格式 化u盘日志 编辑:程序博客网 时间:2024/05/01 02:48
NSIS不用插件就可以调用API,很早前就有这样的想法,因为System插件实在太常用了(NSIS要实现强大一点的程序,没有它是很不方便的),而用插件的方式总感觉不爽,所以决定将System插件的功能整合到NSIS中。
之前作了尝试,证实可行,最近有时间就整理一下,重新定了个方案:
1. System::Call 做成内置命令 SysCall
SysCall 的用法和System::Call 一样,只是第一个参数不是通过NSIS堆栈传递的,多了的参数和插件一样:先按从右往左的顺序压入NSIS堆栈。
之前作了尝试,证实可行,最近有时间就整理一下,重新定了个方案:
1. System::Call 做成内置命令 SysCall
SysCall 的用法和System::Call 一样,只是第一个参数不是通过NSIS堆栈传递的,多了的参数和插件一样:先按从右往左的顺序压入NSIS堆栈。
2. System::Get 做成内置命令 SysGet
SysGet 只接受两个参数,用法:
SysGet 用户变量(输出) "PROC [( PARAMS ) [RETURN [? OPTIONS]]]"
例如,System插件文档中的回调例子改为:
SysGet $0 "(i .r0, i .r1) isR0"
SysCall "dll::UseCallback(k r0)"
3. System::Copy 做成内置命令 MemCpy
MemCpy 最多接受三个参数,用法和System::Copy 一样,只是参数都不用通过NSIS堆栈传递
4. System::Store 做成内置命令 Store
原System::Store 参数用s 或l 是不区分大小写的,我作了一下修改:
■要压入 $0-$9 到私有堆栈,使用 s
■要压入 $R0-$R9 到私有堆栈,使用 S
■要从私有堆栈弹出 $0-$9 使用 l
■要从私有堆栈弹出 $R0-$R9 使用 L
因为20个变量很多时候都不会全部用到,这样可以在一定程度上减小临时的内存开销
其它用法和System::Store 一样,只是第一个参数不是通过NSIS堆栈传递的,多了的参数和插件一样:先按从右往左的顺序压入NSIS堆栈。
5. IntOp、IntCmp、IntCmpU 直接支持64位整数
6. System::Alloc和System::Free有没有都没什么所谓了,反正可以用SysCall代替
- 决定弃用System.dll了
- AFNetworking3.0为何弃用了NSURLConnection
- 【OnMyWay】我为啥弃用了Ubuntu
- 弃用gets(),改用fgets()就能解决问题了?!
- 已经弃用的TabActivity深深的伤害了我
- 决定了
- 决定了!
- 弃用了struts,用spring mvc框架做了几个项目
- 最新react弃用了jsxtransformer了那jsx还能用
- 弃Maxthon用Firefox
- redhat弃用Xen
- .live()已经弃用!
- 果断弃用Eclipse
- iOS 弃用函数
- 此ID弃用
- HTablePool为何弃用?
- 弃用 Blog
- cross_validation 模块弃用
- 程序员工作经验---->第一次上班工作的朋友必看!
- Android移植之系统配置新产品篇
- hibernate查询记录条数返回类型
- 算法导论6-2d叉堆分析
- PHP获取系统当前时间
- 决定弃用System.dll了
- Sql时间函数和系统函数
- IE中的开发人员工具的不显示的处理方法!
- c#正则表达式,搜集整理
- PHP常用函数
- 如何成为一个C++高级程序员
- http://icyfenix.iteye.com/blog/1119214
- 正则表达式限制输入框只能输入数字
- Android异步加载图像小结