我们知道,在桌面上或者是资源管理器里双击某个文件时,Windows 就会自动调用与该文件相关联的应用程序来对其进行处理。比如我们在桌面上双击某个DOC文件,Windows就会启动Word并将该DOC文件打开。在这个过程中Windows使用了一个名为ShellExecute 的Win32 API函数,其功能是打开或者是打印某个指定的文件,这个文件可以是一个可执行文件,也可以是一个文档。这个命令包含在Windows自带的SHELL32.DLL文件中,调用的语法为:
HINSTANCE ShellExecute(
HWND hwnd, // 指向调用本命令之父窗口的句柄
LPCTSTR lpOperation, //指定本命令所要执行的动作
LPCTSTR lpFile, // 指定本命令所要操作的文件
LPTSTR lpParameters, // 指定操作文件时所使用的参数
LPCTSTR lpDirectory, // 指定本命令所使用的缺省路径
INT nShowCmd // 指定文件被打开时的状态
以下这段程序介绍了在Visual FoxPro中声明ShellExecute函数并调用缺省的电子邮件软件向qyjohn@letterbox.com发送电子邮件的方法。
* 声明ShellExecute函数
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;
STRING lpszOP, ;
STRING lpszFile, ;
STRING lpszParams, ;
STRING lpszDir, ;
INTEGER fsshowcmd
* 声明GetDesktopWindow函数,该函数激活Windows桌面
DECLARE INTEGER GetDesktopWindow IN win32api
* 指定从Windows桌面上运行ShellExecute函数
HWND = GetDesktopWindow()
lpszOP = ""
* 指定ShellExecute操作的文件为mailto:qyjohn@letterbox.com
lpszFile = "mailto:qyjohn@letterbox.com"
lpszParams = ""
* 指定ShellExecute的缺省目录为C:\
lpszDir = "C:\"
fsshowcmd = 1
* 执行ShellExecute命令
LNRETURN = ShellExecute(HWND, lpszOP, lpszFile, lpszParams, lpszDir,fsshowcmd)
如果需要启动缺省的WWW浏览器并连接到某个站点,只需要将参数lpszFile换成该站点的URL地址即可。比如我们需要连接到HappyFox站点,则含有参数lpszFile的命令行应该写成:
lpszFile = http://happyfox.163.net/
关于ShellExecute命令的其他用法,可以参考Visual FoxPro所提供的Win32 API 帮助。
责任编辑:小草