Board logo

标题: [工具合集] 批处理显示简单动画工具GDI.EXE [打印本页]

作者: caruko    时间: 2011-5-25 17:17     标题: 批处理显示简单动画工具GDI.EXE

更新了之前的PICSHOW,这个更强大。

GDI.EXE
大小:360K
CodeBy:AUTOIT
功能:在批处理窗口(或别的窗口)显示图片、彩色文字,支持延时显示多个图片文字以达到动画的效果。

帮助 /?:
  1. GDI "Options" [Args1] [Args2]...
  2. Options 选项   只有一个选项时可以省略""号。
  3.         /T:title 设置窗口标题,标题字符串足够区别其它窗口就可以,
  4.                  如:/T:cmd 。
  5.         /P       显示该工具炫彩效果,可当作是彩蛋。^_^
  6.                  作者:caruko@qq.com
  7.         /C       清除窗口中的内容。如果后面带有参数则先清屏再显示
  8.                  参数对象。
  9.         /S:sleep 设置延迟的毫秒数,当GDI工具拥有多个显示对象时,每
  10.                  显示完成一个对象即延迟一次。
  11.         /?       显示GDI工具帮助
  12. Args 详细格式:
  13.         PIC      显示图片的格式为“ filename*xpos*ypos ” ,filename 为
  14.                  图片[路径]文件名,xpos、ypos为窗口相对坐标[像素]位置。
  15.         TEXT     显示文字格式“string*xpos*ypos*字体*字体大小*32位颜色RGB值”,
  16.                  当string含有空格时,应将该参数用""包裹;"字体"为字体名,
  17.                  如宋体;"字体大小"为数字,如12;32位颜色RGB值包括了透明值,
  18.                  如"FF03F0FF"
  19. 特殊说明:GDI工具根据参数先后顺序显示对象,如果有重叠,后显示
  20.                         的将会覆盖先前显示对象的重叠部分。
  21. 例子:
  22. GDI "/t:cmd /p" 显示炫彩效果,如果带有参数,参数设置的对象不会显示。
  23. GDI "/t:cmd /c" 清除屏幕上显示的内容。
  24. GDI "/t:cmd /s:500" 1.jpg*100*100 "hello world*200*200*宋体*18*FF03F0FF"
  25. 先在100x100位置显示1.jpg,隔500毫秒再在200x200位置显示一紫色字符串"hello world"
复制代码
  1. gdi "/t:cmd /p"
  2. 效果如附件图
复制代码
GDI.7z
http://pan.baidu.com/share/link?shareid=71386952&uk=1124163200
作者: caruko    时间: 2011-5-25 21:56

做了一个网盘外链,节省空间起见,删除了附件。
不知道后台中文件清除了没有,没有的话,管理员可以删一下。
作者: Hello123World    时间: 2011-5-26 15:43

还是别节省空间了吧,那个外链还要注册账号。
作者: caruko    时间: 2011-5-26 16:59

3# Hello123World


地址写错了。。
http://www.diskes.com/index.jsp
但是我这里不用账号啊,即使不登陆,也可以直接HTTP下载。
作者: sxw    时间: 2011-5-26 23:24

可以下载,用浏览器下,迅雷好像不行啊
作者: cjiabing    时间: 2011-5-27 00:11

太变态了!~过目难忘!~
caruko 写了那么多对cmd有用的工具,我们不应该忽视!~
我们到处找第三方,用以拓展批处理的性能,拓展我们在批处理上的自由空间,caruko 正为我们开拓这条路!~
谢谢!~
不过你提供下载的网址如果不注意的话还以为要注册才能下载呢!~
作者: cjiabing    时间: 2011-5-27 00:41

  1. @echo off
  2. set gdi=GDI.exe
  3. %gdi%  "/t:cmd" "%ALLUSERSPROFILE%\Documents\My Pictures\示例图片\Sunset.jpg"*1*1 "晚霞,映红了天边的天空*190*100*宋体*18*FFBB00EE"
  4. pause>nul
复制代码
大哥,你那个设置字体颜色的到底是什么代码啊?搞不懂,要八位数呢,说明一下喂@!~
RGB颜色查询对照表:
http://www.114la.com/other/rgb.htm
作者: caruko    时间: 2011-5-27 01:21

本帖最后由 caruko 于 2011-5-27 01:23 编辑

