1).
标准用法
ShellExecute
函数原型及参数含义如下:
function
ShellExecute(hWnd:
HWND;
Operation,
FileName,
Parameters,Directory:
PChar;
ShowCmd: Integer): HINST; stdcall;
●
hWnd
:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为
Windows
消息
窗口的父窗口。例如,可以将其设置为应用程序主窗口
句柄,即
Application.Handle
,也可以将其设置为桌面窗口句柄(用
GetDesktopWindow
函数
获得)
。
●
Operation
:用于指定要进行的操作。其中“
open
”操作表示执行由
FileName
参数指
定的程序,或打开由
FileName
参数指定的文件或文件
夹;
“
”
操作表示打印由
FileName
参数指定的文件;
“
explore
”
操作表示浏览由
FileName
参数指定的文件夹。当参数设为
nil
时,表示执
行默认操作“
open
”
。
●
FileName
:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。
●
Parameters
:若
FileName
参数是一个可执行程序,则此参数指定命令行参数,
否则此
参数应为
nil
或
PChar(0)
。
●
Directory
:用于指定默认目录。
●
ShowCmd
:若
FileName
参数是一个可执行程序,则此参数指定程序窗口的初始显示
方式,否则此参数应设置为
0
。
若
ShellExecute
函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于
32
,
则表示出现错误。
上述仅仅是
ShellExecute
函数的标准用法,下面将介绍它的特殊用法。
2).
特殊用法
如果将
FileName
参数设置为“
http:
”协议格式,那么该函数将打开默认浏览器并链接
到指定的
URL
地址。若用户机器中安装了多个浏览器
,则该函数将根据
Windows 9x/NT
注册表中
http
协议处理程序(
Protocols Handler
)的设置
确定启动哪个浏览器。
格式一:
http://
网站域名。
如:
ShellExecute(handle,
‘
open
’
, http://www.neu.edu.cn
’
, nil, nil, SW_SHOWNORMAL);
格式二:
http://
网站域名
/
网页文件名。
如
:
ShellExecute(handle,
‘
open
’
,
http://www.neu.edu.cn/default.htm
’
,nil,nil,SW_SHOWNORMAL);
如果将
FileName
参数设置为“
mailto:
”协议格式,那么该函数将启动默认邮件客户程
序,如
Microsoft Outlook
(也包括
Microsoft
Outlook
Express
)或
Netscape
Messanger
。若用户机器中安装了多个邮件客户程序,则该函
数将根据
Windows 9x/NT
注册表中
mailto
协议处理
程序的设置确定启动哪个邮件客户程序。
格式一:
mailto:
如:
ShellExecute(handle,
‘
open
’
,
‘
mailto:
’
, nil, nil, SW_SHOWNORMAL);
打开新邮
件窗口。
格式二:
mailto:
用户账号
@
邮件服务器地址
如
:
ShellExecute(handle,
‘
open
’
,
‘
mailto:who@mail.neu.edu.cn
’
,
nil,
nil,
SW_SHOWNORMAL);
打开新邮件窗口,并自动填入收
件人地址。若指定多个收件人地址,则收件人地址之间必须用分号或逗号分隔开(下同)
。
格式三:
mailto:
用户账号
@
邮件服务器地址
?subject=
邮件主题&
body=
邮件正文
如:
ShellExecute(handle,
‘
open
’
,
‘
mailto:who@mail.neu.edu.cn
?
subject=Hello
&
Body=This is a test
’
, nil, nil,
SW_SHOWNORMAL);
打开新邮件窗口,
并自动填入收件人地址、
邮件主题和邮件正文。若
邮件正文包括多行文本,则必须在每行文本之间加入换行
转义字符%
0a
。
例子
(Delphi):
在一个应用程序调用
c:\Project1.exe;
ShellExecute(handle,
’
open
’
,
’
c:\Project1.exe
’
,
’字串内容’
,nil, SW_SHOWNORMAL);
在
Project1.exe
里可以调用
:
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i:=1 to paramcount do
if ParamStr(i)<>’’ then
showmessage(ParamStr(i));
end;
最后的那个参数,为窗口指定可视性方面的一个命令。请用下述任何一个常数
:
SW_HIDE
隐藏窗口,活动状态给令一个窗口
SW_MINIMIZE
最小化窗口,活动状态给令一个窗口
SW_RESTORE
用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW
用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED
最大化窗口,并将其激活
SW_SHOWMINIMIZED
最小化窗口,并将其激活
SW_SHOWMINNOACTIVE
最小化一个窗口,同时不改变活动窗口
SW_SHOWNA
用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIV
A
TE
用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL
与
SW_RESTORE
相同