[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 内嵌式 无3方 彩色cmd界面 支持鼠标键盘

SYBN,近期研究斗地主脚本.最新版基于SYBC1.1.41,已经支持鼠标,代码在24楼.
因为需要好看滴界面,自己用汇编编写了彩色字符输出工具SYBC.COM

注意:发布了更好更详细的SYBC教程,大约3万字,还包括大量截图.
详细介绍了利用SYBC开发五子棋的过程,大家可以下载过去看看.

为啥是"无3方"呢?SYBC.COM不是3方工具吗?
因为SYBC被设计为内嵌于脚本中,你可以不在磁盘中生成SYBC.COM文件.
而是直接把他从脚本中释放到内存,并在内存中运行.
当然如果你愿意,它也可以像一般三方工具那样被使用.

好吧,大家首先是要截图下载地址,截图就在下边,是cmd脚本的实图哦!
至于下载地址,既然内嵌了,又何须下载?吧下面代码保存为cmd运行即可生成SYBC.com(此代码版本1.1.31 更新日期2010-4-3)
  1. SET SYBCOM=A100`80BE AC00 3C 375 83E9 3C00 ACFF 4275`2CBE AC00 E08A 86AC 50C4 BE1F 0 3CAC`7553 ACFB 593C F675 3CAC 7542 ACF1 433C`EC75 3CAC 7553 ACE7 3D3C E275 14EB 3CAC`743A 3C0F 740D 3C4D 7400 8349 1EE 48EB`54B4 E8AC 93 ADE8 3C00 7F18 8A37 E8F0`87 A1E8 3C00 7F4F 8A2B B0D0 F602 50E2`A0B0 E6F6 35F 57F8 3CAC 7424 E80A 6A`49E8 8A00 EBCA E817 3F CA8A 10EB B0`16CD C48A 4CB4 21CD 815F A0C7 5700 B850`B800 750 2B5A 8AEE ACD1 243C D974 3B3C`8C74 D3C DE74 3C DA74 233C 575 D783`EB01 AA01 C28A EBAA E8E0 1D 3C93 7E39`402 8009 39FB 37E C380 2409 800F FE3`10B2 E2F6 C302 D08A ACC3 203C FB74 D3C`A274 3C 9E74 D88A 3CAC 7420 3CEC 740D`3C93 7400 C38F 2C93 8030 30EB AB4 E4F6`C302 C3`
  2. SET V=`A80`DB 00``RCX`114`n SYBC.COM`w`Q
  3. (ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%V:`=&ECHO.%)|DEBUG>nul
复制代码

