发信人: 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]
|
|