Archive for 09月, 2006

InstallShield内部库函数全集一(18)

InstallShield内部库函数全集一(18)
18.扩展函数
扩展函数允许你调用动态链接库中的函数,调用Windows APIs,或运行另一个应用程序或安装程序脚本。UseDLL 和 UnUseDLL函数允许你装入一个DLL到内存中或卸载它并使用DLL。LaunchApp 和 LaunchAppAndWait函数允许你仍在执行脚本时运行另一个Windows 或DOS应用程序。
CallDLLFx
从一个外部DLL中调用函数。
Delay
延迟安装程序脚本的执行。
LaunchApp
运行另一个程序。
LaunchAppAndWait
运行另一个程序并等待该程序终止。
UnUseDLL
从内存卸载一个DLL。
UseDLL
把一个DLL装入到内存。
18.1  CallDLLFx
语法:CallDLLFx (szDLL, szFunction, lvValue, svValue);
说明:CallDLLFx函数调用一个指定的DLL中的函数。该函数必须使用下列固定定义,hwnd是InstallShield主窗口的主窗口句柄:
LONG APIENTRY YourFunction (HWND hwnd, LPLONG lpIValue, LPSTR lpszValue);
参数:
szDLL
指定包含要执行的函数的DLL的全限定文件名。
szFunction
指定由szDLL指定的DLL中的函数的名称。
IvValue
指定访问一个DLL函数时传递的长整型变量。
svValue
指定传递给DLL函数的字符串变量。
返回值:
CallDLLFx函数从DLL中的函数返回一个长整型数。
18.2  Delay
语法:Delay (nSeconds);
说明:Delay函数使一个安装程序脚本的执行延迟一个指定的秒数。其它和InstallShield同时运行的任务在InstallShield被延迟时仍正常进行。
参数:
nSeconds
指定程序被延迟的秒数。
返回值:
0:表明函数成功延迟了脚本的执行。
< 0:表明函数未能延迟了脚本的执行。
 18.3  LaunchApp
语法:LaunchApp (szCommand, szCmdLine);
说明:LaunchApp函数允许你在脚本内运行另一个应用程序。该应用程序和脚本同时运行。InstallShield对运行的应用程序没有控制权并且不能确定运行的应用程序是否成功运行。运行的应用程序和其它在运行InstallShield时你启动的应用程序一样运行。你可以在InstallShield中运行任何你可以在操作系统中正常运行的应用程序。
参数:
szCommand
指定要运行的应用程序的全限定名。如果你指定一个没有路径的文件名,InstallShield在当前文件夹中,Windows 文件夹中,Windows系统文件夹中和列在环境变量PATH中的文件夹中查找。
如果应用程序的全限定名包括长文件夹名和/或一个长文件名,在把szCommand传递给LaunchAppAndWait之前先把它传递给LongPathToQuote。
szCmdLine
指定传递给szCommand标识的应用程序的命令行参数(如果有)。如果没有参数,则迟到一个空字符串。
返回值:
0:LaunchApp成功运行应用程序。
< 0:LaunchApp未能找到或未能运行应用程序。
注解:
?安装进程在应用程序被运行后继续。应用程序即使在安装脚本终止后仍可以运行。
?你也可以使用FindWindow 和 SendMessage函数来控制或发送消息给运行的应用程序。如果你想要在一个Window中运行一个DOS应用程序,你可以提供一个和DOS应用程序同名的PIF(Program Information File)。在PIF文件中,你指定应用程序运行在其下的一个窗口方式。
?运行一个DOS程序时,你不能确定返回结果DOS_ERRORLEVEL。然而你可以把一个DOS应用程序放进一个批处理文件,让批处理文件来识别错误并创建另一个包含返回错误代码的文件。然后你可以读该文件并确定从DOS应用程序返回的错误代码。
?LaunchApp 使用Windows API 的CreateProcess 来运行应用程序。
18.4  LaunchAppAndWait
语法:LaunchAppAndWait (szProgram, szCmdLine, lWait);
说明:LaunchAppAndWait函数运行由szProgram指定的带有szCmdLine指定的命令行参数的应用程序。第三个参数,lWait指示安装在继续前是否要等待直到运行的应用程序终止。
  一个安装程序只能监控由szProgram指定的应用程序;如果该应用程序要运行其它应用程序或进程,安装程序不能监控它们。因此,安装程序将在第一个应用程序结束后继续,即使那时由第一个应用程序运行的其它应用程序仍在运行。注意如果运行的应用程序终止失败,则安装程序将无限等待运行的应用程序完成。
参数:
szProgram
指定要被运行的应用程序的文件名。建议要指定应用程序的完整路径和文件名。如果你不包括一个路径,InstallShield将使用被Windows API 函数CreateProcess使用的相同的查找次序来定位文件。如果文件未能在这些位置找到,函数将失败。
  如果应用程序的全限定名包括长文件夹名和/或一个长文件名,在把szCommand传递给LaunchAppAndWait之前先把它传递给LongPathToQuote。
szCmdLine
指定传递给运行的应用程序的命令行参数。为运行没有命令行参数的应用程序,传递一个空字符串。
lWait
指定安装程序在继续前是否要等待运行的应用程序终止。在该参数位置传递下列预定义常量之一:
NOWAIT:指定安装程序在运行应用程序后立即继续,应用程序将和安装程序脚本同时运行。注意使用该参数等效于调用函数LaunchApp。
WAIT:指定安装程序必须等待直到由该函数运行的应用程序终止。
返回值:
1:表明应用程序成功运行。
< 0:表明应用程序未能运行。
注解:
?InstallShield 安装程序使用函数CreateProcess。在InstallShield运行应用程序后,它查找装入的应用程序的窗口句柄。如果它找到窗口句柄,则它在继续前等待直到应用程序窗口消失。
?安装程序不能监控一个不创建窗口的应用程序。如果指定的应用程序没有创建一个窗口,安装程序在运行应用程序后立即继续。注意应用程序的窗口不需要可见,但它必须存在,以便让安装程序等待。
?一些应用程序试图装入DLLs并且当那些DLLs不能被定位时不能正确运行。为确保一个应用程序能找到它需要的DLLs,有必要在调用LaunchAppAndWait前改变到包含可执行应用程序的目录。为改变当前目录,调用ChangeDirectory函数。
?如果运行的应用程序终止失败,则安装程序将无限等待运行的应用程序完成。
?LaunchAppAndWait以一个全屏DOS窗口来运行DOS程序。为以一个不同类型的窗口来运行一个DOS程序,你必须直接调用Windows APIs。
18.5  UnUseDLL
语法:UnUseDLL (szDLLName);
说明:UnUseDLL函数从内存卸载一个DLL。UnUseDLL将该DLL的锁计数减少一。当锁计数等于0时,InstallShield 卸载该 DLL。每一个对UseDLL的调用都必须有一个对应的对UnUseDLL的调用,因而DLLs在它们不再需要时不会留在内存中而浪费系统资源。一旦你卸载了一个DLL,你不能再调用该DLL中的函数。
    Microsoft Windows系统 DLLs, 如 User.exe, User32.dll, [...]