-------------------------------------------------------------------------------
好吧,现在大家手上应该有SYBC.com文件了吧,没有就生成一个.
接下来的问题是SYBC应该怎么用,SYBC分为基础高级2中语法,(2者仅在速度上有差别,最终效果一至)
可以以SYBC.com文件形式运行,也可以直接运行于内存.(后者略快)
-------------------------------------------------------------------------------
使用SYBC之前需要初始化(特别是win2000/XP),
初始化的方法很简单,首先如果你要使用中文,需要在你的代码开头加上"(CHCP 437 &GRAFTABL 936)>NUL"
然后你需要运行一次无参数的SYBC,用户按任意键后初始化完成.:[语法图第1例]
(由于没有提示,所以建议大家最好用echo告知用户要按任意键)
-------------------------------------------------------------------------------
基础语法:[语法图第2例]
SYBC 位置颜色内容
SYBC 10303$F1SYBN#s
位置 5位数字第23位为行数第45位为列数
颜色 用$引导的2个16进制数,同color命令
内容 任意字符串 (注意不要使用$#;三个符号以免冲突)
#号 无内容,保留此位置原内容仅改变颜色
$号 允许存在多个$号,分别控制之后的字符颜色
-------------------------------------------------------------------------------
利用基础语法可以实现SYBC的全部效果,
如果觉得速度不满意,可以使用高级语法,
把多行基础语法合并成一行高级语法从而减少调用次数以加速.
不论使用什么语法,没次调用SYBC的时间都约0.01秒,瓶颈在硬盘的响应速度.
另外使用内嵌式调用,跳过磁盘直接运行SYBC可以进一步提高速度,但会牺牲代码可读性.
-------------------------------------------------------------------------------
高级语法:
[语法图第3例]
SYBC 10303$F1SYBN;2010
效果同
SYBC 10303$F1SYBN
SYBC 10403$F12010
分号 是换行符可以再上一行的起点列从启一行继续
如果不使用换行符而写一个很长的字符串,则会像echo那样自然换行.

[语法图第4例]
SYBC 10303$F1SYBN;:10401$F12010
效果同
SYBC 10303$F1SYBN
SYBC 10401$F12010
分号冒号 效果类似于脚本中的&符,可以吧两个SYBC命令连接在一起使用.
这样你几乎就可以吧所有连续出现的sybc命令合并成一行,速度会快很多.
--------------------------------------------------------------------------------
不过大家要注意com程序的参数是有长度限制的.
理论长度为127,实际可用长度为124,超过124则无法执行了!
当然,如果你使用后面的内嵌式调用,则没有这个限制了!
--------------------------------------------------------------------------------
内嵌式调用:
使用DEBUG可以方便的调用com程序,之前生成SYBC.com用的就是DEBUG,
我们是要稍微修改就可以用于内嵌式调用了!
首先,把SYBC.com的代码以16进制的形式保存在变量SYBCOM中
  1. SET SYBCOM=A100`80BE AC00 3C 375 83E9 3C00 ACFF 4275`2CBE AC00 E08A 86AC 50C4 BE1F 0 3CAC`7553 ACFB 593C F675 3CAC 7542 ACF1 433C`EC75 3CAC 7553 ACE7 3D3C E275 14EB 3CAC`743A 3C0F 740D 3C4D 7400 8349 1EE 48EB`54B4 E8AC 93 ADE8 3C00 7F18 8A37 E8F0`87 A1E8 3C00 7F4F 8A2B B0D0 F602 50E2`A0B0 E6F6 35F 57F8 3CAC 7424 E80A 6A`49E8 8A00 EBCA E817 3F CA8A 10EB B0`16CD C48A 4CB4 21CD 815F A0C7 5700 B850`B800 750 2B5A 8AEE ACD1 243C D974 3B3C`8C74 D3C DE74 3C DA74 233C 575 D783`EB01 AA01 C28A EBAA E8E0 1D 3C93 7E39`402 8009 39FB 37E C380 2409 800F FE3`10B2 E2F6 C302 D08A ACC3 203C FB74 D3C`A274 3C 9E74 D88A 3CAC 7420 3CEC 740D`3C93 7400 C38F 2C93 8030 30EB AB4 E4F6`C302 C3`
复制代码
然后把DEBUG指令保存在变量V中
  1. SET V=;A80;DB 10 00 "10303$F1SYBN2010" 0D;;RCX;114;G;Q
复制代码
注意10是指参数长度的16进制值,在1.1.21版中它已经没用了,不用管它照着写或写别的16进制值都行.
"10303$F1SYBN2010"就是参数了,记得两边加上冒号,这里的参数长度限制大约为65个字节
最后在调用它们
  1. (ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%V:;=&ECHO.%)|DEBUG>NUL
复制代码
---------------------------------------------------------------------------------------------------------
当然你还是没有突破124参数限制,反而限制降低到了约65字节,
如何突破限制呢?修改变量V的值就可以了.
  1. SET V=;A80;DB 10 01;; A280;DB 10 00 "10303$F1SYBN";DB "2010-";DB "3-16" 0D;;RCX;F0;G;Q
复制代码
大家不需要管为啥要这样写,只需要知道你可以吧参数分段,每段少于65字节,写在引号里就好了,
你可以写无限多个DB "XXXXXXXX"注意最后一个要加上0D不要忘记0D前的空格就好.

如有问题联系QQ:354324773



3

评分人数

SYBN QQ:354324773

真的太强悍了,佩服

TOP

哇~
如果再美化~
不知情的人会以为是GUI的呢~

TOP

这个东西太强大了。。佩服楼主。

TOP

很强
  皮处理 彩色了

TOP

感谢仁兄的分享了...

我想问问楼主...
能不能一段批评处理代码,这个代码可以判断鼠标是处于动还是处于静的状态
可以吗?烦请把代码发到我的油箱里[email]LYRWANYSYS@126.COM[/email]

真诚感谢您了!!!!!!

TOP

学习下,可惜还要先按一次任意键!~

TOP

  1. @echo off&(CHCP 437&graftabl 936)>nul
  2. ::================ SYBC 版本1.1.31 ===========================
  3. SET SYBCOM=A100`80BE AC00 3C 375 83E9 3C00 ACFF 4275`2CBE AC00 E08A 86AC 50C4 BE1F 0 3CAC`7553 ACFB 593C F675 3CAC 7542 ACF1 433C`EC75 3CAC 7553 ACE7 3D3C E275 14EB 3CAC`743A 3C0F 740D 3C4D 7400 8349 1EE 48EB`54B4 E8AC 93 ADE8 3C00 7F18 8A37 E8F0`87 A1E8 3C00 7F4F 8A2B B0D0 F602 50E2`A0B0 E6F6 35F 57F8 3CAC 7424 E80A 6A`49E8 8A00 EBCA E817 3F CA8A 10EB B0`16CD C48A 4CB4 21CD 815F A0C7 5700 B850`B800 750 2B5A 8AEE ACD1 243C D974 3B3C`8C74 D3C DE74 3C DA74 233C 575 D783`EB01 AA01 C28A EBAA E8E0 1D 3C93 7E39`402 8009 39FB 37E C380 2409 800F FE3`10B2 E2F6 C302 D08A ACC3 203C FB74 D3C`A274 3C 9E74 D88A 3CAC 7420 3CEC 740D`3C93 7400 C38F 2C93 8030 30EB AB4 E4F6`C302 C3`
  4. ECHO 请按任意键完成初始化...
  5. SET V=`A80`DB 00``RCX`114`G`Q
  6. (ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%V:`=&ECHO.%)|DEBUG>nul
  7. ECHO 初始化结束
  8. ::方式①
  9. SET V=;A80;DB 10 00 "10303$F1SYBN2010" 0D;;RCX;114;G;Q
  10. ::注意10是指参数长度的16进制值,在1.1.21版中它已经没用了,不用管它照着写或写别的16进制值都行.
  11. ::"10303$F1SYBN2010"就是参数了,记得两边加上冒号,这里的参数长度限制大约为65个字节
  12. (ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%V:;=&ECHO.%)|DEBUG>NUL
  13. ::方式②
  14. SET V=;A80;DB 10 01;; A280;DB 10 00 "10303$F1SYBN";DB "2010-";DB "3-16" 0D;;RCX;F0;G;Q
  15. ::大家不需要管为啥要这样写,只需要知道你可以吧参数分段,每段少于65字节,写在引号里就好了,
  16. ::你可以写无限多个DB "XXXXXXXX"注意最后一个要加上0D不要忘记0D前的空格就好.
  17. (ECHO.%SYBCOM:`=&ECHO.DW %&ECHO.%V:;=&ECHO.%)|DEBUG>NUL
  18. ::============================================================
  19. pause
复制代码
首先感谢LZ的辛苦!
存在2点疑问:
SET V=`A80`DB 00``RCX`114`G`Q 初始化成功
SET V=`A80`DB FF``RCX`114`G`Q 初始化失败
方式①的调用成功
方式②失败

TOP

修正了楼上代码中SYBC.COM生成代码被注释问题,
SYBN QQ:354324773

TOP

发布已经支持鼠标的斗地主脚本,大家测试一下
鼠标支持使用参数M
例call :SYBC M   (不区分大小写)

[ 本帖最后由 sl543001 于 2010-4-26 22:35 编辑 ]
SYBN QQ:354324773

TOP

回复19楼:
旧版的代码使用分号,因为和SYBC的换行符冲突,所以统一改用`号
遇到此类不一致请替换SYBCOM,SYBV,和V 3个变量以及脚本所有中含有DEBUG行中的全部分号为`号

----------------------------------
建议使用楼上教程提供的模块化框架方案
鼠标支持测试中,框架方案暂不支持鼠标
SYBN QQ:354324773

TOP

回21楼,
#号和空格完全不同的.
大家可以先ECHO SYBN
然后用sybc 10000$F1##
你会发现SY两个字母变色了
#号表示不替换原内容只上色
只是屏幕上原来没有内容#看起来像空格
----------------------------------------------------
内嵌式调用
需要事先执行一次无参数的内嵌式调用如call :SYBC
----------------------------------------------------
SET V=;A80;DB 10 01;; A280;DB 10 00 "10303$F1SYBN";DB "2010-";DB "3-16" 0D;;RCX;F0;G;Q
这段代码要和匹配的SYBCOM一起使用,RCX;F0太小了,试试RCX;200

==================================
新版的教程中已经模块化了所有代码,并提供多种选择模板,建议大家看看新版的教程
还有SYBC 1.1.41开始支持鼠标了,测试中...
SYBN QQ:354324773

TOP

有些疑问:

1、
#号 无内容,保留此位置原内容仅改变颜色

这句话怎么理解?我试了下,跟空格是一个效果。

2、内嵌式调用也是要先执行一次 SYBC.com?

3、
  1. SET V=;A80;DB 10 01;; A280;DB 10 00 "10303$F1SYBN";DB "2010-";DB "3-16" 0D;;RCX;F0;G;Q
复制代码

这段代码怎么运行不了?

[ 本帖最后由 ___ 于 2010-4-22 00:25 编辑 ]

TOP

生成SYBC.com后调用没问题

如题,现在只能用生成代码然后再调用的方法了.可是想突破参数的限制那样实用性更大些.对于我等不懂汇编语言的菜菜们还是把说明写的详细点.代码差一点就不能运行.

TOP

内嵌式调用出现错误

按照楼主描述的方法做成内嵌式调用,运行后出现提示:
SYBC不是内部命令也不是外部命令,也不是可运行的程序和批处理文件.
说明调用sybc.com代码不成功.楼主的描述有几处不明白
1..第一楼的这行SET V=`A80`DB 00``RCX`114`n SYBC.COM`w`Q
中用的是符号`后引号,而在
"然后把DEBUG指令保存在变量V中"下边的方框中的代码SET V=;A80;DB 10 00 "10303$F1SYBN2010" 0D;;RCX;114;G;Q
中用的是分号
2; 楼主的代码中用的是分号,如下:
"然后把DEBUG指令保存在变量V中"下边的方框中的代码SET V=;A80;DB 10 00 "10303$F1SYBN2010" 0D;;RCX;114;G;Q
而在说明中却说记得在参数两边加上冒号.到底是用冒号还是双引号
   无论我把以上的代码改成冒号.后引号 等几种组合情况都不能成功,麻烦楼主给予解答.

TOP

返回列表