无忧启动论坛

标题: 给老毛桃PE的虚拟内存设置添加多分区选择(可预览硬盘) [打印本页]

作者: dylc    时间: 2007-3-14 19:45
标题: 给老毛桃PE的虚拟内存设置添加多分区选择(可预览硬盘)
声明:此程序我在虚拟机下测试的,我的机器 815+CY1..1,393M内存,虚拟机 vPC 5.2 128M 内存 WIN98 系统,PE为老毛桃0310版

来无忧也有些时日了,学到不少知识,呵呵,惭愧~ 做个小程序汇报一下下。
初次接触 AUTOIT,又不懂 SCRIPT,还真费了不少功夫,看着别人的源码东拼西凑的总算可以使用了。可恨的是我这个做出来居然有近 200 KB大小,而老毛桃原来那个只有 32 KB,彻底昏倒~~~

老毛桃PE的虚拟内存设在 D 盘,虽足以应付各种情形,但有时你难免碰到意外情况,因此我做了这个小东西给需要的朋友。注意只能用在0310版,好像不能用于有名的1111版(也可能是我不会用吧)。

附件2 应 SECOWU 建议增加了硬盘浏览功能,关闭浏览窗口后即弹出虚拟内存设置窗口。

另: 27 楼 老毛桃 提供了一个简单程序制作小工具,非常好用,大家可以下载看看。

[ 本帖最后由 dylc 于 2007-3-15 05:55 PM 编辑 ]

snap.jpg (17.77 KB, 下载次数: 79)

snap.jpg

snap2.jpg (37.18 KB, 下载次数: 59)

snap2.jpg

pages.rar

191.04 KB, 下载次数: 141, 下载积分: 无忧币 -2

无浏览硬盘功能

pages2.rar

191.17 KB, 下载次数: 129, 下载积分: 无忧币 -2

带硬盘浏览


作者: axd    时间: 2007-3-14 21:13
sf啊,顶一下
作者: szsun    时间: 2007-3-14 21:59
可否做成自动选择的呢?或者30秒内手动选择?
作者: mackyliu    时间: 2007-3-14 22:07
AUTOIT做出来的东东本来就非常大。
作者: dylc    时间: 2007-3-14 22:12
原帖由 szsun 于 2007-3-14 09:59 PM 发表
可否做成自动选择的呢?或者30秒内手动选择?


自动?它又不知道你哪个分区有重要数据,呵呵~

30秒内的只要在 WINPE.INI 里相应处改为下面的内容,不需要那个程序了:

_SUB IFSetPageFile
        TEAM TEXT 30 秒内按住 C、D、E、F 可建立虚拟内存(对应盘符)……|WAIT 30000
        IFEX KEY=67,TEXT 正在设定虚拟内存……|PAGE C:\%PF% 192 256!
        IFEX KEY=68,TEXT 正在设定虚拟内存……|PAGE D:\%PF% 192 256!
        IFEX KEY=69,TEXT 正在设定虚拟内存……|PAGE E:\%PF% 192 256!
        IFEX KEY=70,TEXT 正在设定虚拟内存……|PAGE F:\%PF% 192 256!
        TEXT 没有建立虚拟内存……WAIT 500
_END

不过我可没试过这么长时间是否有效,还有PECMD检测键盘的时间不知道是怎样的,就是说在30秒内是任意时间只按一下按键还是要一直按住按键不放。这个你可以自己试一下。
作者: szsun    时间: 2007-3-14 22:45
原帖由 dylc 于 2007-3-14 10:12 PM 发表


自动?它又不知道你哪个分区有重要数据,呵呵~

30秒内的只要在 WINPE.INI 里相应处改为下面的内容,不需要那个程序了:

_SUB IFSetPageFile
        TEAM TEXT 30 秒内按住 C、D、E、F 可建立虚拟内 ...

谢谢!!
作者: lxl1638    时间: 2007-3-14 23:11
原帖由 dylc 于 2007-3-14 10:12 PM 发表