InstallShield内部库函数全集一(19)

InstallShield内部库函数全集一(19)
19.批处理函数
19.1  高级批处理文件函数
高级批处理文件函数和Ez批处理文件函数不同,它们提供更大的灵活性和对批处理文件的更多控制。当需要对一个批处理文件做更多扩充和更复杂的修改,则使用这些函数。
    为用这些高级函数来编辑一个批处理文件,你必须首先通过调用BatchFileLoad把该文件装入到内存。当完成了对该批处理文件的修改,然后必须调用BatchFileSave保存该文件。
    安装初始化时,它选择目标系统的启动批处理文件(Autoexec.bat)作为缺省批处理文件(除非通过调用BatchSetFileName来修改),如果没有指定其它文件名,该文件就是由BatchFileLoad读入内存的文件。为确定缺省批处理文件的全限定名,调用BatchGetFileName。
    不要把Ez配置文件函数和高级配置文件函数混合起来。调用BatchFileLoad之后,直到你调用了BatchFileSave保存你的修改后,你才能使用Ez配置文件函数。
BatchAdd
添加一个环境变量到一个批处理文件。
BatchDeleteEx
删除批处理文件中的一行。
BatchFileLoad
把一个批处理文件装入内存来用高级批处理函数编辑它。
BatchFileSave
保存一个由BatchFileLoad装入的批处理文件。
BatchFind
在一个批处理文件中查找项目。
BatchGetFileName
检索缺省批处理文件的全限定名。
BatchMoveEx
移动一个批处理文件中的一个项目。
BatchSetFileName
指定作为缺省批处理文件的一个批处理文件。
相关函数:
SdShowFileMods
19.1.1  BatchAdd
语法:BatchAdd (szKey, szValue, szRefKey, nOptions);
说明:BatchAdd函数插入一个SET命令或其它DOS命令到一个已经由BatchFileLoad装入内存的批处理文件中。参数nOptions使你可以将新命令添加到文件的第一个或最后一个语句,用新命令取代一个现存语句,或指定将新命令添加到一个现存语句的前面或后面。
    除非你将常量COMMAND和你传递给nOptions的值用或操作符连接,否则BatchAdd自动在你要插入的语句的开始添加DOS关键字SET。如果你没有在nOptions显式指定REPLACE,那么即使在批处理文件中存在重复行,指定的语句也会被添加。
调用BatchAdd前,你必须调用BatchFileLoad来把要修改的文件装入内存。在你修改该文件后,调用BatchFileSave来把它保存到磁盘。
参数:
szKey
指定要添加到批处理文件中的关键字。PATH、 TEMP和 MYENV是该参数有效值的例子。
szValue
指定要添加到该批处理文件中的关键字的值。该字符串必须不长于512个字节;传递一个长于512字节的字符串将会引起一个安装错误。为添加一个更长的字符串,使用FileGrep 和 FileInsertLine函数。
批处理文件完全不支持长路径名。如果你使用该函数来添加包含长路径名的一行,则必需先调用LongPathToShortPath把长路径名转换成它等价的短路径,然后再能把它插入到要添加至批处理文件的字符串中。
szRefKey
指定在批处理文件中与你添加的szKey相关的参考项。
nOptions
指定该行被插入到文件何处。在该参数位置传递下列预定义常量之一:
BEFORE:该语句被添加到包含szRefKey的第一行的前面。如果szRefKey是一个空字符串(“”),该语句被添加到文件首行。
AFTER:该语句被添加到包含szRefKey的最后一行的后面。如果szRefKey是一个空字符串(“”),该语句被添加到文件末行。
REPLACE:该语句将置换文件中已存在的一行。如果存在多行有相同的字,仅最后一行被置换。如果szKey不存在于文件中,新行添加到szRefKey之后。如果szRefKey是一个空字符串(“”),该语句被添加到文件末行。
    当被添加的语句不是一个SET命令,给szKey传递一个空字符串,给szValue传递完整命令,并将常量COMMAND和其它选项之一用或操作符(|)连接,如下所示:
   BatchAdd(””, ”PAUSE”, ””, COMMAND | AFTER);
返回值:
0:BatchAdd成功添加一个SET语句或其它命令到批处理文件。
< 0:BatchAdd未能添加一个SET语句或其它命令到批处理文件。
注解:
?一个InstallShield参考项可以是一个环境变量,DOS命令或一个程序文件名。环境变量是关键字,如PATH, COMSPEC, LIB或其它预定义或用户定义的标识符。一个环境变量的值使用DOS SET命令来设置。显示在一个批处理文件中的语句必须是DOS命令,程序名(有或没有命令行参数)或注解。有关命令和环境变量的详细定义请参阅操作系统手册。
19.1.2  BatchDeleteEx
语法:BatchDeleteEx (szKey, nOptions);
说明:BatchDeleteEx函数删除一个批处理文件中包含szKey指定的值的行。调用BatchDeleteEx前,你必须调用BatchFileLoad来把要修改的文件装入内存。在你修改该文件后,调用BatchFileSave来把它保存到磁盘。
参数:
szKey
指定标识要被删除的行的参考关键字。
nOptions
表明szKey是指定一个SET语句中的一个环境变量还是一个命令。在该参数位置传递下列预定义常量之一:
0:指定szKey是一个SET语句中的一个环境变量。一个环境变量是一个预定义的标识符(如PATH, COMSPEC和 LIB),或一个用户定义的标识符。例如,如果szKey的值是”LIBPATH”并且nOptions设置为0,则下面语句将被删除:
SET LIBPATH=C:\Lang\Lib
COMMAND:指定szKey是一个DOS命令或一个程序文件名。
返回值:
0:BatchDeleteEx成功删除包含指定值的行。
< 0:BatchDeleteEx未能删除包含指定值的行。
19.1.3  BatchFileLoad
语法:BatchFileLoad (szBatchFile);
说明:BatchFileLoad函数将指定批处理文件的一份拷贝装入内存以便其它高级批处理文件函数可以被调用来操作该文件。在szBatchFile指定你要编辑的批处理文件名或给szBatchFile传递一个空字符串来编辑缺省批处理文件,它由InstallShield初始化设置为由系统使用的Autoexec.bat。
    注意你可以调用BatchFileLoad来创建一个新批处理文件。为了这么做,你可以给szBatchFile传递一个不存在的文件名。然后调用其它批处理函数来编辑新文件。最后,调用BatchFileSave将新文件保存到磁盘。
