发新话题
打印

DISKEMU创作实例!

DISKEMU创作实例!

好东西,值!

TOP

DISKEMU创作实例!

引用:
下面引用由jdwxyd2004/07/06 08:24am 发表的内容:
尊敬的je64,你何必设置壁垒,象我这种菜鸟不学习哪能提高呢!?请解除限制!
就是呀,解除吧,让我们这些穷菜鸟学点东西呀,我会报答你的

TOP

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虚拟机!

TOP

DISKEMU创作实例!

好文章!!!很受益!!!

TOP

DISKEMU创作实例!

TOP

DISKEMU创作实例!

买完这帖,我吃午饭都没钱了

TOP

DISKEMU创作实例!

能不能用呀

TOP

DISKEMU创作实例!

汗!要钱?

TOP

DISKEMU创作实例!

汗!买完才发现这里已经有人贴了!
莫听穿林打叶声,何妨吟啸且徐行。 [br] 竹杖芒鞋轻胜马,一蓑烟雨任平生。

TOP

DISKEMU创作实例!

要钱,就是鼓励大家灌水。

TOP

发新话题