自动?它又不知道你哪个分区有重要数据,呵呵~

30秒内的只要在 WINPE.INI 里相应处改为下面的内容,不需要那个程序了:

_SUB IFSetPageFile
        TEAM TEXT 30 秒内按住 C、D、E、F 可建立虚拟内 ...



有,周末给大家发个正式版本,现在先帖上测试版和它的功能演示。
下载的附件解压到任意目录,执行其中的CMD批处理,就会看到这些新功能的演示。

PECMD_DEMO.RAR

79.57 KB, 下载次数: 109, 下载积分: 无忧币 -2


作者: fzfchao    时间: 2007-3-14 23:31
支持,自由设置虚拟内存所在分区,可避免破坏一些分区的数据
作者: 老毛桃    时间: 2007-3-15 09:05
原帖由 lxl1638 于 2007-3-14 23:11 发表



有,周末给大家发个正式版本,现在先帖上测试版和它的功能演示。
下载的附件解压到任意目录,执行其中的CMD批处理,就会看到这些新功能的演示。

哈哈,老九果然强劲!
原帖由 老毛桃 于 2007-3-10 18:39 发表
不过我还是希望老九将这样的功能做进 PECMD.EXE 中。当然,用途不要仅仅局限于我的这个 IfSetPage 的功能。可以在 PECMD.INI 中配置弹出对话框的标题、内容、按钮,以及对用户的操作作相应的判定性操作等。那样就是一个真正的万能对话框了,在 PE 启动中需要一些与用户交互的情况就用它,哈哈!

就不知道老九有没有这个心思了。

上次我提这个建议,没看到老九回复,以为没戏了呢。。。。

新增加的 FIND、IFEX 对变量的判定非常实用,我不再需要做那些生成“报告”的方式的原始判断结果了,要知道,硬盘速度的原因,往往要等到报告文件成功建立后才能够在下面利用这个条件,硬盘速度有快有慢,延时很难处理得恰到好处。

通过注册变量到内存,就不存在这样的问题啦,好!


另外,刚才测试这个 DEMO 版本,发现在 按键检测、长效显示、临时显示 的测试中,对用户鼠标的点击也是响应的,可否屏蔽?我是这样想的,用户使用 PE 的时候,在启动的过程中,一般都是右手握鼠标,无聊地等待 PE 启动到桌面,如果中间不小心碰到了鼠标按键,可能会遇到误操作。

对于新增加的 MESS 命令,可否增加一个自动关闭对话框的选项,我知道 AutoIT 从 3.0 版本开始也支持这一功能的,比如 60 秒未操作,即按照“否”、“取消”处理。


还有,这个版本又没有解决 PECMD.INI 加载了两个外置的配置文件后回不到内置的问题呢?很多硬盘上安装了 PE,又使用光盘引导 PE,可能会不到内置上,从而不能加载 Explorer.EXE。
作者: TCLSHX    时间: 2007-3-15 09:13
标题: 回复 #1 dylc 的帖子
收藏一个
作者: dylc    时间: 2007-3-15 09:20
原帖由 lxl1638 于 2007-3-14 11:11 PM 发表



有,周末给大家发个正式版本,现在先帖上测试版和它的功能演示。
下载的附件解压到任意目录,执行其中的CMD批处理,就会看到这些新功能的演示。


昨晚睡得早,没看到,现在下载,多谢!

能有高手注意这个问题太棒了,谢谢 lxl1638 和 老毛桃 带给大家的好东西!
作者: tuxw    时间: 2007-3-15 09:28
好东西,PECMD 真是个强大的命令解释器,新的特性使它不仅仅用于PE了,在其它地方也可以用它来代替以前需要用脚本完成的任务
作者: 老毛桃    时间: 2007-3-15 09:40
原帖由 tuxw 于 2007-3-15 09:28 发表
好东西,PECMD 真是个强大的命令解释器,新的特性使它不仅仅用于PE了,在其它地方也可以用它来代替以前需要用脚本完成的任务

