收藏 分销(赏)

如何在VFP中调用默认关联的程序打开文件.doc

上传人:pc****0 文档编号:8987799 上传时间:2025-03-10 格式:DOC 页数:6 大小:43.50KB
下载 相关 举报
如何在VFP中调用默认关联的程序打开文件.doc_第1页
第1页 / 共6页
如何在VFP中调用默认关联的程序打开文件.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述
如何在VFP中调用默认关联的程序打开文件? (2007-01-20 17:13:12) 转载   分类:『数据库-DB』 如何在VFP中调用默认关联的程序打开文件? 怎样在一个菜单中建立一个程序或命令打开一个网页或word,excel等文件??? --------------------------------------------------------------- 打开一个网页与word,excel是不一样. 1.word,excel要用ACTIVEX的OLECONTROL控件. 2.打开一个网页要用到HYPERLINK控件. 可以在表单上加一个TEXT一个COMMANG控件,还有一个超级链接HYPERLINK控件. COMMAND.CLICK事件: THISFORM.HYPERLINK.NAVIGATETO(THISFORM.TEXT.VALUE) 在vfp的例子中找到了一个这个问题的解决方法,使用api函数来解决,如下: 1、声明函数 DECLARE INTEGER ShellExecute ; IN SHELL32.DLL ; INTEGER nWinHandle,; STRING cOperation,; STRING cFileName,; STRING cParameters,; STRING cDirectory,; INTEGER nShowWindow 2、在程序中任何地方调用,包括菜单中,打开一个e:\a.htm文件的调用方法如下, =ShellExecute(0,"Open","e:\a.htm","","e:\",1) --------------------------------------------------------------- 在VFP中我们可以用run来调用由VFP自身生成的.exe文件。命令格式: run c:\..\*.exe 当调用非VFP自身生成的.exe文件时,需要加上绝对路径和参数。 一般来说,用VFP运行非VFP自身生成的可执行文件时,会有一个黑色的窗口显示一下。可以通过加上/n来隐藏这个窗口。例如运行Windows下的扫雷游戏,命令格式如下: RUN/n C:\Windows\Winmine.exe 下面运行一个更复杂一点的程序。用word打开c:\下的一个名为mlx.doc的word文件,命令格式如下: run /n3 C:\Program Files\Microsoft Office\Office\Winword.exe C:\mlx.doc 参数:n 在运行时隐藏VFP的黑色窗口。 3 表示以最大化的方式运行程序。0隐藏窗口、1正常方式、2最小化方式、3最大化方式 在这种情况下,虽然可以通过加上参数使程序程序能够流畅运行,但还是要指定绝对路径,而在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其绝对路径。比如,在上例中,我们无法确定用户的word到底安装在什么地方,如果用户把word安装到了别的地方,上述命令便会出错。再如,一个.gif文件,有的用户喜欢用ACD See来打开,有的用户喜欢用IE来打开,有的用户喜欢用豪杰来打开,…… 为了解这种情况我们可以调用Windows的文件关连来打开文件。即所有的文件都用系统默认的程序来打开。这就要调用Windows的Win32 API函数。调用方式如下 DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,; STRING lpszOP, ; STRING lpszFile, ; STRING lpszParams, ; STRING lpszDir, ; INTEGER fsshowcmd DECLARE INTEGER GetDesktopWindow IN win32api HWND = GetDesktopWindow() lpszOP = "open" * 指定要打开的文件名 lpszFile ="c:\mlx.doc" lpszParams = "" lpszDir = "c:\temp" fsshowcmd = 1 * 执行ShellExecute命令 LNRETURN = ShellExecute(HWND, lpszOP,lpszFile, lpszParams, lpszDir,fsshowcmd) 可以用任意的文件名来替换上文中的 c:\mlx.doc 。如果指定的文件名Windows无法找到相应的关连程序,这时程序将不会做出反应。有关的参数可以自行偿试进行修改,以达到最佳效果。 ---------------------------------------------------------------- API函数ShellExecute的使用 ShellExecute 说明 Shellexecute 函数用于对文件执行一个动词(verb). 它通常用于启动一个与特定文件类相关联的应用程序. 例如, 要启动 Word 来读一个 .doc 文件, 或启动 记事本 来编辑一个 .txt 文件. 用于第二个参数中的最常用的动词是 "Open", 但其它可用的动词是 "edit","print","explore" 和 "properties". 有趣的是, 使用 "mailto:" 或 "http://" 前缀, ShellExecute 函数也可用于以一个给定的邮件地址启动默认的邮件阅读器或给定的 URL 启动默认的浏览器. 缩主文件 Shell32.dll 在 VFP 中的定义 DECLARE INTEGER ShellExecute IN "Shell32.dll" ; INTEGER hwnd, ; STRING lpVerb, ; STRING lpFile, ; STRING lpParameters, ; STRING lpDirectory, ; LONG nShowCmd Visual FoxPro 应用示例 * 打开 Word 来编辑文件 "c:\mywordfile.doc" =Shellexecute(0,"Open","c:\mywordfile.doc","","",0) * 打开默认的浏览器并定位到天堂论坛 =Shellexecute(0,"Open"," * 打开默认的邮件阅读器来发一封信给天堂版主 =Shellexecute(0,"Open","mailto:njjane@","","",0) * 打印文本文件 "c:\mytextfile.txt" =Shellexecute(0,"Print","c:\mytextfile.txt","","",0) --------------------------------------------------------------- 其实有两个比较简单的方法 1、 run/n explorer "" 2、 ox=createobject("wscript.shell") ox.run("http:/") 3、 declare integer WinExec in win32api string,integer&&这个INTEGER类型的参数是窗口的显示模式最大化,最小化,普通 winexec("explorer ",3) --------------------------------------------------------------- 在OLEContainer1 的 init事件中加入这句话就可以了 This.navigate("") 文章引用自: 我想用VFP打開d:\abc.pdf 怎樣寫程序呢? --------------------------------------------------------------- 方法一: 先安装Adobe Reader 5.0或6.0 *将下面程序代码保存为一个prg文件,传入PDF文件名作为参数即可。 LPARAMETERS tFile PUBLIC oform1 oform1=NEWOBJECT("form1") IF VARTYPE(cFile) # "U"    oForm1.cmdFile.Visible = .f.       oForm1.cmdExit.Visible = .f.       oForm1.oleControl1.Top = 12    oForm1.oleControl1.LoadFile([&cFile]) ENDIF oform1.Show *RETURN ********************************************************** DEFINE CLASS form1 AS form    DoCreate = .T.    Caption = "pdfForm"    Name = "Form1"    ADD OBJECT cmdfile AS commandbutton WITH ;       Top = 12, ;       Left = 12, ;       Height = 27, ;       Width = 144, ;       Caption = "Select File", ;       Name = "cmdFile"    ADD OBJECT cmdexit AS commandbutton WITH ;       Top = 12, ;       Left = 168, ;       Height = 27, ;       Width = 84, ;       Caption = "E\<xit", ;       Name = "cmdExit"    ADD OBJECT olecontrol1 AS olecontrol WITH ;       OLEClass = "PDF.PdfCtrl.6", ; &&如果是Adobe Reader 5.0,此处的6为5       Top = 48, ;       Left = 12, ;       Height = 192, ;       Width = 348, ;       Name = "Olecontrol1"    PROCEDURE Init       ThisForm.ReSize()    ENDPROC    PROCEDURE Resize       ThisForm.Olecontrol1.Height = ThisForm.Height - 60       ThisForm.Olecontrol1.Width = ThisForm.Width - 24       ThisForm.Olecontrol1.Refresh()    ENDPROC    PROCEDURE cmdfile.Click       LOCAL cFile       cFile = GETFILE([PDF])       IF !EMPTY(cFile)          THISFORM.oleControl1.LoadFile([&cFile])       ENDIF    ENDPROC    PROCEDURE cmdexit.Click       ThisForm.Release()    ENDPROC ENDDEFINE --------------------------------------------------------------- 方法二:(不能显示在表单中) 1、首先要安装PDF阅读工具。 2、然后利用API来调用默认关联的程序打开PDF文件,请详见: 在VFP中我们可以用run来调用由VFP自身生成的.exe文件。命令格式:   run  c:\..\*.exe            当调用非VFP自身生成的.exe文件时,需要加上绝对路径和参数。   一般来说,用VFP运行非VFP自身生成的可执行文件时,会有一个黑色的窗口显示一下。可以通过加上/n来隐藏这个窗口。例如运行Windows下的扫雷游戏,命令格式如下:   RUN/n  C:\Windows\Winmine.exe   下面运行一个更复杂一点的程序。用word打开c:\下的一个名为mlx.doc的word文件,命令格式如下:   run  /n3  C:\Program  Files\Microsoft  Office\Office\Winword.exe    C:\mlx.doc        参数:n  在运行时隐藏VFP的黑色窗口。                    3  表示以最大化的方式运行程序。1正常方式、2最小化方式、3最大化方式            在这种情况下,虽然可以通过加上参数使程序程序能够流畅运行,但还是要指定绝对路径,而在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其绝对路径。比如,在上例中,我们无法确定用户的word到底安装在什么地方,如果用户把word安装到了别的地方,上述命令便会出错。再如,一个.gif文件,有的用户喜欢用ACD  See来打开,有的用户喜欢用IE来打开,有的用户喜欢用豪杰来打开,……          为了解这种情况我们可以调用Windows的文件关连来打开文件。即所有的文件都用系统默认的程序来打开。这就要调用Windows的Win32  API函数。调用方式如下:     DECLARE  INTEGER  ShellExecute  IN  shell32.DLL  INTEGER  HWND,;     STRING  lpszOP,  ;     STRING  lpszFile,  ;     STRING  lpszParams,  ;     STRING  lpszDir,  ;     INTEGER  fsshowcmd     DECLARE  INTEGER  GetDesktopWindow  IN  win32api     HWND  =  GetDesktopWindow()     lpszOP  =  "open"     *  指定要打开的文件名   lpszFile  ="c:\mlx.doc"   lpszParams  =  ""     lpszDir  =  "c:\temp"     fsshowcmd  =  1   *  执行ShellExecute命令     LNRETURN  =  ShellExecute(HWND,  lpszOP,lpszFile,  lpszParams,  lpszDir,fsshowcmd)     可以用任意的文件名来替换上文中的  c:\mlx.doc  。如果指定的文件名Windows无法找到相应的关连程序,这时程序将不会做出反应。有关的参数可以自行偿试进行修改,以达到最佳效果。来源:( - 如何在VFP中调用默认关联的程序打开文件?_SWAT_新浪博客
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服