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