CAPI
By Defanive
1.0(VC++) 5.51KB
批处理调用API
比APICall功能要强很多,APICall可以退役了
CAPI的特性在于可以直接访问、操作批处理中的变量
提供3个基本方法:Put、Get、Call
参数的标识方式:
[标识][数据]
总共有如下的标识及其意义:- . 字节
- ; 短整型
- # 长整型
- $ 字符串
- * 变量
- ~ 已加密的变量
- @ 移动指针
复制代码 Put:
用于批处理变量中写入数据,基本语法为- CAPI Put [~][变量名] [标识][数据] [标识][数据]...
复制代码 其中变量名可加~标识,表示这是个被加密的变量
Put方法只能覆盖已有的数据,而不能增加
因此在写入前需保证有足够的空间
可用的标识为 . ; # $ * ~ @
下面的例子具体解释Put方法的用法- rem 将var变量的第一个字节覆盖为65
- CAPI Put var .65
- rem 将var变量的前两个字节覆盖为25105
- CAPI Put var ;25105
- rem 将var变量的前四个字节覆盖为4325441
- CAPI Put var #4325441
- rem 将var变量的值覆盖为ab
- CAPI Put var $ab
- rem 将var变量的值覆盖为var2变量的值
- CAPI Put var *var2
- rem 将var变量的值覆盖为被加密变量var2的原值
- CAPI Put var ~var2
- rem 可以同时执行多个参数,如将var变量的前两个字节覆盖为25105,再将第3个字节覆盖为65
- CAPI Put var ;25105 .65
- rem 将var变量的第一个字节覆盖为65,指针后移1位,将第3个字节覆盖为66
- CAPI Put var .65 @1 .66
复制代码 Put方法可以让批处理直接以字节等格式操作变量内容
可以直接产生特殊字符
Get:
将变量中的数据以一定格式输出,基本格式为- CAPI Get [~][变量名] [标识][长度] [标识][长度]...
复制代码 如下例- rem 将var变量中的前两个字节输出
- CAPI Get var .2
复制代码 类似用法参见Put方法
可用的标识为 . ; # $ @
Call:
调用API,基本格式为- CAPI Call [Dll名] [API名] [标识][数据] [标识][数据]...
复制代码 errorlevel为API的执行返回值
可用的标识为 # $ * ~
注意,CAPI是以Unicode方式调用和储存值的(为了兼容cmd中的变量储存方式)
因此API应选用Unicode版
使用~进行加密变量内容是为了防止API执行结果中含有\0(这样会中断变量内存块,使得CMD出错)
2L展示几个简单的API应用
http://bcn.bathome.net/s/tool/index.html?key=CAPI |