installshield包含300多个内部库函数,用户可在安装脚本中调用它们来创建程序组,操作文件夹,处理目录,监督安装状态,创建对话框,操作文件及其它更多工作。因为installshield脚本编译器已经识别这些库函数名,所以用户在使用它们之前无须说明。 为了成功调用一个内部库函数,用户必须知道库函数名称及使用格式。installshield 库函数参阅附录d库函数索引。在接下去的几节中我们将对其中主要的一些库函数作详细介绍。 在这里先简单向用户描述一下库函数的构成。 如:askyesno是一个库函数,它在对话框中显示一个询问,然后等待最终用户通过点击按扭来响应,yes或no。askyesno格式如下: askyesno(szquestion,ndefault)。这个格式显示了正确的函数名,括号中显示了函数的参数列表。在函数的详细说明帮助中,每个参数用匈牙利标记法表示,指出每个参数位置上可被接受的数值类型。askyesno要求两个参数:第一个是字符类型,第二个是数值型。与c语言一样,installshield区分大小写,因此用户要严格注意库函数名称中大写字母。在用户的脚本中使用任何库函数,传递的参数数目一定要正确,并且要确保传递的每个参数值符合该位置规定的类型。如果用户传递了错误的参数数目或者在任何一个或几个参数位置传递了不相符的数值类型,脚本都不能被编译。 注意: 作为参数传递的字符串必须包括在单引号或者双引号内。 如:"please wait while files are transferred",或'this is a string'或"c:\\myfolder\\myfile.txt" .installshield 不允许将一个赋值语句作为参数传递。另外,用户在一个函数变量中不能使用&&或||运算符。 由一个调用传递给一个函数的可变长字符串变量在被调用函数中不能自变长。如果函数试图赋一个值,该值的长度超过参数的现有长度,则会发生401运行错误。为避免这个错误,在调用将字符串传递给一个函数时就要为字符串指定一个特定长度。 下列信息函数提供操作环境中有效资源的数据:磁盘空间,内存和操作模式: 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的共享版本安装于网络且有可被许多用户共享的公用文件。 下列函数处理自定义对话框进程: 你使用一个资源编辑器来创建对话框并可用这些函数把它插入脚本中。 任何你可以创建的windows对话框都可以被使用在一个安装脚本中。对话框可以有单行或多行编辑框,单个或多个选择列表框,组合框,单选钮,复选框和下按按扭作为标准控件。对于更复杂的控件,则提供高级函数,如cmdgethwnddlg, loword和hiword。 cmdgethwnddlg: 检索一个对话框的句柄。 ctrlclear: 删除一个编辑、静态、列表框或组合框控件。 ctrldir: 用一个目录列表或一个文件列表来填充一个列表框或组合框。 ctrlgetcursel: 从一个列表框或组合框中选择项目。 ctrlgetmletext: 从一个多行编辑或静态区域中检索文本。 ctrlgetmultcursel: 从一个多选列表框中返回选定项目。 ctrlgetstate: 从一个对话框中检索一个单选扭,复选框或下按按扭控件的状态。 ctrlgetsubcommand: 检索在一个waitondialog函数调用后对控件执行的操作。 ctrlgettext: 从一个编辑区,一个静态区或一个组合框的编辑区中检索文本。 ctrlpgroups: 检索在目标系统上存在的程序组列表。 ctrlselecttext: 选择显示在一个编辑区中文本。 ctrlsetcursel: 在一个列表框或组合框中查找和设置当前选择。 ctrlsetfont: 指定对话框中一个控件的字体。 ctrlsetlist: 把一个列表的内容放至一个列表框或组合框中。 ctrlsetmletext: 设置在一个多行编辑区中的文本。 ctrlsetmultcursel: 设置在一个多选列表框中的当前选择。 ctrlsetstate: 设置一个复选框,单选钮或下按按扭的当前状态。 ctrlsettext: 设置在一个编辑区,一个静态文本区或一个组合框的编辑区中的文本。 definedialog: 用installshield注册一个自定义对话框。 enddialog: 关闭一个自定义对话框。 ezdefinedialog: 用installshield注册一个自定义对话框。 getfont: 检索一个字体的处理程序。 hiword: 从一个32位的整数中检索高位字。 loword: 从一个32位的整数中检索低位字。 releasedialog: 释放一个对话框的关联内存。 sdmakename: sdmakename为一个自定义对话框创建一个节名。该节名在向一个.iss文件写或从一个.iss文件中读时使用,.iss文件由installshield silent使用。 silentreaddata: 指示installshield silent为一个自定义对话框读取.iss文件对话数据。 silentwritedata: 指示installshield silent为一个自定义对话框写对话数据到.iss文件。 waitondialog: 显现一个自定义对话框。 6.1 cmdgethwnddlg 语法:cmdgethwnddlg (szdialogname); 说明:cmdgethwnddlg函数检索由szdialogname标识的对话框的窗口句柄。该对话框必须已经由ezdefinedialog (或definedialog)定义,并以通过调用waitondialog而被初始化。 参数: szdialogname 指定已经由ezdefinedialog (或definedialog)定义的对话框的名称。 返回值: > 0:由szdialogname指定的对话框的窗口句柄。 < 0:cmdgethwnddlg未能检索到句柄。请确认szdialogname指向的是一个已经正确定义并已被初始化的对话框。 注解: 当一个对话框用waitondialog函数初始化时,则为它分配一个窗口句柄;该句柄只和该对话框关联,直到一个对enddialog的调用来关闭该对话框。如果你调用waitondialog来打开在你脚本中先前已经被打开和关闭的一个对话框,你必须再次调用cmdgethwnddlg来得到新句柄。老的句柄不再有效。 通常,cmdgethwnddlg在一个自定义对话框的dlg_init例程中被调用。该对话框的句柄被赋给hwnd变量来供其它需要它的函数使用。 6.2 ctrlclear 语法:ctrlclear (szdialogname, ncontrolid); 说明:ctrlclear函数清除各种控件的内容;它删除一个自定义对话框中一个单行或多行编辑区,静态文本区,单或多选列表框或一个组合框的编辑区的内容。 参数: szdialogname 指定包含有要被删除控件的对话框的名称。 ncontrolid 指定由szdialogname标识的对话框的控件id。 返回值: 0:ctrlclear成功删除指定控件的内容。 < 0:ctrlclear未能删除对话框的内容。 6.3 ctrldir 语法:ctrldir (szdialogname, ncontrolid, szdir, nitems); 说明:ctrldir函数用一个与szdir指定的路径或文件名相匹配的文件列表来填充一个列表框或一个组合框控件。你可以在列表中包括文件名,子目录名和磁盘驱动器名。ctrldir函数仅工作于自定义对话框。 参数: szdialogname 指定一个对话框的名称。 ncontrolid 指定列表框或组合框控件的资源id。 szdir 指定全限定路径或全限定文件名,可以包括通配符。 nitems 指定在控件中显示的列表的类型。在该参数位置传递下列预定义常量之一。为包含多个元素类型,将这些常量用按位或操作符(|)组合起来: dlg_dir_file:创建一个与文件说明szdir匹配的文件的列表。 dlg_dir_directory:创建一个存在于路径说明szdir中的子目录的列表。 dlg_dir_drive:创建一个驱动器列表。 返回值: 0:ctrldir成功填充一个对话框中指定的控件。 < 0:ctrldir未能填充指定控件。 6.4 ctrlgetcursel 语法:ctrlgetcursel (szdialogname, ncontrolid, svtext); 说明:ctrlgetcursel函数从一个自定义对话框中的一个单选列表框或组合框控件中检索当前选定的项目。调用ctrlgetmultcursel来从多选列表框中检索项目。 参数: szdialogname 指定包含要被检索的项目的自定义对话框的名称。 ncontrolid 指定单选框或组合框控件的资源id。 svtext 返回ncontrolid指定的控件中当前被选定的项目。 返回值: 0:ctrlgetcursel成功检索对话框中当前被选定的项目。 < 0:ctrlgetcursel未能检索被选定的项目。 6.5 ctrlgetmletext 语法:ctrlgetmletext (szdialogname, ncontrolid, listid); 说明:ctrlgetmletext函数检索一个自定义对话框中一个多行编辑控件的内容。installshield把多行编辑区中的每行放到由listid标识的一个字符串列表中。调用ctrlgettext来检索一个单行编辑区控件的内容。 参数: szdialogname 指定一个自定义对话框的名称,该对话框包含了其内容要被检索的多行编辑控件。 ncontrolid 指定多行编辑控件的资源id。 listid 返回ncontrolid标识的编辑区中的行的一个字符串列表。由listid标识的字符串列表必须已经通过调用listcreate而被初始化。 返回值: 0:ctrlgetmletext成功检索一个多行编辑区的内容。 < 0:ctrlgetmletext未能检索控件的内容。 6.6 ctrlgetmultcursel 语法:ctrlgetmultcursel (szdialogname, ncontrolid, listid); 说明:ctrlgetmultcursel函数检索一个多选列表框控件中的当前被选定的行。多选列表框的每个被选定行被放到由listid标识的一个字符串列表中。为从一个单选列表框控件中检索被选定的文本,调用ctrlgetcursel。ctrlgetmultcursel只使用于自定义对话框。 参数: szdialogname 指定一个自定义对话框的名称,该对话框包含了其内容要被检索的列表框控件。 ncontrolid 指定多行编辑控件的资源id。 listid 返回由ncontrolid标识的列表框中的行。由listid标识的字符串列表必须已经通过调用listcreat而被初始化。 返回值: 0:ctrlgetmultcursel成功检索当前选定项目。 < 0:ctrlgetmultcursel未能检索项目。 6.7 ctrlgetstate 语法:ctrlgetstate (szdialogname, ncontrolid); 说明:ctrlgetstate函数得到一个自定义对话框中一个复选框或单选钮的当前状态。 参数: szdialogname 指定包含该控件的对话框的名称。 ncontrolid 指定其状态要被检索的复选框或单选钮的资源id。 返回值: button_checked (-1001):复选框或单选钮被选定。 button_unchecked (-1002):复选框或单选钮未被选定。 dlg_err (-1):ctrlgetstate不能确定控件状态。 6.8 ctrlgetsubcommand 语法:ctrlgetsubcommand (szdialogname); 说明:ctrlgetsubcommand函数检索对一个自定义对话框中的一个控件所执行的操作。例如,ctrlgetsubcommand可以告诉你用户单击或双击了一个列表框或组合框控件。它也可以告诉你一个编辑区的内容被修改了。 高级开发人员可以调用cmdgethwnddlg来处理附加信息。 参数: szdialogname 指定自定义对话框的名称。 返回值: editbox_change (-1007):编辑框的内容已经改变。 listbox_enter (-1008):用户双击了一个列表框项目。 listbox_select (-1009):用户单击了一个列表框项目。 6.9 ctrlgettext 语法:ctrlgettext (szdialogname, ncontrolid, svtext); 说明:ctrlgettext函数从一个自定义对话框中的一个编辑区,静态文本区或按扭控件中检索文本。为从多行编辑区控件中检索文本,调用ctrlgetmletext。 参数: szdialogname 指定一个对话框的名称,该对话框包含了其文本要被检索的区域或控件。 ncontrolid 指定编辑区,静态文本区或下按按扭控件的资源id。 svtext 从由ncontrolid标识的控件或区域中返回的文本。 返回值: 0:ctrlgettext成功检索控件的内容。 < 0:ctrlgettext未能检索内容。 6.10 ctrlpgroups 语法:ctrlpgroups (szdialogname, ncontrolid); 说明:ctrlpgroups函数将一个现存程序文件夹列表放到一个列表框或组合框控件中。该函数仅工作于自定义对话框。 参数: szdialogname specifies the name of a custom dialog box that contains the control to use. 指定自定义对话框的名称,该对话框包含要使用的控件。 ncontrolid 指定一个列表框或组合框控件的资源id。 返回值: 0:ctrlpgroups成功把指定的程序文件夹列表放到控件中。 < 0:ctrlpgroups未能把指定的程序文件夹列表放到控件中。 6.11 ctrlselecttext 语法:ctrlselecttext (szdialogname, ncontrolid); 说明:ctrlselecttext函数选定一个编辑区或一个组合框的编辑区中的所有文本。如果该控件是一个多行编辑区,该函数选定所有行的所有文本。该函数仅工作于自定义对话框。 参数: szdialogname 指定一个有效对话框的名称,该对话框包含要被选定的编辑区。 ncontrolid 指定要被选定的编辑区或组合框控件的资源id。 返回值: 0:ctrlselecttext成功选定了区域中的所有文本。 < 0:ctrlselecttext未能选定文本。 6.12 ctrlsetcursel 语法:ctrlsetcursel (szdialogname, ncontrolid, sztext); 说明:ctrlsetcursel函数在指定的列表框或组合框控件中查找一个字符串。如果找到,ctrlsetcursel选定(高亮显示)该项目。对多选列表框和组合框则调用ctrlsetmultcursel。ctrlsetcursel函数仅使用于自定义对话框。 参数: szdialogname 指定一个有效自定义对话框的名称,该对话框包含要被查找的控件。 ncontrolid 指定包含查找字符串的控件的资源id。 sztext 指定查找字符串。如果该字符串被找到,则被选定(高亮显示)。 返回值: 0:ctrlsetcursel成功找到和选定了指定的字符串。 < 0:ctrlsetcursel未能找到和选定指定的字符串。 6.13 ctrlsetfont 语法:ctrlsetfont (szdialogname, hfont, ncontrolid); 说明:ctrlsetfont函数指定一个自定义对话框中一个控件的字体。在对话框消息处理循环中的dlg_init例程中调用该函数。 参数: szdialogname 指定一个有效对话框的名称。 hfont 指定已经通过调用getfont而被创建的一个字体的处理程序。 ncontrolid 指定其字体要被设置的控件的资源id。为给对话框中的所有控件设置字体,给该参数传递预定义常量allcontrols。 返回值: 0:ctrlsetfont成功在一个对话框中设置所要求的字体。 < 0:ctrlsetfont未能在一个对话框中设置所要求的字体。 6.14 ctrlsetlist 语法:ctrlsetlist (szdialogname, ncontrolid, listid); 说明:ctrlsetlist函数把一个字符串列表中的内容放到指定的单或多选列表框或组合框控件中。任何原先存在的内容被包含在listid中的项所置换。installshield将字符串列表中的每个元素放到列表框或组合框控件中的每个元素中。 参数: szdialogname 指定包含列表框或组合框的对话框的名称。 ncontrolid 指定列表框或组合框的资源id。 listid 指定一个字符串列表的名称,该列表包含要被拷贝到列表框或组合框控件中的元素。 返回值: 0:ctrlsetlist成功将字符串的内容放到控件中。 < 0:ctrlsetlist未能将字符串的内容放到控件中。 6.15 ctrlsetmletext 语法:ctrlsetmletext (szdialogname, ncontrolid, listid); 说明:ctrlsetmletext函数设置一个多行编辑框控件中的文本。installshield 将listid中的每个字符串分别放进该多行编辑框控件中。该函数仅使用于自定义对话框。 参数: szdialogname 指定一个对话框的名称。 ncontrolid 指定一个对话框中的多行编辑框控件的资源id。 listid 指定一个有效字符串列表的名称 ,该列表包含了要被拷贝到多行编辑控件中的元素。 返回值: 0:ctrlsetmletext将文本设置到控件中。 < 0:ctrlsetmletext未能设置控件中的文本。 6.16 ctrlsetmultcursel 语法:ctrlsetmultcursel (szdialogname, ncontrolid, sztext, nselectflag); 说明:ctrlsetmultcursel函数查找指定的多选列表框或组合框控件。如果nselectflag 被设置为true,ctrlsetmultcursel选定(高亮显示)被找到的项目。该函数仅使用于自定义对话框。 参数: szdialogname 指定一个自定义对话框的名称。 ncontrolid 指定对话框中多选列表框或组合框控件的资源id。 sztext 指定查找字符串。 nselectflag 指示当ctrlsetmultcursel找到一个项目时是否要高亮显示它。在该参数位置传递下列预定义常量之一: true:表明该项目要被高亮显示。 false:表明该项目不被高亮显示。 返回值: 0:ctrlsetmultcursel在控件中找到文本,并根据nselectflag所指示的高亮显示它或不高亮显示它。 < 0:ctrlsetmultcursel未能在控件中找到文本。 6.17 ctrlsetstate 语法:ctrlsetstate (szdialogname, ncontrolid, nstate); 说明:ctrlsetstate函数设置一个自定义对话框中的一个复选框或单选钮的当前状态。当你用一个资源编辑器或对话框编辑器创建单选钮和复选框时,你可以设置它们的某些特性。如果你因一个按扭的性能遇到了困难,则在编辑器中检查该控件的特性。 参数: szdialogname 指定一个对话框的名称,该对话框包含复选框或单选钮控件。 ncontrolid 指定复选框或单选钮控件的资源id。 nstate 指定按扭控件的新状态。在该参数位置传递下列预定义常量之一: button_checked:设置按扭状态为checked。 button_unchecked:设置按扭状态为unchecked。 返回值: 0:ctrlsetstate成功设置复选框或单选钮控件的状态。 < 0:ctrlsetstate未能设置该控件的状态。 6.18 ctrlsettext 语法:ctrlsettext (szdialogname, ncontrolid, sztext); 说明:ctrlsettext函数设置一个自定义对话框中一个单行编辑区,静态文本区或按扭控件的文本。为设置多行编辑区中的文本,调用ctrlsetmletext。 参数: szdialogname 指定一个对话框的名称。 ncontrolid 指定其中的文本要被设置的单行编辑区,静态文本区或按扭控件的资源id。 sztext 指定放到控件中的文本。 返回值: 0:ctrlsettext成功设置控件中的文本。 < 0:ctrlsettext未能设置控件中的文本。 6.19 definedialog 语法:definedialog (szdialogname, hinstance, szdllname, ndialogid, szdialogid, nreserved, hwndowner, lmsglevel); 说明:definedialog函数定义一个自定义对话框。当你需要指定一个其属性不能由ezdefinedialog指定的对话框的属性时,调用该函数而不是ezdefinedialog。注意definedialog不显示自定义对话框。为显示一个自定义对话框,你必须调用waitondialog。 参数: szdialogname 指定你要定义的自定义对话框的名称。该名称标识该对话框并使用在所有随后对自定义对话框函数的调用中。该对话框的名称是区分大小写的,你必须完全按照你在该参数指定的那样来使用它。 hinstance 指定对话框驻留其中的dll的实例句柄。如果你在szdllname指定dll的全限定名,你可以将该参数指定为0。为得到一个dll的实例句柄,调用microsoft windows api loadlibrary。 szdllname 指定包含对话框资源的dll文件的全限定名。如果你不指定一个路径,installshield在windows 文件夹中查找该dll。如果在那儿没有找到,installshield查找在查找路径中指定的文件夹。如果你用参数hinstance指定dll的实例句柄,你可以给该参数传递一个空字符串。当对话框位于_isuser.dll时,你可以为该参数指定一个空字符串。如果该参数指定为一个空字符串,installshield将自动检测_isuser.dll。 ndialogid 如果你使用一个数字(而不是一个字符串)来标识对话框资源时,该参数指定资源id。该参数只在szdialogid是一个空字符串时被使用。建议使用该参数而不是szdialogid来标识对话框资源。 szdialogid 如果你使用一个字符串(而不是一个数字)来标识对话框资源时,该参数指定资源id。如果该参数是一个空字符串,ndialogid被用来标识对话框资源。强烈提议使用ndialogid而不是szdialogid来标识对话框资源。 nreserved 给该参数传递0。不允许其它值。 hwndowner 指定主窗口的窗口句柄。将该参数指定为hwnd_install来使得installshield主安装窗口成为对话框的主窗口。 lmsglevel 该参数指定哪些窗口消息要被发送到该对话框。你必须用或操作符来将下列常量之一和常量dlg_centered组合: dlg_msg_standard:筛选掉大多数windows消息;只有那些直接和对话框控件关联的被传递到对话框。 dlg_msg_all :传递大多数windows消息。 返回值: 0:definedialog成功定义对话框。 dlg_err_already_exists (-3):你正试图定义一个已经由definedialog定义的对话框。你不能用相同的名称定义两个对话框。 dlg_err (-1):表示发生一个未确定的错误。 6.20 enddialog 语法:enddialog (szdialogname); 说明:enddialog函数关闭一个自定义对话框。它删除对话框并启动对话框关闭进程。当下列任意一种情况存在时,使用enddialog: next按扭或其等效已经被处理。 cancel按扭或其等效已经被处理。 close系统菜单选项已经被选定(该行为发送dlg_close消息)。 用户结束对话框操作的任何其它情况。 参数: szdialogname 指定要关闭的对话框的名称。 返回值: 0:enddialog成功关闭对话框。 < 0:enddialog未能关闭对话框。 注解: 在调用enddialog关闭一个自定义对话框后,调用releasedialog函数来释放与该自定义对话框关联的内存。 只要你还没有调用releasedialog来把对话框从内存删除,你可以就通过调用waitondialog来重新显示一个已经由调用enddialog关闭的自定义对话框。然而要注意,如果你调用waitondialog来打开一个在你脚本中已经被打开和关闭的对话框时,你必须再次调用cmdgethwnddlg来得到新句柄。老的句柄不再有效。 6.21 ezdefinedialog 语法:ezdefinedialog (szdialogname, szdllname, szdialogid, ndialogid); 说明:ezdefinedialog函数定义一个自定义对话框。注意ezdefinedialog不显示自定义对话框。为显示一个自定义对话框,你必须调用waitondialog。 参数: szdialogname 指定和由szdialogid 或 ndialogid指定的对话框相关联的名称。为处理该对话框,在随后的对自定义对话框函数的调用中使用该名称。注意该对话框的名称是区分大小写的,你必须完全按照你在该参数指定的那样来使用它。 szdllname 指定包含对话框资源的dll文件的全限定名。如果你不指定一个路径,installshield在windows 文件夹中查找该dll。如果在那儿没有找到,installshield查找在查找路径中指定的文件夹。如果你用参数hinstance指定dll的实例句柄,你可以给该参数传递一个空字符串。当对话框位于_isuser.dll时,你可以为该参数指定一个空字符串。如果该参数指定为一个空字符串,installshield将自动检测_isuser.dll。 szdialogid 如果你使用一个字符串(而不是一个数字)来标识对话框资源时,该参数指定资源id。如果该参数是一个空字符串,ndialogid被用来标识对话框资源。强烈提议使用ndialogid而不是szdialogid来标识对话框资源。 ndialogid 如果你使用一个
|