使用任何高级批处理文件函数之前,你必须首先调用BatchFileLoad将要修改的文件装入到内存。在你修改文件后,调用BatchFileSave将它保存到磁盘。为得到将安装脚本中使用的缺省批处理文件的全限定名,调用BatchGetFileName。为指定另一个在安装脚本中使用的缺省批处理文件,调用BatchSetFileName。
参数:
szBatchFile
指定装入内存的批处理文件的全限定名。为装入缺省批处理文件,给该参数传递一个空字符串(“”)。如果你在该参数指定一个文件,该文件成为缺省批处理文件。调用该函数后,你可以使用所有高级批处理文件函数来操作该文件。
返回值:
0:BatchFileLoad成功将指定批处理文件装入内存。
< 0:BatchFileLoad未能将指定批处理文件装入内存。
19.1.4  BatchFileSave
语法:BatchFileSave (szBackupFile);
说明:BatchFileSave函数将由BatchFileLoad函数装入内存的批处理文件保存到磁盘。文件保存为它的原始名。如果在szBackupFile指定一个文件名,在被编辑的文件被写到磁盘前原始文件用该文件名更名。如果szBackupFile包含一个空字符串(“”),原始文件被该修改的文件置换。如果你结束用高级批处理文件函数修改一个批处理文件时没有调用BatchFileSave,所有修改将被丢失。
参数:
szBackupFile
指定在编辑被保存前是否要有一个原始文件拷贝的备份。
如果无需创建备份文件,给该参数指定一个空字符串。
如果原始文件必须用一个特定名备份,给该参数传递该文件名。该文件名必须是非限定的(也就是,不限定一个驱动器和/或路径)。注意如果具有指定名称的文件已经存在, BatchFileSave将生成一个唯一的文件扩展名,如接下去布告牌项目中描述。
如果原始文件备份时必须带有一个安装生成文件的扩展名,指定通配符””作为文件扩展名(例如,”Batch.”)。然后安装将赋一个数值型值,从001开始,作为扩展名。如果一个有该扩展名的文件已经存在,扩展名值将增加1直到产生一个唯一的文件名。
一旦创建了备份,InstallShield保存备份文件名到系统变量INFOFILENAME。
注意下列重要事实:1)如果上一次对BatchFileLoad的调用指定的批处理文件不存在,备份文件将和由调用BatchFileSave创建的批处理文件相同。2)如果szBakupFile指定原始批处理文件名,那么将不会创建一个备份文件。
返回值:
0:BatchFileSave成功保存内存中的批处理文件到磁盘。
< 0:BatchFileSave未能保存内存中的批处理文件到磁盘。
19.1.5  BatchFind
语法:BatchFind (szRefKey, svResult, nOptions);
说明:BatchFind函数在一个批处理文件中查找出现szRefKey指定的参考关键字的一处或多处。如果你在nOptions指定常量RESTART,返回参考关键字第一次出现之处。为找到出现szRefKey的下一处,将参数nOptions设置为CONTINUE重复调用该函数。
    调用BatchFind前,你必须调用BatchFileLoad来把要修改的文件装入内存。在你修改该文件后,调用BatchFileSave来把它保存到磁盘。
参数:
szRefKey
指定要查找的参考关键字。参考关键字可以是一个环境变量,一个DOS命令或一个程序名。如果参考关键字是一个文件名并且你没有指定一个文件扩展名,函数将返回所有有该基名的关键字。例如,如果你指定Win.com,查找仅对该参考关键字。如果你指定WIN,Win.exe文件,Win.dll文件,Win.sys文件等等如故存在于批处理文件中,则都将被返回。
svResult
指定在批处理文件中找到的关键字的值。
nOptions
指定从哪儿开始查找;在该参数位置传递下列预定义常量之一:
CONTINUE:从批处理文件当前位置开始查找。
RESTART:从批处理文件开始来开始查找。
当你查找的参考关键字是一个DOS命令或程序名(而不是一个环境变量)时,将常量COMMAND和CONTINUE或RESTART用或操作符(|)连接,如下所示:
BatchFind (”SCAN.EXE”, svResult, COMMAND | RESTART);
返回值:
0:BatchFind成功找到szRefKey的值并在szResult返回它。
< 0:BatchFind未能找到szRefKey的值并在szResult返回它。
19.1.6  BatchGetFileName
语法:BatchGetFileName (svFileName);
说明:BatchGetFileName函数检索缺省批处理文件(由InstallShield初始设置为系统启动时使用的自举Autoexe.bat文件)的全限定名。为指定一个不同的批处理文件为安装脚本中使用的缺省批处理文件,调用BatchSetFileName。
参数:
svFileName
在szFileName返回缺省批处理文件的全限定名。
返回值:
0:BatchGetFileName成功检索缺省批处理文件的全限定名。
< 0:BatchGetFileName未能检索缺省批处理文件的全限定名。
19.1.7  BatchMoveEx
语法:BatchMoveEx (szMove, szRefKey, nOptions, nMoveOption);
说明:BatchMoveEx函数将一个批处理文件中由szMove指定的行从一个位置移动至另一个位置。参数nOptions指定是把该行放置在批处理文件的开始或结尾,还是在szRefKey指定的行的前面或后面。调用BatchMoveEx前,你必须调用BatchFileLoad来把要修改的文件装入内存。在你修改该文件后,调用BatchFileSave来把它保存到磁盘。
参数:
szMove
指定标识要被移动行的参考关键字。
szRefKey
指定关键字,它标识用来定位移动行的参考行。如果szRefKey是一个空字符串,由szMove 指定的行移动到文件的开始或结尾,根据nOptions的值而定。
nOptions
指定将行移动到何处;给该参数传递下列预定义常量之一:
BEFORE:由szMove指定的行被移动到包含szRefKey参考关键字的行的前面。如果szRefKey是一个空字符串,则由szMove指定的行被移动到文件的开始。
AFTER:由szMove指定的行被移动到包含szRefKey参考关键字的行的后面。如果szRefKey是一个空字符串,则由szMove指定的行被移动到文件的结尾。
    当你查找的参考关键字是一个DOS命令或程序名(而不是一个环境变量)时,将常量COMMAND和BEFORE 或AFTER用或操作符(|)连接,如下所示:
