InstallShield内部库函数之3 信息函数
下列信息函数提供操作环境中有效资源的数据:磁盘空间,内存和操作模式:
GetDiskSpace
返回指定磁盘的有效字节数(未使用的)(最高为2GB)。
GetDiskSpaceEx
以bytes、kilebytes、megabytes或gigabytes为单位返回一个磁盘的空闲空间,。
GetEnvVar
返回一个环境变量的当前值。
GetExtents
返回屏幕大小。
GetMemFree
返回运行在Microsoft Windows下的一个应用程序的可用内存。
GetSystemInfo
检索系统信息。
GetValidDrivesList
返回目标系统中所有有效驱动器。
GetWindowHandle
返回主安装窗口的句柄。
Is
提供文件和路径检查服务,查找一个数学协处理器,检测 Windows NT下的管理状态,确定Microsoft Windows是否从网络的共享版本运行。
3.1 GetDiskSpace
语法:GetDiskSpace (szDrive);
说明:GetDiskSpace函数返回指定驱动器上的空闲磁盘空间。
参数:
szDrive
指定一个驱动器指示符(驱动器字符后随一个冒号)。你也可在该参数位置指定一个通用导航计算机路径。
返回值:
XXXX:在指定驱动器上的空闲字节数。最大的返回值是2GB。超过2GB的空闲空间也返回2GB。当你需要检测超过2GB的空闲空间时需调用GetDiskSpaceEx。
< 0:表明GetDiskSpace未能获得空闲磁盘空间值。
3.2 GetDiskSpaceEx
语法:GetDiskSpaceEx (szDrive, nUnits);
说明:GetDiskSpaceEx函数返回指定驱动器的空闲磁盘空间值。传递给nUnits的值确定GetDiskSpaceEx的返回值是以bytes、 kilobytes、 megabytes 或 gigabytes度量。
参数:
szDrive
指定一个驱动器指示符(驱动器字符后随一个冒号)。用户也可在该参数位置指定一个通用导航计算机(UNC)路径。
nUnits
传递下列预定义常量之一来指明度量单位:
BYTES:指明GetDiskSpaceEx须返回空闲byte数。
KBYTES:指明GetDiskSpaceEx须返回空闲kilobyte数。
MBYTES:指明GetDiskSpaceEx须返回空闲megabyte数。
GBYTES:指明GetDiskSpaceEx须返回空闲gigabyte数。
返回值:
XXXX:在指定驱动器上的空闲bytes、kilobytes、megabytes或 gigabytes数,度量单位视nUnits值而定。
< 0:表明GetDiskSpaceEx未能获得空闲磁盘空间值。
3.3 GetEnvVar
语法:GetEnvVar (szParameter, svValue);
说明:GetEnvVar函数检索一个环境变量的当前值。
参数:
szParameter
指定其值要被检索的环境变量的名称。
svValue
返回该环境变量的当前值。
返回值:
0:表明函数检索到环境变量的值。
< 0:表明函数未能检索到环境变量的值。
注解:
·InstallShield没有提供一个改变一个环境变量值的机制。在Microsoft Windows 3.x 和 95环境中,建议用户不要改变环境变量值。如果用户需要设置一个新的环境变量,在Autoexec.bat文件中设置然后重启系统。对于Windows NT,查看如何在Windows NT下设置环境变量。
3.4 GetExtents
语法:GetExtents (nvDx, nvDy);
说明:GetExtents函数检索屏幕大小。屏幕宽以像素点为单位返回给nvDx,高以像素点为单位返回给nvDy。如:一个标准的VGA监控器返回nvDx为640,nvDy为480。
参数:
nvDx
以像素点为单位返回屏幕的宽。
nvDy
以像素点为单位返回屏幕的高。
返回值:
0:表明函数成功检索到屏幕的大小。
< 0:表明函数未能检索到这些值。
3.5 GetMemFree
语法:GetMemFree ( );
说明:GetMemFree函数返回运行在Microsoft Windows下的一个应用程序可用的内存大小。因为Microsoft Windows是一个虚拟内存系统,该函数不会返回实际物理内存(称为RAM)而是Windows应用程序可用的内存。要确定目标系统上可用的实际物理内存大小,可调用GetSystemInfo。
参数:
GetMemFree不带参数。以空参数表调用函数,如下所示:
GetMemFree();
返回值:
XXXX:XXXX是应用程序可用的空闲内存的字节数。
< 0:GetMemFree未能返回空闲内存的大小。
注解:
·脚本每执行一个函数,InstallShield返回一个数值来指示函数运行结果。如果你要在该脚本后面部分要用到该函数的返回值,则将该值赋给一个数值型变量。
3.6 GetSystemInfo
语法:GetSystemInfo (nItem, nvResult, svResult);
说明:GetSystemInfo函数检索目标系统的信息。
参数:
第一个参数,nItem,用来指定要检索的信息的类型。参照下面这个你可传递给该参数的常量列表来检索系统信息。注意使用特定的常量时(如DISK_TOTALSPACE_EX),你必须在调用该函数前为参数nvResult和/或svResult指定附加信息。
系统信息返回给nvResult和/或svResult。数值型数据返回给nvResult。字符串型数据返回给svResult。下表列出了你可以传递给nItem的各个常量的返回值类型。
--------------------------------------------------------------------------------
nItem:BOOTUPDRIVE
nvResult:启动驱动器的 ID,1=A:,2=B:,3=C:。可以通过给该数值加上64(十进制)将该数字转换为相应的驱动器字符,然后给该值设置一个字符串变量。使用下面的语法进行转换:
svResult[0]=64+nvResult;
svResult:返回启动驱动器的驱动器指示符(驱动器字符后随一个冒号)。
--------------------------------------------------------------------------------
nItem:CDROM
nvResult: TRUE或FALSE指示CD ROM是否可用。
SvResult: N/A
--------------------------------------------------------------------------------
nItem: COLORS
nvResult:返回用户系统可用颜色数目。结果从对目标系统的视频驱动器检索而得,而不是从视频卡得到。如果该卡支持256色但驱动器只能处理16色,返回的颜色值是16。
svResult::N/A
--------------------------------------------------------------------------------
nItem:CPU
nvResult:返回下列常量之一:
IS_UNKNOWN 用户CPU未知。
IS_386 用户有一个386处理器。
IS_486 用户有一个486处理器。
IS_PENTIUM 用户有一个PENTIUM 处理器。
IS_ALPHA 用户有一个ALPHA处理器。
SvResult: N/A
--------------------------------------------------------------------------------
nItem: DATE
nvResult: N/A
svResult: svResult:当前系统时间格式为MM-DD-YYYY。在月和日域的首零被删除。
--------------------------------------------------------------------------------
nItem: DISK_TOTALSPACE
nvResult::返回由svResult指定的磁盘驱动器的总容量。最大返回值为2GB。总容量大于2GB的仍返回2GB。
SvResult:驱动器字符。注意该参数是传递给该函数的;也就是说,你必须在调用GetSystemInfo前给svResult赋值。还要注意你必须在驱动器字符后加上冒号;否则函数执行会失败。你也可以在该参数位置指定一个通用导航计算机(UNC)路径。
--------------------------------------------------------------------------------
nItem: DISK_TOTALSPACE_EX
nvResult: 指定度量单位;在该参数位置传递下列预定义的常量之一:BYTES, KBYTES, MBYTES 或GBYTES。在svResult返回指定磁盘驱动器的总容量。
SvResult:驱动器字符。注意该参数是传递给该函数的;也就是说,用户必须在调用GetSystemInfo前给svResult赋值。还要注意必须在驱动器字符后加上冒号;否则函数执行会失败。用户也可以在该参数位置指定一个通用导航计算机(UNC)路径。
--------------------------------------------------------------------------------
nItem: DRIVE
nvResult::在svResult返回指定驱动器的类型。将返回下列常量之一:
IS_UNKNOWN -目标驱动器未知。
IS_REMOVABLE -目标驱动器是软盘驱动器。
IS_FIXED -目标驱动器是硬盘驱动器。
IS_CDROM -目标驱动器是光盘驱动器。
IS_REMOTE -目标驱动器是一网络驱动器。
SvResult:驱动器字符后随冒号。注意该参数是传递给该函数的;也就是说,用户必须在调用GetSystemInfo前给svResult赋值。用户也可以在该参数位置指定一个通用导航计算机(UNC)路径。
--------------------------------------------------------------------------------
nItem: EXTENDEDMEMORY
nvResult: NvResult:返回安装在机器上的内存大小。由于操作系统的限制,返回值可能会和安装在机器上的实际物理内存大小稍有差异。该值通常比实际值小100K。注意返回值以kb来度量。
SvResult: N/A
--------------------------------------------------------------------------------
nItem: LANGUAGE
nvResult: nvResult:该参数返回目标系统的InstallShield语言常量。返回的常量可以用来确定使用ComponentFilterLanguage函数的安装中装入哪些语言专用文件组。
For information about determining the default language of the target system, click here.
InstallShield International支持21种语言,Windows支持100多种语言。如果你想根据nvResult值筛选文件组,则必须使用一个开关语句根据该函数的返回常量来确定要使用的InstallShield语言标识号常量。带该参数时该函数的性能高度依赖于系统。
SvResult:该参数返回和nvResutl返回的语言常量等价的语言名称字符串。
--------------------------------------------------------------------------------
nItem:OS
nvResult:返回目标操作系统平台。返回下列常量之一:
IS_WINDOWSNT - 操作系统是Windows NT。
IS_WINDOWS9X - 操作系统是Windows 95或Windows 98。为确定是哪个,带WINMINOR调用GetSystemInfo来检测监控器版本。如果小于10,则操作系统是Windows 95;否则是Windows 98。
SvResult:N/A
--------------------------------------------------------------------------------
nItem: PARALLEL
nvResult: 返回有效的物理并行口数目。
SvResult: N/A
--------------------------------------------------------------------------------
nItem: SERIAL
nvResult: 返回有效的物理串行口数目。
SvResult: N/A
--------------------------------------------------------------------------------
nItem: TIME
nvResult: N/A
svResult: 以HH:MM:SS格式返回当前系统时间。
--------------------------------------------------------------------------------
nItem: VIDEO
nvResult:nvResult:返回安装的视频适配器类型。(InstallShield不能检测CGA或单色视频驱动器)。返回下列常量之一:
IS_UNKNOWN -未知的用户视频适配器。
IS_EGA - EEGA分辨率。
IS_VGA - VGA分辨率。
IS_SVGA - SVGA(800×600)分辨率。
IS_XVGA - XVGA(1024×768)分辨率。
IS_UVGA -大于1024×768分辨率。
SvResult:N/A
--------------------------------------------------------------------------------
nItem: VOLUMELABEL
nvResult: N/A
svResult: 传递你要检索其卷标号的驱动器的驱动器指示符(驱动器字符后随冒号)。该参数返回指定的驱动器的卷标号。如果该驱动器没有卷标号,返回空字符串。
--------------------------------------------------------------------------------
nItem: WINMAJOR
nvResult:返回Windows的主版本号。
SvResult:以##.###格式返回一个字符串,指明Windows的主、次版本号。
--------------------------------------------------------------------------------
nItem: WINMINOR
nvResult:返回Windows的次版本号。
SvResult:以##.###格式返回一个字符串,指明Windows的主、次版本号。
--------------------------------------------------------------------------------
返回值:
0:表明函数成功返回指定信息。
< 0:表明函数未能返回指定信息。
3.7 GetValidDrivesList
语法:GetValidDrivesList (listID, nDriveType, nMinDriveSpace);
说明:GetValidDrivesList函数检索目标系统的符合特定条件的所有驱动器列表。这个条件包括驱动器类型和驱动器的最小空间数。如果一个驱动器未关闭,该驱动器名仍加入列表。
你可以在驱动器罗列之前指定要查找的驱动器的类型(nDriveType)和可用的最小磁盘空间(nMinDriveSpace)。
参数:
listID
返回有效驱动器字符的一个列表。由listID标识的字符串列表必须通过对ListCreat的调用已被初始化。
nDriveType
指定要查找的驱动器的类型。在该参数位置传递下列预定义的常量之一:
-1:查找所有驱动器类型。
FIXED_DRIVE:仅查找硬盘驱动器。
REMOTE_DRIVE:仅查找远程驱动器。远程驱动器通常位于网络。
REMOVEABLE_DRIVE:仅查找可卸式驱动器。软盘驱动器是可卸式驱动器。
CDROM_DRIVE:仅查找光盘驱动器。
nMinDriveSpace
指定包括在返回列表中的驱动器所必须有的最小的空闲磁盘空间的字节数。如果nMinDriveSpace小于0,GetValidDrivesList将不检测驱动器的最小空间。这对软盘驱动器有用。
返回值:
0:函数成功检索所要求的列表。
< 0:函数未能检索到要求的序列。
注解:
·网络映射驱动器也可作为远程驱动器返回。该函数不会返回所有网络上的驱动器,仅返回那些标识为映射驱动器的驱动器。
3.8 GetWindowHandle
语法:GetWindowHandle (nHwndFlag);
说明:GetWindowHandle函数得到安装主窗口的句柄。
参数:
nHwndFlag
指定InstallShield主窗口的窗口句柄。在该参数位置传递预定义的常量HWND_INSTALL。
返回值:
X:X是窗口句柄。
< 0:函数未能检索到句柄。
3.9 Is
语法:Is (nIsFlag, szIsData);
说明:Is函数检索脚本中需要的公用信息。
参数:
nIsFlag
指定要检索的信息类型。在该参数位置传递下列预定义的常量之一:
DIR_WRITEABLE:能否写到由szIsData指定的目录?
FILE_EXISTS:由szIsData指定的文件是否存在?
FILE_LOCKED:文件是否锁定?
FILE_WRITEABLE:能否写到由szIsData指定的文件?
MATH_COPROCESSOR:在目标系统是否存在一个数学协处理器?
PATH_EXISTS:由szIsData 指定的路径是否存在?
USER_ADMINISTRATOR:当目标操作系统是Windows NT时,当前用户是否拥有管理员特权?运行于Windows 95或更高版本下的安装程序,Is通常在参数nFlag为 USER_ADMINISTRATOR时返回TRUE
VALID_PATH:由szIsData指定的路径是否一个合法路径?它不确认路径的存在与否,而仅检测它的语法。当你检索从用户处得到的路径信息时可以使用该常量。然后该函数会检测输入的路径信息是否正确。
WINDOWS_SHARED:Microsoft Windows是否从一个网络运行共享版本?
szIsData
指定信息,该信息依赖于传递给nIsFlag的常量,如下所示:
若nIsFlag是DIR_WRITEABLE,szIsData指定要被检测的全限定路径。
若nIsFlag是FILE_EXISTS,szIsData指定全限定文件名。
若nIsFlag是FILE_LOCKED,szIsData指定全限定文件名。
若nIsFlag是FILE_WRITEABLE,szIsData指定全限定文件名。
若nIsFlag是MATH_COPROCESSOR,szIsData指定的内容被忽略。
若nIsFlag是PATH_EXISTS,szIsData指定全限定路径。
若nIsFlag是USER_ADMINISTRATOR,szIsData被忽略。
若nIsFlag是VALID_PATH,szIsData指定全限定路径。
若nIsFlag是WINDOWS_SHARED,szIsData被忽略。
返回值:
TRUE (1):表明答复为真。
FALSE (0):表明答复为假。
< 0:函数未能答复问题。
注解:
·常量WINDOWS_SHARED仅能应用于Microsoft Windows版本。一个Microsoft Windows的共享版本安装于网络且有可被许多用户共享的公用文件。