控制台黑科技(第三季 、让API钻进CMD里)
bat吧
全部回复
仅看楼主
level 1
happy886rr 楼主
很多同学,都喜欢用CMD去调用一些API函数去做点超群的事,但是类似的工具DLLCALL、CAPI等等要注入啊,很繁琐,效率也不高。为啥不能让windows系统的API函数钻进cmd里边。经过1天努力,cmd内嵌api版出来了,我把它叫做ICMD,一款支持API调用的CMD解释器。
下载:小人图
存a.zip,解压即是。
对,你没看错,就是这么小,还带内置choice,还带内置capi。
表示很不服set的开关,又给增加了一个set /i 开关用于科学计算,增加set /f 开关用于API函数调用。
对了,我们没必要老师每次呼叫DLL。这个set /f 一次link所有要用的dll,之后只用直接呼叫函数名就行。对capi的语法真是大改啊。用od把capi调试了一遍,感觉写成这样更好。
不喜欢什么数据类型,所有数字都不需要加;也就是那些数据标识符.:@~$#$说实话我记不清,彻底消失了。宽字符用L"字符串",而ansi是用A"字符串"表示。其他数据类型裸写就行。
======================================================
=======================================================
表示隐藏功能太多,自己也没细细测试。我个人感觉,有这个icmd基本上不需要任何第三方了。
2017年03月08日 03点03分 1
level 14
[惊哭]这么强大居然没人顶吗,表示从第一季一口气看到第五季
2017年03月28日 15点03分 2
这是个解释器,就是支持C API的cmd解释器,我还在完善中,一行会像linux命令行一样好用,以后会支持函数。
2017年03月29日 08点03分
level 9
有点高端,不会用
2017年03月30日 07点03分 3
level 11
好屌
2017年05月28日 23点05分 4
level 13
都是控制台,C语言Windows.h也行吧[滑稽]
2017年06月15日 15点06分 5
level 14
capix是开源的...为什么要去od capi......
.:;在API调用的时候确实意义不大,capix已经简化成了;
但是它们在Mem操作中是必须的,结构体这样的构造类型,只能用Mem来实现.输出结构体各成员有时候也需要这些类型.而考虑到简化代码和结构体的对齐,@也是必须的.
(说白了 都是为了结构体......)
总而言之我认为保留它们是有必要的,否则能调用的API会受限.
2017年06月16日 00点06分 6
ICMD定位不同,仅是增强型CMD,提供一种最简的CAPI调用语法规则。Mem结构体加些代码应该可以实现,开发时间短,当时忘了。而且已经有tincs这样100%支持纯C的混编解释器,因此ICMD只做了点到为止,还有SCMD等超越型脚本解释器,已经不只是调用C,可以在控制台上直接解释并绘制HTML和js特效。
2017年06月16日 02点06分
@happy886rr 你们这些人越来越丧心病狂了...
2017年06月16日 14点06分
@aiwozhonghuaba 停停停,你怎么钻过来的
2017年06月17日 00点06分
@aiwozhonghuaba 你高考如何啊?
2017年06月17日 00点06分
level 13
想到了using System;
--来自2006bt专属贴吧UWP
2017年06月16日 03点06分 7
level 5
我实测了一下发现貌似不能播放声音,mciSendString、sndPlaySound都不行
set /f =LinkDllW L"winmm"
set /f =sndPlaySoundW L"$snd.wav" 1
snd.wav与bat在同一目录下,请问我这个语法有错误吗?
2017年06月17日 10点06分 8
这个函数你都不会用吗? @echo off set/f =LinkDllW L"WINMM" set/f =sndPlaySoundW L"snd.wav" 1 pause 记住是非阻塞的,你得加个pause维持生命周期。这都基础啊,随便百度下就有。
2017年06月17日 12点06分
@happy886rr 谢谢,我在之前没用过api。还有这个函数支持MP3格式吗?
2017年06月18日 02点06分
@12d1a2235w652d 不太清楚,你测测看,可能支持好多格式。
2017年06月19日 03点06分
level 2
我想弱弱的问一句!!!
set/f=LinkDllW L"USER32" L"KERNEL32"
set/f=MessageBoxW 0 L"你好" L"message" 1
echo %errorlevel%
这返回值 都是0 怎么判断 确认还是取消?
2020年02月25日 13点02分 9
set/f 返回值=MessageBoxW 0 L"你好" L"message" 1 echo;%返回值% pause
2020年02月25日 13点02分
@happy886rr 3Q 懂了!!!
2020年02月26日 06点02分
1