BatchMoveEx (”PATH”, ”SCAN.EXE”, BEFORE | COMMAND, 0);
nMoveOption
指定szMove是一个命令还是一个环境变量。给该参数传递下列预定义常量之一:
0:指定szMove是一个环境变量。
COMMAND:指定szMove是一个命令。
返回值:
0:BatchMoveEx成功移动批处理文件中的指定行。
< 0:BatchMoveEx未能移动批处理文件中的指定行。
19.1.8  BatchSetFileName
语法:BatchSetFileName (szBatchFile);
说明:BatchSetFileName函数指定由Ez批处理文件函数及以一个空字符串为其参数调用BatchFileLoad时所使用的批处理文件名。在安装脚本中,该文件被作为缺省批处理文件。安装初始化过程中,缺省批处理文件被设置为系统使用的Autoexec.bat文件。
应重视下列有关BatchSetFileName的事实:
它不确认指定文件的存在性。
它不把文件装入内存。
参数:
szBatchFile
指定在安装脚本中作为缺省批处理文件使用的文件的全限定名。
返回值:
0:BatchSetFileName成功设置指定文件为缺省批处理文件。
< 0:BatchSetFileName未能设置指定文件为缺省批处理文件。
注解:
BatchSetFileName只简单地指定缺省批处理文件的名称。即使文件名是无效的或指定文件不存在时该函数也会成功。一个无效的文件名将导致随后的Ez批处理文件和高级批处理文件函数失败。
19.2  Ez批处理文件函数
Ez批处理文件函数修改缺省批处理文件。除非通过调用BatchSetFileName来修改,缺省批处理文件是Autoexec.bat。应注意的是每个Ez批处理文件函数打开缺省批处理文件然后在作修改后自动保存它。你使用Ez批处理文件函数时你不用调用函数来打开和保存。
    不要把Ez批处理文件函数和高级批处理文件函数混合起来。调用BatchFileLoad之后,直到你调用了BatchFileSave保存文件后,你才能使用Ez批处理文件函数。
EzBatchAddPath
修改缺省批处理文件,通过添加一个路径名到一个PATH命令的查找路径或到一个赋给环境变量的值。
EzBatchAddString
添加一行文本到缺省批处理文件。
EzBatchReplace
置换缺省批处理文件中的一个语句。
19.2.1  EzBatchAddPath
语法:EzBatchAddPath (szKey, szPath, szRefDir, nPosition);
说明:EzBatchAddPath函数修改缺省批处理文件,通过添加一个路径名到一个PATH命令的查找路径或到一个赋给环境变量的值。除非通过调用BatchSetFileName来修改,缺省批处理文件是Autoexec.bat。
    调用BatchGetFileName来确定缺省批处理文件的全限定名。为改变EzBatchAddPath使用的批处理文件的文件名,调用BatchSetFileName。该函数不支持长文件名。在把它传递到调用EzBatchAddPath 之前调用LongPathToShortPath来转换长路径到它等价短路径。
参数:
szKey
指定要修改的环境变量名。如,为修改PATH语句,在这儿指定”path”。 如果指定的环境变量没有在缺省批处理文件中找到,则为环境变量创建一个完整SET语句并插入到文件中。
szPath
指定添加到环境变量当前值的路径名。在查找路径中插入一个分界分号来把它和其它路径名分隔开。
szRefDir
指定与你添加的szPath新路径名相关的参考关键字(一个路径名)。如果这是一个空字符串,该路径名添加到查找路径的开始或结尾,根据nPosition的值而定。如果由szRegKey指定的路径名没有在查找路径中找到,szKey的值被添加到结尾。
nPosition
指定在查找路径的何处添加新路径名,具体包括以下选项:
BEFORE:新路径名被插入到szRefDir指定的路径名的前面。如果szRefDir 包含一个空字符串,该路径名被添加到查找路径的前面。
AFTER:新路径名被插入到szRefKey指定的路径名之后。如果szRefDir 包含一个空字符串,该路径名被添加到查找路径的结尾。
返回值:
0:EzBatchAddPath成功添加路径名到批处理文件。
< 0:EzBatchAddPath未能添加路径名到批处理文件。
注解:
?缺省批处理文件是隐藏或只读时EzBatchAddPath 可能失败。
?EzBatchAddPath对它修改的文件不做拷贝备分。
19.2.2  EzBatchAddString
语法:EzBatchAddString (szLine, szRefKey, nOptions);
说明:EzBatchAddString函数添加一文本行到缺省批处理文件;除非通过调用BatchSetFileName来修改,缺省批处理文件是Autoexec.bat。为确定缺省批处理文件的全限定名,调用BatchGetFileName。为修改由EzBatchAddPath使用的批处理文件的名称,调用BatchSetFileName。
参数:
szLine
指定添加到文件中的文本行。除非你在nOptions 指定NOSET,该函数假定szLine是一个环境变量;在szLine被写入到缺省批处理文件中前文本”SET”被插入到字符串的前面。
    批处理文件完全不支持长路径名。如果你使用该函数来添加包含长路径名的一行,则必需先调用LongPathToShortPath把长路径名转换成它等价的短路径,然后再能把它插入到要添加至批处理文件的字符串中。
szRefKey
指定和你想要在缺省批处理文件中添加的szLine相关的参考关键字。EzBatchAddString在缺省批处理文件中查找参考关键字和在该行前面或后面放置szLine的内容,根据nOptions 的值。
nOptions
指定使用的选项;在该参数位置传递下列预定义常量之一:
BEFORE:SzLine被添加到包含szRefKey的行之前。如果szRefKey是一个空字符串,szLine被添加到文件的第一行。
AFTER:SzLine被添加到包含szRefKey的行之后。如果szRefKey是一个空字符串,szLine被添加到文件的最后一行。
REPLACE:SzLine置换文件中的一现存行。如果有多行有相同关键字存在,EzBatchAddString仅置换包含该关键字的最后一行。
NOSET:指定文本”SET”不被插入到szLine中的字符串的前面。该常量可以和BEFORE、 AFTER、 和REPLACE用或操作符(|)组合。
当你查找的参考关键字是一个DOS命令或程序名(而不是一个环境变量)时,将常量COMMAND和其它选项常量用或组合,如下所示:
    EzBatchAddString (szLine, szRefKey, AFTER | COMMAND);
