绿化&&VJC1.5仿真版
&不明白为什么中学计算机教育会使用这一个软件。
&这个所谓的仿真版是用VB编写的。
&主程序会调用DLL和OCX
&其实只有一个OCX是在windows目录之下的。
&所以绿化起来会很简单的。
&先来些准备知识,抄的,网上一大把,关于批处理命令的一些解析:
++++++++++++++++++++++++++++++++++++++++
@ 文件名: 注册控件.bat
@ 描述: 注册当前目录下所有以ocx为后缀的ActiveX控件
for %%i in (*.ocx) do regsvr32 /s %%i
++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++
@ 文件名: 卸载控件.bat
@ 描述: 卸载当前目录下所有以ocx为后缀的ActiveX控件
for %%i in (*.ocx) do regsvr32 /s /u %%i
++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
批处理文件解析
=======================================
-----------------------
echo、@、call、pause、rem(用 :: 代替rem) 是批处理文件最常用的几个命令。
echo 表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令行都不显示命令行本身
@ 与 echo off 相像,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)
调用另一个批处理文件(如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)
pause 运行此句会暂停批处理的执行并在屏幕上显示"Press and key to
continue..."或"请按任意键继续..."的提示,等待用户按任意键后继续。
rem 表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。
批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符"%"
%[1-9]表示参数,参数是指在运行批处理文件时在文件名后加以空格(或者TAB)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符用%1到%9顺序表示。
不常用命令
-----------------------
start、set、重定向 & &&
&、管道符号 |、转义符^,逻辑命令符: &,
start 调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
set 显示、设置或删除变量
显示批处理当前已定义的所有变量及其值
显示所有以s开头的变量及值
&&& set aa=abcd
(向变量aa赋值abcd)
aa=&& (删除变量aa)
批处理中的变量是不区分类型的。例如:set aa=345 后,变量aa的值既可以被视为数字345,也可以被视为字符串345
将管道符合 | 前面命令的输出结果重定向输出到管道符号后面的命令中去,作为后面命令的输入。
转义符^ 将特殊符号转化为一般符号,即剥离特殊符号的特殊地位。特殊符号指: | &
&&& 比如,如果我们想输出符号
"&" ,直接用命令 echo & 是不行的,必须修改为 echo
逻辑命令符: &, &&, ||
& 的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败。
前面的命令成功执行时,执行&&后面的命令,否则不执行。
&&& || 当 ||
前面的命令失败时,执行 || 后面的命令,否则不执行。(关于 ||
这个命令,我把它理解为是一个冗余命令,即主方案失败时,立即执行备用方案)
-------------------------
if、goto、choice、for
if 有三种格式:
1. if [not] "参数" == "字符串" 待执行的命令
参数如果等于(not表示不等)指定的字符串,则条件成立,运行命令,否则,运行下一句。
&& 如: if "%1" == "a" format
2. if [not] exist [路径\]文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
&& 如: if exist c:\config.sys type
c:\config.sys
3. if errorlevel &数字& 待执行的命令
很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态)。
&& 如: if errorlevel 2 goto x2
goto 批处理文件运行到这里将跳转到goto所指定的标号(标号即label, 标号用 : 后跟标准字符串来定义,
标号所在行不被执行)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。
&& goto end
&& echo bye
choice 使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后用 if
errorlevel配合,根据用户的选择运行不同的命令。
&&& choice
/?& 可以查看使用帮助
for 循环命令,只要条件符合,它将多次执行同一命令。
&& FOR %%variable IN (set) DO
command [command-parameters]
&& %%variable
指定一个单一字母可替换的参数
&& (set) 指定一个或一组文件。可以使用通配符
&& command 指定对每个文件执行的命令
&& command-parameters
为特定命令指定参数或命令行开关
&& for %%c in (*.bat *.txt) do
该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。
&& 绿化程序不能运行的查错:
VB绿化调试错误之“错误429,ActiveX部件不能创建对象”?
之一、在绿化VB软件时,偶遇“错误429,ActiveX部件不能创建对象”。
原因:丢失控件或动态连接库文件
在***好的目标程序中,发现一****.log的***日志。呵呵,曙光乍现啊!就是它了。一般软件***后都会在***文件夹中生成***文件(如Install.log)和卸载文件(如Unins000.dat)。里面记载着创建的目录、复制的文件、在注册表中创建的键值等信息,可以用纯文本编辑器打开、查看这些文件(如图2)。查看这些文件可以理解反***过程,最后根据反***的信息制作绿色软件。
把里面提到的所有能注册的文件都用 regsvr32 注册了一遍。正常,收工。
之二、was loaded,but the DLLUnregisterServer entry point was not
found. DllUnregisterServer may not be exported,or a corrupt version
of aaa.dll may be in memory. Consider using PView to detect and
remove it.
原因:没有实现COM调用
没有实现DllRegisterServer函数,如用vc编程,只要加入这个入口函数,并调用COleObjectFactory::UpdateRegisterAll()函数即可。
好了,来一段批处理吧,先把windows目录下的那个actskin4_new.ocx复制到本程序的DLL目录下,方便管理。
查找这些DLL可以使用一款小巧的进程监视程序,可以显示调用DLL的那种类型就可以了。
新建一个txt文本文件,把如下内容复制粘贴进去,保存为:绿化.bat
copy /y Dll\actskin4_new.ocx
"%windir%\system32\actskin4_new.ocx"
regsvr32.exe "%windir%\system32\actskin4_new.ocx" /s
for %%i in (Dll\*.ocx) do regsvr32 %%i /s
for %%i in (Dll\*.Dll) do regsvr32 %%i /s
以后双击它之后,就可以启动主程序了。绿化成功。
&绿化好的程序在这里可以下载:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。