http://bcn.bathome.net/s/tool/index.html?key=APICall
自从BatProject开始编写后,越来越忙,临近中考,时间也没了。。。
本已不打算再干第三方这行,但是还是做了这个东西,希望能给批处理带来些变化。。。
这只是一个测试版本,因此还有很多缺陷。。。
从一定意义上来讲,批处理是不可能完美调用API的,因此我只求能做得比别人更好。。。
APICall能做到的是,可以一定限度上使用结构体。。。
调用方式:
APICall Dll路径 API名称 参数1,参数2,参数3……
注意,这是以,为分隔(因为缺陷,无论是否在引号中都会被分割,例如"hello,123")
参数可以是:
Long型数字:传值,例如123
String型文字:传址,但是由于缺陷,必须按照这个格式:"字串符""
由Long型组成的结构体:传址,例如{0;0},注意,这是以;号为分割
返回值:
可以指定返回值(只能在结构体中指定,因为只有结构体是传址):{_0;0}
给结构体中的指定参数加_代表执行完之后将这个值返回
最多可以指定2个返回值,如{_0;_0}
如果不指定,则返回API的返回值
例如指定了{_0;_0},如果执行完之后值是{123;456},那么返回值%errorlevel%将是
100000000+10000*值2+值1,上例的返回值将是104560123
如果只指定一个,那么直接返回值
示例代码一:禁用CMD的关闭按钮- @echo off
- APICall kernel32.dll GetConsoleWindow
- set hCMD=%errorlevel%
- APICall user32.dll GetSystemMenu %hCMD%,0
- set hMenu=%errorlevel%
- APICall user32.dll EnableMenuItem %hMenu%,61536,1
- echo 禁用关闭按钮
- pause
复制代码 示例代码二:设置文字颜色- @echo off
- APICall kernel32.dll GetStdHandle -11
- set hOut=%errorlevel%
- APICall kernel32.dll SetConsoleTextAttribute %hOut%,32791
- echo hello
- pause
复制代码 示例代码三:设置光标位置到(20,10)- @echo off
- APICall kernel32.dll GetStdHandle -11
- set hOut=%errorlevel%
- set /a Pos=20*65536+10
- APICall kernel32.dll SetConsoleCursorPosition %hOut%,%Pos%
- echo 设置光标到20,10
- pause
复制代码 批注:
由API声明可以知道SetConsoleCursorPosition第二个参数应为COORD类型,由2字节X坐标及2字节Y坐标构成,总大小4字节
虽然APICall只支持4字节的参数,整个COORD正好是4字节,因此将2个2字节数据转换成1个4字节数据即可,也就是X*65536+Y
示例代码四:测试CMD所有字体大小- @echo off
- APICall kernel32.dll GetStdHandle -11
- set hOut=%errorlevel%APICall kernel32.dll GetNumberOfConsoleFonts
- set Total=%errorlevel%
- for /l %%a in (1,1,%Total%) do (
- echo %%a号字体大小
- APICall kernel32.dll SetConsoleFont %hOut%,%%a
- pause
复制代码 示例代码五:闪烁CMD窗口- @echo off
- APICall kernel32.dll GetConsoleWindow
- set hCMD=%errorlevel%
- APICall user32.dll FlashWindow %hCMD%,1
- pause
复制代码 示例代码六:获得鼠标位置- @echo off
- APICall user32.dll GetCursorPos {_0;_0}
- set PT=%errorlevel%
- set /a Y=%PT:~0,-4%-10000
- set /a X=PT-10000*Y-100000000
- echo 鼠标的位置为:X:%X%,Y:%Y%
- pause
复制代码 上例演示了处理两个返回值的方法
可以看到,API给批处理注入了强大的生命力,尽管现在APICall并不完善。。。
希望下载的同学能多多捧场,谢。。。 |