发新话题
打印

DISKEMU创作实例!

DISKEMU创作实例!

[这个贴子最后由je64在 2004/11/30 11:11am 第 4 次编辑]

DISKEMU是一款功能非常强大的启动光盘制作工具,其关键在于DISKEMU.CMD的编写。
附件中提供了DISKEMU.CMD的命令行参数!
下面以一个例子来说明DISKEMU.CMD的格式及命令参数!

;DISKEMU.CMD

:nologo
[glow=255,blue,2];设置背景模式[/glow]
transparent on
[glow=255,blue,2];只画前景色[/glow]
backgroundimage pixel VLK.bmp
setresolution 640 480 32
[glow=255,blue,2];设置背景为VLK.BMP,其格式为640*480,32位[/glow]
setdac   0 0x00 0x00 0x00
[glow=255,blue,2];黑色[/glow]
setdac   1 0x00 0x7f 0x7f
[glow=255,blue,2];青色[/glow]
setdac 100 0xff 0x1f 0x1f
[glow=255,blue,2];红色[/glow]
setdac 101 0x00 0xff 0x00
[glow=255,blue,2];绿色[/glow]
setdac 102 0x00 0x00 0xff
[glow=255,blue,2];蓝色[/glow]
setdac 103 0x5f 0x5f 0x5f
[glow=255,blue,2];灰色[/glow]
setdac 255 0xff 0xff 0xff
[glow=255,blue,2];白色[/glow]
[glow=255,blue,2];设置调色板[/glow]
timerpos 13 25
[glow=255,blue,2];以(13,25)为坐标显示倒计数定时器[/glow]
timercolor 102 @auto
[glow=255,blue,2];倒计数定时器使用102号色,背景为自动[/glow]
processparam pixel 101 103 0 475 640 480
[glow=255,blue,2];进度条显示参数为:前景色101,背景色103,左上角坐标(0,475),右下角坐标(640,480)[/glow]
call drawhelptext
[glow=255,blue,2];调用函数drawhelptext[/glow]
goto item4
[glow=255,blue,2];跳转到item4[/glow]

:drawhelptext
cls 0
[glow=255,blue,2];清屏[/glow]
repaint
[glow=255,blue,2];绘制背景[/glow]
drawtext 12 2  0 "  [ VLK版 ]
[glow=255,blue,2];在(12,2)位置以0号色为前景色,显示"[ VLK版 ]"[/glow]
drawtext pixel 30 110 50   "请选择你要进行的操作:
[glow=255,blue,2];在(30,110)位置以50号色为前景色,显示 "请选择你要进行的操作:"
;drawtext pixel与drawtext两个命令的坐标是不一致的![/glow]
drawtext pixel 30 399 120   "倒记时:
return
[glow=255,blue,2];从子函数返回[/glow]


:menu
transparent on
drawtext pixel 70 160 0      " 1   DOS 工具
drawtext pixel 70 200 0      " 2   安装上海市政府版
drawtext pixel 70 240 0      " R   重新引导系统
drawtext pixel 70 280 0      "ESC  从硬盘启动
drawtext pixel 70 320 0      "F 1  说  明
return


:mainkey
[glow=255,blue,2];检测到的按键不是所需的,继续等待[/glow]
onkey 1   call dos
[glow=255,blue,2];如果内部保存的按键是1,将执行dos这条命令。[/glow]
onkey 2   call vlk
[glow=255,blue,2];如果内部保存的按键是2,将执行vlk这条命令。[/glow]
onkey r   reboot
[glow=255,blue,2];如果内部保存的按键是r,将重新启动。[/glow]
onkey esc boot 80
[glow=255,blue,2];如果内部保存的按键是esc,将执行从硬盘启动。[/glow]
onkey f1  call help
[glow=255,blue,2];如果内部保存的按键是f1,将执行help这条命令。[/glow]
return
[glow=255,blue,2];从子函数返回[/glow]
;


:item1
transparent on
drawtext pixel 70 160 102    " 1   DOS 工具
drawtext pixel 70 200 0      " 2   安装上海市政府版
drawtext pixel 70 240 0      " R   重新引导系统
drawtext pixel 70 280 0      "ESC  从硬盘启动
drawtext pixel 70 320 0      "F 1  说  明
getkey showtime showprocess 30 entr
onkey entr setkey 1
onkey num_entr setkey 1
onkey up  goto item5
onkey down goto item2
call mainkey
goto item1
;