返回值:
0:EzBatchAddString成功添加文本字符串到一个指定批处理文件。
< 0:EzBatchAddString未能添加文本字符串。
注解:
?EzBatchAddString 在参数szRefKey中查找合适的参考关键字。如,一个环境变量的关键字是该环境变量本身的名称。
?如果缺省批处理文件是隐藏或只读时,EzBatchAddString可能失败。
?EzBatchAddString对它修改的文件不做拷贝备分。
19.2.3  EzBatchReplace
语法:EzBatchReplace (szNewString);
说明:EzBatchReplace函数置换缺省批处理文件中的一个现存行;除非通过调用BatchSetFileName来修改,缺省批处理文件是Autoexec.bat。为确定缺省批处理文件的全限定名,调用BatchGetFileName。为修改由EzBatchAddPath使用的批处理文件的名称,调用BatchSetFileName。
参数:
szNewString
指定置换文件中一现存行的新字符串。
    批处理文件完全不支持长路径名。如果你使用该函数来添加包含长路径名的一行,则必需先调用LongPathToShortPath把长路径名转换成它等价的短路径,然后再能把它插入到要添加至批处理文件的字符串中。
返回值:
0:EzBatchReplace成功置换文本行。
< 0:EzBatchReplace未能置换文本行。
注解:
?EzBatchReplace分析szNewString并确定该字符串的关键字。然后它在缺省批处理文件中查找包含相同关键字的一行。该函数置换找到的有相同关键字的最后一行。
?一个批处理文件中的一些常用关键字是PATH、 COMSPEC、TEMP、Smartdrv.exe、Win.com、和Share.exe。
?如果缺省批处理文件是隐藏或只读时,EzBatchReplace函数可能失败。
?EzBatchReplace对它修改的文件不做拷贝备分。

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

InstallShield内部库函数全集一(20)

InstallShield内部库函数全集一(20)

20.卸载函数
下列函数执行卸载安装和/或维护安装一个已安装应用程序的所需服务。
ComponentGetTotalCost
请参阅7.9。
ComponentTransferData
请参阅7.23。
DeinstallSetReference
请参阅15.3。
DeinstallStart
请参阅15.4。
InstallationInfo
请参阅15.5。
MaintenanceStart
请参阅15.6。
RegDBGetItem
请参阅15.13。
RegDBSetItem
请参阅15.19。

InstallShield内部库函数全集一(21)

InstallShield内部库函数全集一(21)

21.版本检测函数
下列函数允许你访问存在于Windows 95及更高版本的文件中的版本信息。为使用这些函数,你需要知道有关版本资源的背景信息。查阅Microsoft Windows Programmer’s Reference, Volume 4:资源手册来更好得了解版本资源。函数说明假定你完全熟悉版本资源的概念。
   下列函数获得一个具体文件的版本,找到一个文件并得到它的版本,或查找一个存在的文件和试图安装该文件的一个更新的版本。函数可工作于压缩文件或未压缩文件。
VerCompare
比较包含版本信息的两个字符串。
VerFindFileVersion
查找指定文件并检索它的版本和位置。
VerGetFileVersion
检索一指定文件的版本。
VerSearchAndUpdateFile
用一个更新的版本置换一个存在的文件。如果指定的文件不存在,则安装更新的版本。
VerUpdateFile
用一个更新的版本置换一个存在的文件。如果指定的文件不存在,则不安装更新版本。
21.1  VerCompare
语法:VerCompare (szVersionInfo1, szVersionInfo2, nCompareFlag);
说明:VerCompare函数比较两个包含版本信息的字符串。
参数:
szVersionInfo1
以下列格式指定第一个版本字符串:
主版本号.次版本号
如果szVersionInfo1是2.1.2.0,主版本号是2.1,次版本号是2.0。
szVersionInfo2
以相同格式指定第二个版本字符串。
nCompareFlag
传递预定义常量VERSION来指定进行版本号的比较。该参数不允许其它值。
返回值:
EQUALS (2):表明两个字符串有相等值。
GREATER_THAN (0):表明第一个字符串包含的值大于第二个。
LESS_THAN (1):表明第一个字符串包含的值小于第二个。
21.2  VerFindFileVersion
语法:VerFindFileVersion (szFileName, svPath, svVersionNumber);
说明:VerFindFileVersion函数查找一个指定的文件并检索文件版本和位置。VerFindFileVersion使用下列查找算法来找到文件:
1.首先,它查找Windows 文件夹。
2.接着,Windows 系统文件夹。
3.接着,由系统变量TARGETDIR指定的文件夹。
4.接着,由环境变量PATH指定的文件夹。
5.最后, Setup.exe运行所在的文件夹。
有关Windows 系统文件夹的信息,请查看InstallShield系统变量WINSYSDIR的文档。
参数:
szFileName
指定要获得其版本的文件的非限定名。不要在该参数位置指定一个驱动器指示符或路径。
svPath
返回文件所在的文件夹的完整路径(包含驱动器指示符)。
svVersionNumber
返回下列格式的文件版本号:
主版本号.次版本号
如果szVersionNumber返回2.1.2.0,则主版本号是2.1,次版本号是2.0。
返回值:
0:表明函数成功返回版本信息。
FILE_NO_VERSION (-8):表明文件被找到但不包含版本信息。
FILE_NOT_FOUND (-2):表明文件未能找到。
注解:
?当使用VerFindFileVersion时,你可能需要为TARGETDIR设置一个值,而不是让InstallShield自动设置它。因为函数在TARGETDIR文件夹中寻找文件,你可能需要临时设置系统变量来确保VerFindFileVersion会找到该文件。如果你要这么做,在将TARGETDIR的值临时设置为另一个文件夹前使用VarSave来保存该值。
21.3  VerGetFileVersion
语法:VerGetFileVersion (szFileName, svVersionNumber);
说明:VerGetFileVersion函数检索指定文件的数值型版本信息。
参数:
szFileName
指定其数值型版本信息要被检索的文件的全限定名。
svVersionNumber
以下列格式的字符串返回文件数值型版本号信息:
主版本号.次版本号
如果szVersionNumber返回2.1.2.0,则主版本号是2.1,次版本号是2.0。
返回值:
0:表明函数成功返回版本信息。
FILE_NOT_FOUND (-2):表明指定文件未能找到。
FILE_NO_VERSION (-8):表明文件被找到但不包含版本信息。
注解:
?值得注意的是,虽然InstallShield 文件版本信息以字符串格式出现,它们所指示的一个文件的版本信息是数值型版本信息。一个文件的字符串版本信息是不能由InstallShield函数检查到和返回的。而且,你必须注意当Windows 资源管理器显示一个文件的属性时,它显示字符串版本信息,可能与文件数值型版本信息不等。因为这个原因,由VerGetFileVersion在参数svVersionNumber返回的值可能与Windows 资源管理器显示的版本信息不匹配。
?有关文件版本信息的更多情况,可查询Windows SDK或Win32 SDK。
21.4  VerSearchAndUpdateFile
语法:VerSearchAndUpdateFile (szFileName, nUpdateFlag, svInstalledFile);
说明:VerSearchAndUpdateFile函数查找指定的文件并在必要时安装该文件的一个更新版本。如果该函数找到该文件,它比较现存文件的版本号和新文件的版本号。如果现存文件是旧的,它被新文件替换。新文件必须在由系统变量SRCDIR指定的目录中。如果函数未找到一个现存文件,它就拷贝新文件到目标系统。Microsoft Windows根据文件类型决定文件安装在哪里。例如,.dlls和系统驱动器被安装在Windows 系统文件夹中。有关Windows 系统文件夹的信息,请查阅InstallShiled 系统变量WINSYSDIR的文档。
VerSearchAndUpdateFile使用下列查找算法来找到现存文件:
请参阅VerFindFileVersion中的查找算法。
参数:
szFileName
指定要安装的文件的未限定名。不要在该参数位置指定一个驱动器指示符或路径。
nUpdateFlag
指示是否该文件要被无条件更新或仅当在目标系统上找到的文件版本比你现有的文件版本旧时才更新。在该参数位置传递下列预定义常量之一:
VER_UPDATE_COND:仅当现存文件是一个旧版本时才更新它。
VER_UPDATE_ALWAYS:即使现存文件是一个更新的版本也要更新它。
svInstalledFile
返回由该函数安装的文件的全限定名。如果你要置换的文件正在使用,则文件以一个轻微差异的名称被安装到相同目录。文件以其扩展名的第一个字符为~字符来更名。例如,如果你安装文件Shell.dll并且文件是锁定的,则该文件被拷贝为Shell.~ll。文件名从该变量返回。
返回值:
FILE_INSTALLED (0):函数成功安装文件。
FILE_IS_LOCKED (-4):表明文件正在被Windows 使用并且不能被置换。新文件以一个新名字被拷贝到相同目录。
FILE_NO_VERSION (-8):表明文件被找到,但它不包含版本信息。文件更新没有执行。
FILE_RD_ONLY (-5):表明现存文件是写保护的。脚本必须在进行安装之前重新设置目标文件的只读标志,然后再尝试安装文件。
FILE_SRC_OLD (-7):表明要安装的文件有相同的日期或比先前存在的文件更早。
OUT_OF_DISK_SPACE (-6):表明函数因为目标驱动器上磁盘空间不足,未能创建文件。文件更新没有执行。
VER_DLL_NOT_FOUND (-3):表明没有找到Ver.dll。文件更新没有执行。
OTHER_FAILURE (-1):表明发生一个不确定错误。文件更新没有执行。
注解:
?使用VerSearchAndUpdateFile时,你可能需要给SRCDIR和/或TARGETDIR设置值,而不是让InstallShield自动设置它们。因为函数在SRCDIR和 TARGETDIR文件夹中查找文件,你可能需要临时重新设置这些系统变量的值来确保VerSearchAndUpdateFile会找到文件。如果你需要这么做,则在将SRCDIR 和 TARGETDIR临时设置为其它值之前使用VarSave来保存它们的值。调用VerSearchAndUpdateFile函数后,使用VarRestore来重新设置SRCDIR [...]