是啊,我好不容易做了个 IfSetPage,老九又将我的饭碗抢走了,垄断啊!:lol :lol :lol
作者: 123    时间: 2007-3-15 10:02
不是有个SetPageFile.exe吗?才39K,不仅可以选择分区,而且可以选择大小
作者: 老毛桃    时间: 2007-3-15 10:06
原帖由 123 于 2007-3-15 10:02 发表
不是有个SetPageFile.exe吗?才39K,不仅可以选择分区,而且可以选择大小

也是哦。

不过 PECMD.EXE 新增加的 MESS 命令,更易于在启动阶段实现与用户交互。
作者: secowu    时间: 2007-3-15 10:15
如果,能够在选择分区时,一并同时显示分区的目录结构
这样对于维护时比较明显的判断,哪些分区可能含有重要资料,免得去猜或问(当然问是不可少的)
作者: dylc    时间: 2007-3-15 11:20
原帖由 老毛桃 于 2007-3-15 09:40 AM 发表

是啊,我好不容易做了个 IfSetPage,老九又将我的饭碗抢走了,垄断啊!:lol :lol :lol


对了,毛桃大师你那个 IFSETPAGE 怎么那么小,我找遍网络也找不到反编译 2.5版的,只有反编 v3 的,衰~

这个是我边看V3中文教程边做的,体积超大,惭愧~
作者: 老毛桃    时间: 2007-3-15 11:21
原帖由 dylc 于 2007-3-14 19:45 发表
来无忧也有些时日了,学到不少知识,呵呵,惭愧~ 做个小程序汇报一下下。
初次接触 AUTOIT,又不懂 SCRIPT,还真费了不少功夫,看着别人的源码东拼西凑的总算可以使用了。可恨的是我这个做出来居然有近 200 KB ...

我用的 V2.5 版本的 AutoIT 编译的,代码比较小。

新的 V3.2 版本增加了不少功能,但是编译后的可执行程序也非常大。
作者: 老毛桃    时间: 2007-3-15 11:22
原帖由 secowu 于 2007-3-15 10:15 发表
如果,能够在选择分区时,一并同时显示分区的目录结构
这样对于维护时比较明显的判断,哪些分区可能含有重要资料,免得去猜或问(当然问是不可少的)

晕,要求越来越高了!

还得添加个 OpenFileDialog 啊
作者: duhe    时间: 2007-3-15 11:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: lxl1638    时间: 2007-3-15 11:34
原帖由 老毛桃 于 2007-3-15 09:05 AM 发表

上次我提这个建议,没看到老九回复,以为没戏了呢。。。。

新增加的 FIND、IFEX 对变量的判定非常实用,我不再需要做那些生成“报告”的方式的原始判断结果了,要知道,硬盘速度的原因,往往要等到报告文件成功建立后才能够在下面利用这个条件,硬盘速度有快有慢,延时很难处理得恰到好处。

通过注册变量到内存,就不存在这样的问题啦,好!


另外,刚才测试这个 DEMO 版本,发现在 按键检测、长效显示、临时显示 的测试中,对用户鼠标的点击也是响应的,可否屏蔽?我是这样想的,用户使用 PE 的时候,在启动的过程中,一般都是右手握鼠标,无聊地等待 PE 启动到桌面,如果中间不小心碰到了鼠标按键,可能会遇到误操作。

对于新增加的 MESS 命令,可否增加一个自动关闭对话框的选项,我知道 AutoIT 从 3.0 版本开始也支持这一功能的,比如 60 秒未操作,即按照“否”、“取消”处理。


还有,这个版本又没有解决 PECMD.INI 加载了两个外置的配置文件后回不到内置的问题呢?很多硬盘上安装了 PE,又使用光盘引导 PE,可能会不到内置上,从而不能加载 Explorer.EXE。