:item2
transparent on
drawtext pixel 70 160 0      " 1   DOS 工具
drawtext pixel 70 200 102    " 2   安装上海市政府版
drawtext pixel 70 240 0      " R   重新引导系统
drawtext pixel 70 280 0      "ESC  从硬盘启动
drawtext pixel 70 320 0      "F 1  说  明
getkey showtime showprocess 30 entr
onkey entr setkey 2
onkey num_entr setkey 2
onkey up   goto item1
onkey down goto item3
call mainkey
goto item2
;


:item3
call menu
transparent on
drawtext pixel 70 240 102    " R   重新引导系统
getkey showtime showprocess 30 entr
onkey entr setkey r
onkey num_entr setkey r
onkey up   goto item2
onkey down goto item4
call mainkey
goto item3
;


:item4
call menu
[glow=255,blue,2];调用函数menu[/glow]
transparent on
[glow=255,blue,2];画前景色[/glow]
drawtext pixel 70 280 102    "ESC  从硬盘启动
[glow=255,blue,2];在(70,280)位置以102号色为前景色,显示"ESC  从硬盘启动",
;它会覆盖:menu中的"ESC  从硬盘启动"的着色[/glow]
getkey showtime showprocess 30 entr
[glow=255,blue,2];等待按键,如果30秒没有按键,使用缺省按键entr作为输入。
;在选择了菜单之后仍会有倒计时,等待操作
;它与getkey 30 entr功能相似,但它会出现倒计时和进度条,而getkey 30 entr
;则不会出现[/glow]
onkey entr setkey esc
[glow=255,blue,2];如果按键为Enter,把会执行按键esc键[/glow]
onkey num_entr setkey esc
[glow=255,blue,2];如果按键为Enter(小键盘),把会执行按键esc键[/glow]
onkey up   goto item3
[glow=255,blue,2];如果按键为up(向上的箭头),把会执行item3[/glow]
onkey down goto item5
[glow=255,blue,2];如果按键为down(向下的箭头),把会执行item2[/glow]
call mainkey
[glow=255,blue,2];调用函数mainkey[/glow]
goto item4
[glow=255,blue,2];检测到的按键不是所需的,继续等待[/glow]
;


:item5
call menu
transparent on
drawtext pixel 70 320 102    "F 1  说  明
getkey showtime showprocess 30 entr
onkey entr setkey f1
onkey num_entr setkey f1
onkey up   goto item4
onkey down goto item1
call mainkey
goto item5
;



:vlk
transparent on
[glow=255,blue,2];画前景色[/glow]
drawtext pixel 70 160 0      " 1   DOS 工具
drawtext pixel 70 200 102    " 2   安装上海市政府版
drawtext pixel 70 240 0      " R   重新引导系统
drawtext pixel 70 280 0      "ESC  从硬盘启动
drawtext pixel 70 320 0      "F 1  说  明
colorblock pixel 255 100 225 280 320
[glow=255,blue,2];用255号色画一个色块,左上角坐标为(100, 225),右下角坐标为(280,320)。[/glow]
drawhline pixel 0 100  280 225
[glow=255,blue,2];用0号色画水平线,横坐标为100,280,纵坐标为225
;也许这样解释你会更明白:把点(100,225)和点(280,225)連成一条线[/glow]
drawhline pixel 0 100  280 320
[glow=255,blue,2];用0号色画水平线,横坐标为100,280,纵坐标为320[/glow]
[glow=255,blue,2];把点(100,320)和点(280,320)連成一条线[/glow]
drawvline pixel 0 100  225 320
[glow=255,blue,2];用0号色画垂直线,横坐标为100,纵坐标为225,320[/glow]
[glow=255,blue,2];把点(100,225)和点(100,320)連成一条线[/glow]
drawvline pixel 0 280 225 320
[glow=255,blue,2];用0号色画垂直线,横坐标为280,纵坐标为225,320[/glow]
[glow=255,blue,2];把点(280,225)和点(280,320)連成一条线[/glow]
drawtext pixel 110 235 120   "请确认执行此操作:
drawtext pixel 120 265 0     "[ 1 ] 确定
drawtext pixel 120 295 0     "[ESC] 取消
goto vlkkey
[glow=255,blue,2];跳转到vlkkey[/glow]
;
[glow=255,blue,2];(效果见图2)[/glow]

:vlkkey
getkey
[glow=255,blue,2];检测到的按键不是所需的,继续等待[/glow]
onkey 1     call  vlkset
onkey esc   call  vlkmenu
call vlkkey
[glow=255,blue,2];调用函数vlkkey[/glow]
;