InstallShield内部库函数全集一(22)

InstallShield内部库函数全集一(22)

22.杂项函数
下列函数提供不同的功能,如低层硬件接口,组件创建和操作和用户输出。
Do
执行当前定义的EXIT 和 HELP处理程序。
DoInstall
运行另一个InstallShield安装程序。
Handler
指定一个对退出和帮助事件响应时转移到的标号。
ISCompareServicePack
比较安装在目标OS上的服务程序包数和指定的服务程序包数。
MessageBeep
产生一个标准警告蜂鸣。
SendMessage
发送一个消息到另一个窗口或应用程序。
Sprintf
返回一个格式化的包含一个或多个字符,数字或字符串值的字符串。
System
退出到DOS,重启Windows或重启计算机。
VarRestore
恢复上一次调用VarSave时保存的系统变量SRCDIR和 TARGETDIR 的值。
VarSave
保存系统变量SRCDIR 和 TARGETDIR的当前值。
22.1  Do
语法:Do (nOperation);
说明:退出和帮助处理程序只支持向后兼容。在一个基于事件的脚本中,你必须使用OnCanceling 和 OnHelp事件处理程序来代替。
Do函数执行当前定义的EXIT和 HELP处理程序,给你对这些处理程序更大的控制,它们通常仅当用户按下F1键(HELP), F3 键(EXIT), 或 Cancel button (EXIT)时执行。使用Do函数,你可以执行EXIT 或 HELP来响应自定义对话框事件或从内部对话框来的任何用户输入。你也可以在脚本开发多成中使用Do函数来测试你的EXIT和 HELP 处理程序。
  使用Do函数来注册排队的自注册文件。文件使用针对安装自注册文件的“批处理方法”来排队等候注册。当你调用Do(SELFREGISTRATIONPROCESS)时,InstallShield进行所有排队文件的自注册,即使它们中一个失败。
  如果Do因任何原因失败,它会返回-1。自注册失败的文件的名称保存InstallShield系统变量ERRORFILENAME中,用分号分隔。
参数:
nOperation
指定要执行的操作类型。在该参数位置传递下列预定义常量之一:
EXIT:启动Exit操作。如果没有定义EXIT处理程序,则显示缺省的Exit对话框。
HELP:启动Help操作。如果没有定义HELP处理程序,函数没有任何动作。
SELFREGISTRATIONPROCESS:注册所有已经排队等候注册的自注册文件。
返回值:
0:Do函数成功启动指定操作。
< 0:Do函数未能启动指定操作。
注解:
?Do函数允许在用户没有按下F1或F3键时当前定义的HELP和EXIT处理程序执行。Do函数也比goto语句(它可以被使用来调用HELP和EXIT处理程序标号)提供更大的通用性。Goto语句不能使用在所有的环境中,但Do函数任何时间都可以被虚拟调用。有关缺省和自定义HELP和EXIT处理程序的更多信息,参阅Handle函数。
22.2  DoInstall
语法:DoInstall (szInsFile, szCmdLine, lWait);
说明:DoInstall函数运行另一个InstallShield安装程序。这个函数被调用时,第二个安装程序立即被执行。参数lWait指定调用脚本在继续执行之前是否要等待运行的安装程序完成。
  由DoInstall调用的安装必须和运行它的安装有相同的主版本号和次版本号的InstallShield创建。如果试图用DoInstall来运行一个由任何其它InstallShield版本创建的安装程序,则都不可能成功。
  如果第二个安装程序运行另一个可执行应用程序,第一个安装程序对运行的应用程序不能控制,也没有办法监控运行应用程序的状态。
