DISKEMU创作实例!
算你狠!我买!我付钱!
>> 欢迎您,yjtabc:重登录 控制面板 搜索 在线 论坛设施 帮助 退出
>>> 讨论Diskemu, Bootscriptor, isolinux等技术 刻录家园(CD-R Home) → 启动技术论坛 [返回] → 浏览:DISKEMU创作实例! 标记论坛所有内容为已读
目前论坛总在线 32 人,本主题共有 1 人浏览。其中注册用户 1 人,访客 0 人。 [关闭详细列表]
yjtabc
◆您是本帖第 2676 个阅读者◆
* 贴子主题: DISKEMU创作实例! 默认稍大普通较大很大最大
je64 头衔: 论坛斑竹
信息:
威望: +4
魅力:
经验:
现金: 35266 雷傲元
存款: 没开户
贷款: 没贷款
来自: 保密
在线: 49 时 28 分 38 秒
总发贴数: 792 篇
精华贴数: 2 篇
注册日期: 2004/04/22
消息 查看 搜索 好友 邮件 复制 引用 回复 [楼 主]
相关附件: (共 5272 字节)
(此贴售价 100 雷傲元,目前已有 72 人购买)
DISKEMU是一款功能非常强大的启动光盘制作工具,其关键在于DISKEMU.CMD的编写。
附件中提供了DISKEMU.CMD的命令行参数!
下面以一个例子来说明DISKEMU.CMD的格式及命令参数!
;DISKEMU.CMD
:nologo
;设置背景模式
transparent on
;只画前景色
backgroundimage pixel VLK.bmp
setresolution 640 480 32
;设置背景为VLK.BMP,其格式为640*480,32位
setdac 0 0x00 0x00 0x00
;黑色
setdac 1 0x00 0x7f 0x7f
;青色
setdac 100 0xff 0x1f 0x1f
;红色
setdac 101 0x00 0xff 0x00
;绿色
setdac 102 0x00 0x00 0xff
;蓝色
setdac 103 0x5f 0x5f 0x5f
;灰色
setdac 255 0xff 0xff 0xff
;白色
;设置调色板
timerpos 13 25
;以(13,25)为坐标显示倒计数定时器
timercolor 102 @auto
;倒计数定时器使用102号色,背景为自动
processparam pixel 101 103 0 475 640 480
;进度条显示参数为:前景色101,背景色103,左上角坐标(0,475),右下角坐标(640,480)
call drawhelptext
;调用函数drawhelptext
goto item4
;跳转到item4
:drawhelptext
cls 0
;清屏
repaint
;绘制背景
drawtext 12 2 0 " [ VLK版 ]
;在(12,2)位置以0号色为前景色,显示"[ VLK版 ]"
drawtext pixel 30 110 50 "请选择你要进行的操作:
;在(30,110)位置以50号色为前景色,显示 "请选择你要进行的操作:"
;drawtext pixel与drawtext两个命令的坐标是不一致的!
drawtext pixel 30 399 120 "倒记时:
return
;从子函数返回
: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
;检测到的按键不是所需的,继续等待
onkey 1 call dos
;如果内部保存的按键是1,将执行dos这条命令。
onkey 2 call vlk
;如果内部保存的按键是2,将执行vlk这条命令。
onkey r reboot
;如果内部保存的按键是r,将重新启动。
onkey esc boot 80
;如果内部保存的按键是esc,将执行从硬盘启动。
onkey f1 call help
;如果内部保存的按键是f1,将执行help这条命令。
return
;从子函数返回
;
: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
;调用函数menu
transparent on
;画前景色
drawtext pixel 70 280 102 "ESC 从硬盘启动
;在(70,280)位置以102号色为前景色,显示"ESC 从硬盘启动",
;它会覆盖:menu中的"ESC 从硬盘启动"的着色
getkey showtime showprocess 30 entr
;等待按键,如果30秒没有按键,使用缺省按键entr作为输入。
;在选择了菜单之后仍会有倒计时,等待操作
;它与getkey 30 entr功能相似,但它会出现倒计时和进度条,而getkey 30 entr
;则不会出现
onkey entr setkey esc
;如果按键为Enter,把会执行按键esc键
onkey num_entr setkey esc
;如果按键为Enter(小键盘),把会执行按键esc键
onkey up goto item3
;如果按键为up(向上的箭头),把会执行item3
onkey down goto item5
;如果按键为down(向下的箭头),把会执行item2
call mainkey
;调用函数mainkey
goto item4
;检测到的按键不是所需的,继续等待
;
: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
;画前景色
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
;用255号色画一个色块,左上角坐标为(100, 225),右下角坐标为(280,320)。
drawhline pixel 0 100 280 225
;用0号色画水平线,横坐标为100,280,纵坐标为225
;也许这样解释你会更明白:把点(100,225)和点(280,225)連成一条线
drawhline pixel 0 100 280 320
;用0号色画水平线,横坐标为100,280,纵坐标为320
;把点(100,320)和点(280,320)連成一条线
drawvline pixel 0 100 225 320
;用0号色画垂直线,横坐标为100,纵坐标为225,320
;把点(100,225)和点(100,320)連成一条线
drawvline pixel 0 280 225 320
;用0号色画垂直线,横坐标为280,纵坐标为225,320
;把点(280,225)和点(280,320)連成一条线
drawtext pixel 110 235 120 "请确认执行此操作:
drawtext pixel 120 265 0 "[ 1 ] 确定
drawtext pixel 120 295 0 "[ESC] 取消
goto vlkkey
;跳转到vlkkey
;
;(效果见图2)
:vlkkey
getkey
;检测到的按键不是所需的,继续等待
onkey 1 call vlkset
onkey esc call vlkmenu
call vlkkey
;调用函数vlkkey
;
:vlkmenu
Repaint pixel 99 224 182 97
;重新绘制指定区域的背景,以点(99,224)为坐标,向右延伸182,并向下延伸97
;请不要误解为:左上角坐标为(99,224),右下角坐标为(182,97)
transparent on
;画前景色
goto item2
;返回原菜单(item2)
;
:vlkset
cls
;清屏
cd IMG
;切换到当前目录下的IMG目录
run GHOSTXP.IMG
;在当前目录加载GHOSTXP.IMG
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
;加载失败
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
; 显示帮助
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
;在当前显示位置输出后面的字符串
getkey
;等待操作
batch diskemu.cmd
;在当前目录加载diskemu.cmd,然后从头开始执行
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虚拟机!