:vlkmenu
Repaint pixel 99 224 182 97
[glow=255,blue,2];重新绘制指定区域的背景,以点(99,224)为坐标,向右延伸182,并向下延伸97[/glow]
[glow=255,blue,2];请不要误解为:左上角坐标为(99,224),右下角坐标为(182,97)[/glow]
transparent on
[glow=255,blue,2];画前景色[/glow]
goto item2
[glow=255,blue,2];返回原菜单(item2)[/glow]
;

:vlkset
cls
[glow=255,blue,2];清屏[/glow]
cd IMG
[glow=255,blue,2];切换到当前目录下的IMG目录[/glow]
run GHOSTXP.IMG
[glow=255,blue,2];在当前目录加载GHOSTXP.IMG[/glow]
return
;


:dos
transparent on
drawtext pixel 70 160 102    " 1   DOS 工具
drawtext pixel 70 200 0      " 2   安装上海市政府版
drawtext pixel 70 240 0      " R   重新引导系统
drawtext pixel 70 280 0      "ESC  从硬盘启动
drawtext pixel 70 320 0      "F 1  说  明
colorblock pixel 255 100 185 325 400
drawhline pixel 0 100  325 185
drawhline pixel 0 100  325 400
drawvline pixel 0 100  185 400
drawvline pixel 0 325  185 400
drawtext pixel 115 195 0      " 1   DOS 8.0 系统
drawtext pixel 115 215 0      " 2   WIN98 原版启动盘
drawtext pixel 115 235 0      " 3   BIOS 工具
drawtext pixel 115 255 0      " 4   Partition Magic V8.0
drawtext pixel 115 275 0      " 5   NTFS DOS Pro
drawtext pixel 115 295 0      " 6   GHOST V8.0
drawtext pixel 115 315 0      " 7   DM 9.56 通用版
drawtext pixel 115 335 0      " 8   效率源修复程式
drawtext pixel 115 355 0      " 9   HDD Regenerator
drawtext pixel 115 375 0      "ESC  返回主菜单
goto DOSKEY
;

:DOSKEY
getkey
onkey 1     call  dos80
onkey 2     call  win98
onkey 3     call  bios
onkey 4     call  pq80
onkey 5     call  ntfs
onkey 6     call  ghost
onkey 7     call  dm956
onkey 8     call  xly16
onkey 9     call  hdd
onkey esc   call  dosmenu
call DOSKEY
;

:dosmenu
Repaint pixel 99 184 227 217
call item1
;


:win98
cls
cd IMG
run DOS98.IMG
[glow=255,blue,2];加载失败[/glow]
getkey
call drawhelptext
return
;


:dos80
cls
cd IMG
run DOS80.img
;加载失败
getkey
call drawhelptext
return
;

:ntfs
cls
cd IMG
run NTFS2DOS.IMG
;加载失败
getkey
call drawhelptext
return
;

:pq80
cls
cd IMG
run PQ8.IMG
;加载失败
getkey
call drawhelptext
return
;

:dm956
cls
cd IMG
run DM.IMA
;加载失败
getkey
call drawhelptext
return
;

:xly16
cls
cd IMG
run XLY.IMG
;加载失败
getkey
call drawhelptext
return
;

:hdd
cls
cd IMG
run heereg.IMA
;加载失败
getkey
call drawhelptext
return
;

:ghost
cls
cd IMG
run GHOST8.IMG
;加载失败
getkey
call drawhelptext
return
;

:bios
cls
cd IMG
run DOSBIOS.IMG
;加载失败
getkey
call drawhelptext
return
;




:help
[glow=255,blue,2]; 显示帮助[/glow]
cls
print
print           Microsoft Windows XP 简体中文恢复光盘
print                                        【 VLK版 】
print                                                Made By je64
print                                    
print       感谢您使用本恢复光盘。
print
print       本光盘是利用Windows xp SP1上海市政府版(VLK)制作而成的万能恢复盘。无任何
print   删减,安装完成后无需上网激活。已经安装了2004年3月19日以前的所有关键更新和推
print   荐更新,并集成安装了常用的软件。
print   
print   使用说明:在恢复后第一次启动时选择正确的高级电源管理模式,如不操作将安装默认
print   的高级电源管理模式,选择时可参照下方的说明。执行后系统将自动完成接下来的操作。
print   进入系统后可直接安装驱动程序。
print     
print   注意:选择错误的电源管理模式可能会引起系统不能正确引导或关机。此时只需更改正
print   确的电源管理模式,或重新执行恢复操作并选择正确的电源管理模式。
print  
print       无须人力干涉,轻松安装系统。
print
print       如果您在使用中有什么问题或有什么好的建议,请与我联系!
print   
print                                          
print     [按任意键返回主菜单]         
print                                               
print        EMail:JE_64@163.COM                                               
print                                                    2004年3月20日
print
[glow=255,blue,2];在当前显示位置输出后面的字符串[/glow]
getkey
[glow=255,blue,2];等待操作[/glow]
batch diskemu.cmd
[glow=255,blue,2];在当前目录加载diskemu.cmd,然后从头开始执行[/glow]
return
;