参数:
szInsFile
指定要运行的已编译脚本文件(.inx)的全限定名(包含一个驱动器指示符和完整路径)。
szCmdLine
指定一个InstallShield命令行。这儿你可以指定任何有效的启动InstallShield命令行,然而,注意,在这个环境(上下文)中不适当的-f 和-l选项,不能被使用。
lWait
指定调用脚本在继续执行之前是否要等待运行的安装程序完成。在该参数位置传递下列预定义常量之一:
NOWAIT:调用安装程序在运行第二个安装程序后立即继续。
WAIT:调用安装程序在继续前要等待被运行的安装程序终止。
返回值:
1:由DoInstall调用(以WAIT为第三个参数)的安装程序成功终止。控制程序继续原安装程序中DoInstall函数下的语句。
2:由DoInstall调用(以NOWAIT为第三个参数)的安装程序成功终止。控制程序继续原安装程序中DoInstall函数下的语句。
-1:由DoInstall调用的安装程序不能被初始化。该错误的通常原因是丢失一个所需的安装文件,任何运行第二个安装程序时发生的一般错误都会产生该返回值。
-2:由DoInstall调用(以WAIT为第三个参数)的安装程序不能找到由szInsFile指定的.inx脚本文件。
-3:由DoInstall调用(以WAIT为第三个参数)的安装程序被用户取消。
任何其它负值:发生一个未确定错误。
注解:
?第二个安装程序总是运行在由系统变量SELECTED_LANGUAGE当前值指定的语言中。即使第二个安装程序的命令行中使用-l参数,也是如此。
?注意被运行的安装程序和运行它的安装绦蛑兄挥幸桓龉蚕砦募 褪IKernel.ex_。因此,正常运行时,第二个安装程序所需的所有其它安装文件必须和Setup.inx文件位于相同文件夹中。如果不存在这些文件,安装程序不会被正确运行。
因此,建议你将由媒体向导创建的所有文件拷贝到你从中运行第二个安装程序的文件夹中。如果你从第一个安装程序的安装支持文件夹(SUPPORTDIR)中运行第二个安装程序,则建议你把这些文件放置在第一个安装程序的安装文件窗格中的适当的语言和操作系统文件夹中,因而安装初始化时,它们会被自动解压缩在第一个安装程序的支持文件夹中。
22.3  Handler
语法:Handler (nObject, Label);
说明:退出和帮助处理程序只支持向后兼容。在一个基于事件的脚本中,你必须使用OnCanceling 和 OnHelp事件处理程序来代替。
    Handler函数创建事件的自定义处理程序,如Help的加速键(F1),Cancel的加速键和Exit的加速键(F3)。如果用户按下F1键,则当前定义的HELP处理程序被执行。如果用户按下F3键,则当前定义的EXIT处理程序被执行。如果你没有用Handler函数定义自定义的HELP和EXIT处理程序,则缺省的处理程序将被执行。缺省的EXIT处理程序显示一个Exit对话框。缺省的HELP处理程序不作任何处理。
    为执行用Handler定义的自定义处理程序,当nObject事件发生时,InstallShield调用参数Label指定的唯一标号。当InstallShield达到处理程序代码中的返回语句(在标号的下一句语句)时,控制程序返回到该语句(如果处理程序标号没有被调用,该语句已经接着执行)。
  使用Handler,你可以指定EXIT或 HELP的自定义处理程序。你可以在Exit处理程序中显示MessageBox, SprintfBox, 和 AskYesNo对话框;然而,你不能显示Sd对话框。
参数:
nObject
指定转移(陷阱)事件。在该参数位置传递下列预定义常量之一:
EXIT:指定当Cancel按钮或F3加速键被按下时的自定义处理程序。如果你不定义一个处理程序,当Cancel按钮或F3加速键被按下时将显示一个缺省Exit对话框。
HELP:指定按下F1加速键时的自定义处理程序。如果你不定义一个处理程序,按下F1加速键时不作任何处理。
Label
指定当按下指定的按钮或加速键时程序必须跳转到的标号名。不要定义该标号为一个数值型值或一个字符串值。为取消一个当前定义的处理程序和重新安装缺省处理程序,给该参数传递-1。该方法在一些脚本中有用,那些脚本中安装的一个自定义处理程序只提供给特定进程,然后就转到缺省处理程序。
返回值:
0:Handler成功创建处理程序。
< 0:Handler未能创建处理程序。
注解:
?不要定义标号名为一个数值型值或一个字符串值。
?有效的加速键是F1键(Help)和F3(Exit)(它和脚本对话框中的Cancel按钮的效果一样)。
Help(F1)允许你运行Help引擎或提供其它合适的Help。当用户按下F1键,InstalShield调用当前定义的Help处理程序。你可以在Help处理程序中提供任何类型的Help函数功能。?如果你想要提供上下文有关Help,你必须跟踪你脚本中的上下文。
例如,你可以有一个包含当前上下文字符串的字符串值。然后你可以在Help处理程序的一个switch-case语句中使用该字符串值,根据该上下文字符串的值来指定适当的Help事件。你也可以测试你的Help处理例程中的全局变量nSdDialog。nSdDialog被设置为当前执行的Sd对话框的对话框ID(在InstallShield Include文件夹中的Sdrc.h中描述)。(当没有Sd 对话框执行时,nSdDialog不被定义。)因此当一个Sd对话框执行时,你可以让用户访问Sd对话框特定的Help。
?正如Help处理程序,你也可以定义并执行自定义和Sd对话框特定的EXIT处理程序。
?在脚本中,EXIT和HELP处理程序标号和它们的相关代码必须放置在结束程序语句之前。
22.4  ISCompareServicePack
语法:ISCompareServicePack (szServicePack);
说明:ISCompareServicePack函数仅和用InstallShield以前的版本创建的脚本兼容。我们建议你通过检测SYSINFO.WINNT.nServicePack 的值来确定Windows NT Service Pack数。
    ISCompareServicePack函数比较安装在Windows NT系统上的服务程序包数和由szServicePack指定的服务程序包数。