7# cjiabing

这是32位RGB颜色代码,8个16进制数表示,分别为BGRA。
也就是说,前6位跟RGB 24一样,后面2位代表透明值,00---FF 数值越高,透明度越低。
如果你用不到这些,一律在6位RGB后面增加 FF 就行。
作者: caruko    时间: 2011-5-27 01:27

有了这个工具,用批处理写棋类游戏,画棋盘,棋子;
写扑克牌,麻将类,简单RPG游戏也都没问题了。
作者: cjiabing    时间: 2011-5-27 01:33

9# caruko
正是看到它的发展前景!~
但它的致命伤也是很明显的,一旦批处理窗口退到后台,或者其它窗口覆盖过cmd窗口,比如QQ消息框,所有显示的图片都不见了。
假如有空你看看w3m这个命令浏览器吧,它使用一个插件可以显示图片的,不过我没找到该插件。
作者: caruko    时间: 2011-5-27 01:50

本帖最后由 caruko 于 2011-5-27 01:54 编辑

因为是命令行工具,显示完成后程序就退出,不再驻留内存,所以没有设置让窗口重画...
除非更改CMD窗口属性,但是我没试过。

另外,现在是用循环的方法显示图片,也就是每显示一张图片,就调用了一次API,所以显示多张图略有延迟。
而显示字体时,则调用了好多次API,所以显示字体较慢。

有时间,我将这个再增强一点,使用内存缓存,让所有图片先在内存中组合出最终效果,再一次显示。

另外,关于 /t 开关,很多时候可以省略也没有问题,但不保证不会出错。
作者: CrLf    时间: 2011-5-27 15:11

这个必须要支持
作者: Hello123World    时间: 2011-5-27 15:40

网站右上角输入直接提取下载,无需注册,无需下载工具。——这句话被我无视了,sorry。
作者: caruko    时间: 2011-5-27 15:59

突然有一种更好的实现想法。

1,写一个DLL,将这些代码写进去,然后使用远程线程注入的方法,将这个DLL注入到CMD.EXE中。 (不知道可行不,CMD比较特殊)
2,该DLL线程循环读取一个特定的环境变量名,从该变量中读取控制命令及参数,然后实现DLL中的画图等功能。 (DLL身处CMD进程之中,变量应该是共享的。)
3,DLL 可以设置截取CMD窗口重画消息,就可以保持画面被覆盖也不会消失了。
4,使用的时候先用注入工具注入DLL,然后直接set某个特定变量就能操作,效率更高。

不过要实现还是有不少的代码量啊..
作者: w156445045    时间: 2011-6-7 18:16

这个网站打了半天没打开呢~
作者: firefly    时间: 2011-6-8 20:55

1# caruko


输入提取码后,新打开的页面空白,刷新后也没有下载,不知道是怎么回事。
最好把文件上传到115/DBank/快盘,分享方便啊
作者: tmplinshi    时间: 2011-7-1 19:28

不能下载了,楼主再传一下,谢谢。
作者: yuanxiaochen    时间: 2011-7-2 16:38

同意楼上,还是别省空间了~~
作者: caruko    时间: 2011-7-7 16:55

=.= 晕,最近忙着没怎么来逛。
我重新上传一下。
作者: cy97cool    时间: 2011-7-28 20:34

下载地址呢?!
作者: strong12345    时间: 2011-7-31 11:40

CODE BY AUTOIT........
这让我吃惊了
作者: strong12345    时间: 2011-8-1 17:48

我想把他放到 system32\ 底下
但已经有 gdi.exe  文件了 =.=
作者: 心宇    时间: 2011-8-6 13:37

神马东西 AU3编译好 还不开放源码
作者: defanive    时间: 2012-5-23 15:13

回复 14# caruko
类似的想法很早以前就有过了,但是有以下几点困难没办法克服
1、注入报毒,暂时没找到办法可以不报毒的
2、控制台窗口不是属于cmd进程的,控制台窗口是又另外一个系统进程(忘了是哪个了)直接管理,截取重画消息什么的是不可能的,除非注入到那个系统进程。这也是基本上大部分窗口属性操作API对控制台窗口都无效的原因,因为那个窗口根本就不属于cmd进程,当然操作不了
PS如果能搞定的话,不需要循环读取变脸,API HOOK setenvironmetvariable即可




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2