精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖外部引用〗>>在VFP中调用其他应用程序(转)

主题:在VFP中调用其他应用程序(转)
发信人: nomean()
整理人: hunter__fox(2002-03-16 21:48:53), 站内信件
---- 在用VFP进行应用程序设计中,经常需要调用其他的应用程序。这时候我们
立即会想到RUN命令。使用RUN命令只需知道应用程序的文件名及其路径即可。 


---- 下面的示例是以最大化方式启动Windows目录下的图画板程序并同时打开c:
\windows\Bubbles.bmp 文件: 

---- RUN/n3 C:\Windows\Pbrush.exe c:\windows\Bubbles.bmp 。RUN命令的参
数用法可以参考Visual FoxPro的帮助文件。 但是令人失望的是,在实际开发时
我们常常无法确定所需要启动的应用程序的文件名及其安装的路径。比如我们需
要启动用户机器上的浏览器并连接到某一个网址,该机器可能安装的是IE,也可
能是NetScape,还有可能是其他的浏览器软件,安装的路径更是无从确定。下面
给出通过Win32 API函数来解决问题的方法,因此其解决思路也可以用到其他编程
语言中去。 

---- 我们知道,Windows是一种面向文档的操作系统。当我们双击某个文件时,
Windows就会自动启动与该文件相关联的应用程序来对文件进行处理。在这个过程
中Windows主要使用了一个名为ShellExecute 的Win32 API函数。我们可以通过这
个函数来直接调用其他程序,彻底抛弃Run 命令的方式。 

Function shellstart
Parameters  documentname

* 声明ShellExecute函数 
DECLARE INTEGER ShellExecute IN 
      shell32.DLL INTEGER HWND,; 
STRING lpszOP, ; 
STRING lpszFile, ; 
STRING lpszParams, ; 
STRING lpszDir, ; 
INTEGER fsshowcmd 

* 指定ShellExecute函数的输出指向Windows桌面
DECLARE INTEGER GetDesktopWindow IN win32api 
HWND = GetDesktopWindow() 

* 指定操作命令为"打开"方式
lpszOP = "open" 

* 指定ShellExecute操作的对象为 documentname
lpszFile = documentname
lpszParams = "" 

* 指定ShellExecute的缺省目录为c:\temp
lpszDir = "c:\temp" 
fsshowcmd = 0

* 执行ShellExecute命令 
LNRETURN = ShellExecute(HWND, lpszOP, 
lpszFile, lpszParams, lpszDir,fsshowcmd) 
Retu

调用方式:
=shellstart("www.flysmart.com")    
&& 连接到网站www.flysmart.com
=shellstart(“c:\windows\script.doc”)   
&&  打开c:\windows\script.doc文件
---- 以上程序已经在VFP3.0中文版,Pwin 97中调试通过。 

--
Life means nothing
Without the love you bring

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.109.248.188]

[关闭][返回]