仔细看过上面的DISKEMU.CMD之后,你或许会有以下的疑问:
1.为什么我在"item1","item2","vlk","dos"中不使用call menu然后再覆盖相应部分?
这是因为这个版本(Dec 25 2002)的DISKEMU.BIN不支持多个的调用函数,如果多次调用函数,
会出现不能调用的结果!就像是“检测到的按键不是所需的,继续等待”。
解决办法将在让"DISKEMU支持VM虚拟机!"中介绍!

2.下面
:vlkmenu
Repaint pixel 99 224 182 97
transparent on
goto item2
;
中的99 224 182 97是如何得出的呢?

简单的说可以用下面的公式来得出:
colorblock pixel 255 100 225 280 320
                      x1  y1  x2  y2
Repaint pixel 99 224 182 97
              x2  y2  w   h
x1-1=x2
y1-1=y2
x2-x1+2=w
y2-y1+2=h
这样是不是形象一点,更容易明白呢!
启动界面:



菜单(图示):



帮助:



相关文章:
DISKEMU与EASYBOOT的完美结合简述!
让DISKEMU支持VM虚拟机!
附件: 您所在的用户组无法下载或查看附件
作一个可以改变人生的人.

TOP

DISKEMU创作实例!

顶一下,最近考试,没时间研究,有空要详细看一下,到时再向老大您请教。
欢迎来我的论坛作客,讨论启动技术:

http://www.haopeng.org/bbs/

启动技术区
影视音乐区
游戏动漫区
休闲娱乐区  

TOP

DISKEMU创作实例!

谢谢分享,最近也是太忙,没时间做光盘,先存下来了

TOP

DISKEMU创作实例!

[这个贴子最后由shwhq在 2004/06/23 09:09am 第 1 次编辑]

钱不够!
灌了好多水,终于看到啦。好文章,谢谢楼主!
[img]http://www.danasoft.com/sig-chi.jpg[/img]

TOP

DISKEMU创作实例!

好东西值

TOP

DISKEMU创作实例!

尊敬的je64,你何必设置壁垒,象我这种菜鸟不学习哪能提高呢!?请解除限制!
欢迎光临我的网络E盘
http://hqh0791.ys168.com/
http://2pan.mumayi.net/myspace.aspx?username=shaton

TOP

DISKEMU创作实例!

要求置顶,多放几天,狠狠的学习学习一下

TOP

DISKEMU创作实例!

下了一个demu20演示盘,看里面的说明有这么一段:
制作启动光盘所需要的文件存放在Develop目录下,你可以参考我的例子脚本。
启动是将在根目录内试图加载,如果失败将在/BOOT下尝试。演示盘里的DiskEmu.bin
文件是集成了启动脚本的,所谓集成就是使用下列指令将脚本和解释引擎合并:
copy /b DiskEmu.bin+DiskEmu.cmd DiskEmu.bin
HZK16和HZK16F为CCDOS的简繁体中文字库,如果你不需要使用中文,可以删除。
Loader.bin为启动引导文件,需要在mkisofs或则CDImage的参数中指定。
尤其是最后一句不明白,里面也有一个CDImage.exe,该怎么指定Loader.bin?

TOP

DISKEMU创作实例!

引用:
下面引用由沙同2004/06/28 08:49pm 发表的内容:
尊敬的je64,你何必设置壁垒,象我这种菜鸟不学习哪能提高呢!?请解除限制!
现在解除限制,怎么对得起以前购买的网友.
你不够钱吗??
作一个可以改变人生的人.

TOP

DISKEMU创作实例!

引用:
下面引用由jddj2004/06/29 09:48am 发表的内容:
下了一个demu20演示盘,看里面的说明有这么一段:
制作启动光盘所需要的文件存放在Develop目录下,你可以参考我的例子脚本。
启动是将在根目录内试图加载,如果失败将在/BOOT下尝试。演示盘里的DiskEmu.bin
文件是 ...
类似于EASYBOOT,以 Loader.bin为引导文件,如果是用CDIMAGE来制作ISO,就指定以Loader.bin为引导!
作一个可以改变人生的人.

TOP

发新话题