参数:
szServicePack
指定要和目标计算机上的服务程序包数比较的服务程序包数。该字符串的格式必须是"Service Pack n",n是服务程序包数。比较区分大小写。
返回值:
LESS_THAN (1):目标系统上没有安装服务程序包或其数目小于参数szServicePack传递的值。
EQUALS (2):服务程序包数匹配。
GREATER_THAN [...]

(整)DBGrid、MSFlexGrid、MSHFlexGrid控件用途及区别

DBGrid、MSFlexGrid、MSHFlexGrid控件用途及区别
DBGrid和另外两个控件最大的区别在于DBGrid允许用户修改数据,而另外两个不允许。如果你要用户修改数据,你应该DBGrid。如果只是显示数据,应该使用MSFlexGrid、MSHFlexGrid,这两个控件显示的选项更多,更好看。而MSFlexGrid和MSHFlexGrid之间的区别,主要是后者支持ADO的层次显示。如果你不使用ADO,可以考虑MSFlexGrid,否则建议使用MSHFlexGrid。

禁用或卸载 Microsoft Windows Genuine Advantage Notifications 试验版

这个办法本人用过。如果不明白请留言或加百度HI群:1028850
禁用 WGA Notifications
1.     使用具有管理权限的帐户登录到计算机。
2.     确保计算机上的 WGA Notifications 版本是试验版。试验版的版本号为 1.5.0532.x 格式。在这种情况下,您可以只卸载 527-532 版。例如,您可以卸载范围在 1.5.0527.0 和 1.5.0532.2 之间的版本。要查找 WGA Notifications 版本,请遵循以下步骤:
a.      单击“开始”,然后单击“控制面板”。
b.      双击“添加或删除程序”,找到并单击“Windows XP - 软件”,然后单击“Windows Genuine Advantage Notifications”,再单击“单击此处获得支持信息”。
c.      在“支持信息”对话框中,验证版本号,然后单击“关闭”。
3.     通过将文件扩展名改为 .old 来重命名以下文件:
?     将 %Windir%system32WgaLogon.dll 重命名为 %Windir%system32WgaLogon.old
?     将 %Windir%system32WgaTray.exe 重命名为 %Windir%system32WgaTray.old
4.     重新启动计算机。
手动卸载 WGA Notifications
1.     使用具有管理权限的帐户登录到计算机。
2.     [...]

(转)绕过WGA安装IE 7 Beta3 5450

绕过WGA安装IE 7 Beta3 5450
不能通过Windows正版增值计划(WGA)验证的朋友安装不了IE7。现放出安装绕过WGA安装IE 7 Beta 5450的方法。这个IE版本也可以通过update.exe来进行安装,不过要多一样东西才能够运行:iecustom.dll。
安装方法:
  1.右键点击下载来的IE7BETA3-WindowsXP-x86-enu.exe,有WinRAR的选择“Extract to IE7BETA3-WindowsXP-x86-enu”到一个目录,例如:C: IE7BETA3-WindowsXP-x86-enu。 
  2.打开解压缩好的文件夹,在里面打开“UPDATE”目录。
  3.复制我们提供的“iecustom.rar”覆盖原有文件。
  4.运行UPDATE.EXE 而不是“IESETUP.EXE”
下载:Internet Explorer 7 Beta 3 
下载:iecustom.rar
来源:http://www.pconline.com.cn/

——————————————————————
公告栏
———————————
留言板
———————————
看广告玩游戏送QQ币

(转)如何实现VB与EXCEL的无缝连接

如何实现VB与EXCEL的无缝连接
VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。
  一、 VB读写EXCEL表:
  VB本身提自动化功能可以读写EXCEL表,其方法如下:
  1、在工程中引用Microsoft Excel类型库:
  从"工程"菜单中选择"引用"栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择"确定"。表示在工程中要引用EXCEL类型库。
  2、在通用对象的声明过程中定义EXCEL对象:
Dim xlApp As Excel.Application
Dim xlBook As Excel.WorkBook
Dim xlSheet As Excel.Worksheet
  3、在程序中操作EXCEL表常用命令:
Set xlApp = CreateObject("Excel.Application") ‘创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open("文件名") ‘打开已经存在的EXCEL工件簿文件
xlApp.Visible = True ‘设置EXCEL对象可见(或不可见)
Set xlSheet = xlBook.Worksheets("表名") ‘设置活动工作表
xlSheet.Cells(row, col) =值 ‘给单元格(row,col)赋值
xlSheet.PrintOut ‘打印工作表
xlBook.Close (True) ‘关闭工作簿
xlApp.Quit ‘结束EXCEL对象
Set xlApp = Nothing ‘释放xlApp对象
xlBook.RunAutoMacros (xlAutoOpen) ‘运行EXCEL启动宏
xlBook.RunAutoMacros (xlAutoClose) ‘运行EXCEL关闭宏
  4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对 EXCEL进行操作。但在EXCEL操作过程中关闭EXCEL对象时,VB程序无法知道,如果此时使用EXCEL对象,则VB程序会产生自动化错误。形成 VB程序无法完全控制EXCEL的状况,使得VB与EXCEL脱节。
  二、 EXCEL的宏功能:
  EXCEL提供一个Visual Basic编辑器,打开Visual Basic编辑器,其中有一工程属性窗口,点击右键菜单的"插入模块",则增加一个"模块1",在此模块中可以运用Visual Basic语言编写函数和过程并称之为宏。其中,EXCEL有两个自动宏:一个是启动宏(Sub Auto_Open()),另一个是关闭宏(Sub Auto_Close())。它们的特性是:当用EXCEL打含有启动宏的工簿时,就会自动运行启动宏,同理,当关闭含有关闭宏的工作簿时就会自动运行关闭宏。但是通过VB的自动化功能来调用EXCEL工作表时,启动宏和关闭宏不会自动运行,而需要在VB中通过命令 xlBook.RunAutoMacros [...]

(转)如何导入 Excel 数据多于 256 个字段或列

如何导入 Excel 数据多于 256 个字段或列
概要
MicrosoftExcel 表格有 256 列 (列IV)。 因此, Excel 无法接受数据与每个工作表上记录超过 256 个字段。 其他字段当您尝试从数据库或文本文件含有每个记录, 多于 256 字段手动导入数据被截断从记录。
可以使用 Visual Basic for Applications 宏可占用了多张导入数据 本文提供示例宏, 至多 51

1.
启动或切换到 Excel。

2.
在 工具 菜单, 指向 宏 , 然后单击 VisualBasic 编辑器 。

3.
在 插入 菜单上, 单击 [...]