1、要屏蔽鼠标按键响应可以做到。
2、MESS命令创建的是MessageBox窗口,要让它在一定时间内自动关闭比较难(要建立一个新线程或定时器,我试试看)。
作者: 老毛桃    时间: 2007-3-15 11:52
原帖由 lxl1638 于 2007-3-15 11:34 发表


1、要屏蔽鼠标按键响应可以做到。
2、MESS命令创建的是MessageBox窗口,要让它在一定时间内自动关闭比较难(要建立一个新线程或定时器,我试试看)。

MessageBox 本身的确不能自动关闭,不过我看 AutoIT 3.1 版本的示例中,在 MessageBox 命令后加一个时间的秒数,可实现,应该是创建了另外一个进程来控制的。

另:这个版本又没有解决 PECMD.INI 加载了两个外置的配置文件后回不到内置的问题呢?
作者: jiahao    时间: 2007-3-15 12:00
学习中。。。。。支持一下
作者: 123    时间: 2007-3-15 12:12
原帖由 <i>lxl1638</i> 于 2007-3-15 11:34 AM 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=997476&ptid=100988" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://bbs.wuyou.net/images/common/back.gif');}" onmousewheel="return imgzoom(this);" alt="" /></a><br />

<br />

<br />
1、要屏蔽鼠标按键响应可以做到。<br />
2、MESS命令创建的是MessageBox窗口,要让它在一定时间内自动关闭比较难(要建立一个新线程或定时器,我试试看)。
<br />
为什么不在资源里添加一个对话框资源,然后在上面画控件,添加控件的消息处理程序,不是很方便吗?
作者: lxl1638    时间: 2007-3-15 12:14
原帖由 老毛桃 于 2007-3-15 11:52 AM 发表

MessageBox 本身的确不能自动关闭,不过我看 AutoIT 3.1 版本的示例中,在 MessageBox 命令后加一个时间的秒数,可实现,应该是创建了另外一个进程来控制的。

另:这个版本又没有解决 PECMD.INI 加载了两个 ...


本人用自己写的配置文件试过没有问题。
关键是:
1、在外部配置文件中不要再LOAD配置文件,否则就是死循环;
2、CALL命令只能调用本配置文件内的子过程。
作者: lxl1638    时间: 2007-3-15 12:24
原帖由 123 于 2007-3-15 12:12 PM 发表

为什么不在资源里添加一个对话框资源,然后在上面画控件,添加控件的消息处理程序,不是很方便吗?


这样写代码是很容易,但EXE文件会大很多,且耗资源也大。

另,自动关闭MessageBox窗口的功能已完成,只是MB_YESNO窗口换成了MB_YESNOCANCEL类型窗口,效果是一样的。

MESS [是]或[否]选择对话框示例,\n请选择[是]或[否]。@请选择 #YN *50000

MESS [是]或[否]选择对话框示例,\n请选择[是]或[否]。@请选择 #YN

*“后的为等待时间(毫秒),不设置或设置为0时不自动关闭。

[ 本帖最后由 lxl1638 于 2007-3-15 12:28 PM 编辑 ]
作者: 老毛桃    时间: 2007-3-15 13:22
原帖由 lxl1638 于 2007-3-15 12:24 发表


这样写代码是很容易,但EXE文件会大很多,且耗资源也大。

另,自动关闭MessageBox窗口的功能已完成,只是MB_YESNO窗口换成了MB_YESNOCANCEL类型窗口,效果是一样的。

MESS [是]或[否]选择对话框示例, ...

仅有 Yes、No 按钮的对话框也应该可以实现自动关闭的吧,将“No”当作 “Cancel” 处理就是了。

老九不妨参考一下 AutoIT 的代码。

这是我汉化的 AutoIT 的一个示例:

msgboxwizard.rar

117.46 KB, 下载次数: 45, 下载积分: 无忧币 -2


