| 
        
           
           
                    | 分发VFP应用时自动建立快捷方式 
 |   
                    |  |   
                    |  |   
                    | 作者:佚名 
                来源:InterNet 加入时间:2005-1-31  |   
                    
            |         
 
使用VFP开发一个应用软件,最后一步是制作发布磁盘。使用VFP安装向导制作的发布磁盘在安装时一般只在“开始\程序\Visual FoxPro 应用程序”组中建立快捷方式。如果希望在安装时把快捷方式建在桌面上、开始菜单中或启动组中,该怎么办呢? 
 解决思路
 
 下面是笔者的解决办法。大体可分两步进行:
 
 1.使用VFP编制一个用来建立快捷方式的程序(设程序名为CreateShortCut.exe);
 
 2.在安装向导“步骤4-安装选项”的“执行程序”标签下的文本框中填入前面建立的程序文件名及其路径(通过浏览“…”按钮查找)。
 
 这里的关键是第一步,如果有了第一步建立的程序CreateShortCut.exe,后一步是十分简单的。接下来具体说明用VFP编制建立快捷方式程序的方法。
 
 具体实现
 
 建立快捷方式的程序中需要使用DLL函数fCreateShellLink,该函数在STKIT432.DLL中(STKIT432.DLL可在Visual Basic 4.0 for Windows的Setup Kit中找到)。在VFP中声明fCreateShellLink函数的命令是:
 
 declare long fCreateShellLink in “STKIT432.DLL” String p1, String p2, String p3, String p4
 
 其中:
 
 ● p1: 用来指出快捷方式要加入的文件夹及其相对于Windows\Programs文件夹的路径;
 
 ● p2: 用来指出快捷方式的名称;
 
 ● p3: 用来指出程序文件名(含扩展名)及其路径;
 
 ● p4: 用来指出执行程序的命令行参数,一般为空串。
 
 例如,要想把程序“C:\Windows\command
 
 .com”的快捷方式以“DOS窗口”为名建立在附件中,可用命令:
 
 fCreateShellLink(“.\附件”,“DOS窗口”, “C:\Windows\command.com”, “”)
 
 下面创建前面所述的CreateShortCut.exe程序,先检查Windows\System文件夹中是否存在STKIT432.DLL文件,如果存在(否则,找到该文件将其复制到Windows\System文件夹),执行如下操作:
 
 1.打开VFP,新建一个名为CreateShortCut的项目。
 
 2. 在CreateShortCut项目中新建一个名为prgCreateShortCut的程序,程序清单如下:
 
 ● 程序prgCreateShortCut.PRG
 
 LPARAMETERS sPn,sPd
 
 application.visible=.f.
 
 if type(‘sPn’)=‘L’
 
 sPn=“CreateShortCut.exe”
 
 sPd=“建立快捷方式”
 
 endif
 
 if upper(sPn)= “CREATESHORTCUT.EXE”
 
 cl=chr(13)+chr(10)+chr(13)+chr(10)
 
 sTs=“本程序使用方法:”+cl;
 
 +“先把本程序复制到要建立快捷方式的程序所在的文件夹,然后,”+cl ;
 
 +“从“开始”菜单中单击“运行”,在“运行”对话框中,通过”+cl ;
 
 +““浏览”按钮找到本程序,再在“打开”组合框中本程序名之后”+cl ;
 
 +“输入命令行参数: <程序文件名(含扩展名)> <快捷方式标题>,”+cl ;
 
 +“最后,按“确定”按钮执行。”
 
 messagebox(sTs,64, “提示”)
 
 Cancel
 
 endif
 
 sPn=fullpath(sPn)
 
 do form frmCreateShortCut with sPn,sPd
 
 read events
 
 3. 在CreateShortCut项目中新建一个文件名为frmCreateShortCut的表单(如下图)。各复选框的名称自上而下依次为: chkProgram、chkDeskTop、chkStartMenu、chkStartUp、chkQuickLaunch。
 
 用户操作界面
 
 表单中有关对象事件的代码如下:
 
 (1)表单frmCreateShortCut的Init事件代码:
 
 LPARAMETERS sPn,sPd
 
 this.AddProperty(“Pn”)
 
 this.AddProperty(“Pd”)
 
 this.Pn=sPn
 
 this.Pd=sPd
 
 this.Caption=“建立”+sPd+“快捷方式”
 
 this.chkDeskTop.value=1
 
 (2)表单frmCreateShortCut的Unload事件代码:
 
 clear events
 
 (3)“确定”按钮的Click事件代码:
 
 declare long fCreateShellLink in “STKIT432
 
 .DLL” String sFolderName;
 
 String sLinkName, String sLinkPath, String sLinkArgs
 
 ● 注意: 函数名fCreateShellLink中字母的大小写。
 
 sLinkName=Thisform.pd
 
 sLinkPath=thisform.pn
 
 (4) 将快捷方式加到程序组中
 
 if thisform.chkProgram.value=1
 
 sFolderName=“.”
 
 sLinkArgs=“”
 
 rs=fCreateShellLink(sFolderName, sLinkName, sLinkPath, sLinkArgs)
 
 if rs=0
 
 messagebox(“将快捷方式加到程序组中时出错!”,48,“提示”)
 
 endif
 
 endif
 
 (5) 将快捷方式加到桌面上
 
 if thisform.chkDeskTop.value=1
 
 sFolderName=“..\..\desktop”
 
 sLinkArgs=“”
 
 rs=fCreateShellLink(sFolderName,sLinkName, sLinkPath, sLinkArgs)
 
 if rs=0
 
 messagebox(“将快捷方式加到桌面上时出错!”,48,“提示”)
 
 endif
 
 endif
 
 (6)将快捷方式加到启动组中
 
 if thisform.chkStartUp.value=1
 
 sFolderName=“.\启动”
 
 rs=fCreateShellLink(sFolderName, sLinkName, sLinkPath, sLinkArgs)
 
 if rs=0
 
 messagebox(“将快捷方式加到启动组时出错!”,48,“提示”)
 
 endif
 
 endif
 
 (7)将快捷方式加到开始菜单中
 
 if thisform.chkStartMenu.value=1
 
 sFolderName=“..\”
 
 rs=fCreateShellLink(sFolderName, sLinkName, sLinkPath, sLinkArgs)
 
 if rs=0
 
 messagebox(“将快捷方式加到开始菜单中时出错!”,48,“提示”)
 
 endif
 
 endif
 
 (8)将快捷方式加到快速启动区中
 
 if thisform.chkQuickLaunch.value=1
 
 sFolderName=“..\..\Application Data\Microsoft\Internet Explorer\Quick Launch”
 
 rs=fCreateShellLink(sFolderName, sLinkName, sLinkPath, sLinkArgs)
 
 if rs=0
 
 messagebox(“将快捷方式加到快速启动区中时出错!”,48,“提示”)
 
 endif
 
 endif
 
 clear dlls
 
 thisform.release
 
 (9)“关闭”按钮的Click事件代码:
 
 thisform.release
 
 4. 将程序prgCreateShortCut 设置为主文件。
 
 5.“连编”该项目,生成CreateShortCut.exe文件。
 
 至此,建立快捷方式的程序CreateShortCut.exe 已经完成。通过它,就可以把VFP应用程序的快捷方式自动建立在用户所指定的位置。
   
 [文章录入员:nancy]
 |   
                    |  |  |  |  |