作者: haiwy    时间: 2007-3-15 14:16
_SUB IFSetPageFile
        TEAM TEXT 30 秒内按住 C、D、E、F 可建立虚拟内存(对应盘符)……|WAIT 30000
        IFEX KEY=67,TEXT 正在设定虚拟内存……|PAGE C:\%PF% 192 256!
        IFEX KEY=68,TEXT 正在设定虚拟内存……|PAGE D:\%PF% 192 256!
        IFEX KEY=69,TEXT 正在设定虚拟内存……|PAGE E:\%PF% 192 256!
        IFEX KEY=70,TEXT 正在设定虚拟内存……|PAGE F:\%PF% 192 256!
        TEXT 没有建立虚拟内存……WAIT 500
_END

我试这个时没有成功..
作者: tmlu110    时间: 2007-3-15 14:52
顶一下
作者: secowu    时间: 2007-3-15 15:01
原帖由 老毛桃 于 2007-3-15 11:22 AM 发表

晕,要求越来越高了!

还得添加个 OpenFileDialog 啊


呵呵,应该不用这个可以吧。。。。

首先枚举全部分区,然后将分区的目录结构显示在一个listview里啦,这样,就不用dialog了
作者: secowu    时间: 2007-3-15 15:02
估计,尽显示三层目录结构就可以了,太深了没有必要啊
作者: lxl1638    时间: 2007-3-15 15:14
最简单是:SHBrowseForFolder,如果有需要,就将用户选择的结果保存在一个环境变量中。

[ 本帖最后由 lxl1638 于 2007-3-15 03:17 PM 编辑 ]

未命名.PNG (13.29 KB, 下载次数: 36)

未命名.PNG

作者: dylc    时间: 2007-3-15 15:47
原帖由 secowu 于 2007-3-15 10:15 AM 发表
如果,能够在选择分区时,一并同时显示分区的目录结构
这样对于维护时比较明显的判断,哪些分区可能含有重要资料,免得去猜或问(当然问是不可少的)


这个…… 需要恢复的数据是看不到的啊,似乎只能问了。如果真的问不出什么又拿不准的话,可以先不加载虚拟内存,待查看各分区目录后再重启加载,就是麻烦点了~

当然作为学习和研究可以看看能否先加载资源管理器……
作者: zm00100    时间: 2007-3-15 15:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: dylc    时间: 2007-3-15 15:49
原帖由 老毛桃 于 2007-3-15 01:22 PM 发表

仅有 Yes、No 按钮的对话框也应该可以实现自动关闭的吧,将“No”当作 “Cancel” 处理就是了。

老九不妨参考一下 AutoIT 的代码。

这是我汉化的 AutoIT 的一个示例:



下载瞧瞧,学习学习~
作者: dylc    时间: 2007-3-15 15:54
原帖由 haiwy 于 2007-3-15 02:16 PM 发表
_SUB IFSetPageFile
        TEAM TEXT 30 秒内按住 C、D、E、F 可建立虚拟内存(对应盘符)……|WAIT 30000
        IFEX KEY=67,TEXT 正在设定虚拟内存……|PAGE C:\%PF% 192 256!
        IFEX KEY=68,TEXT ...


我又想了一下(其实我跟你一样是菜鸟,有些东西还搞不懂),那个等待时间是固定的,就是说一定要等30秒它才会继续,那就是说你必须按住按键30秒,太晕了(前些时候我建议老毛桃把他的 5 秒改成 8 秒时他已经晕了半天了,哈哈~),所以还是要么等 5 秒,要么就用 IFSETPAGE,等更好的处理办法出来也可以。
作者: UID    时间: 2007-3-15 16:11
抓狂了,明天开始学AUTOIT
作者: dylc    时间: 2007-3-15 17:22
原帖由 secowu 于 2007-3-15 03:02 PM 发表
估计,尽显示三层目录结构就可以了,太深了没有必要啊


重新整了一个,你看看~




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3