ShellExecute的这些用法
一、借助功能默认的短信发送电子邮件
Uses
..., ShellAPI;
Var
lpHwnd: HWND;
lpOperation, lpFile, lpParameters, lpDirectory: String;
Begin
lpHwnd:= GetDesktopWindow();
lpOperation:= 'open';
lpFile:= 'mailto:' + 'Maple119@263.net' + '?' //主邮件地址后以'?'结束
+ '&cc=' + 'balaba960808@163.com' //抄送
+ '&bcc=' + 'lyf.kibosoft.com' //暗送
+ '&subject=' + '主题'
+ '&body='+ '第一行内容' + '%d' + '第二行内容' //主题内容以 '%d' 转行
+ '&File=' + 'D:\Help.rtf'; //附件只对 Outlook Express 有效
lpParameters:= '';
lpDirectory:= '';
ShellExecute(lpHwnd, pChar(lpOperation),
pChar(lpFile), pChar(lpParameters),
pChar(lpDirectory), SW_SHOWNORMAL);
End;
二、打开一个网页
ShellExecute(, 'open', 'http://www.google.com', '', '', SW_SHOWNORMAL);
三、打印文件
ShellExecute(, 'print', 'D:\Help.rtf', '', '', SW_SHOWNORMAL)
四、借助功能默认的流程打开指定的文档
ShellExecute(, 'open', 'D:\Help.rtf', '', '', SW_SHOWNORMAL))
五、用指定的流程打开指定的文档
ShellExecute(, 'open', 'notepad.exe', 'D:\Help.rtf', '', SW_SHOWNORMAL)
六、执行方便方法(.LNK)
ShellExecute(handle,'open','c:\windows\desktop\aaa.lnk','', '', sw_hide);
WinExec主要运行EXE文件。如:WinExec(’Notepad.exe Readme.txt’, SW_SHOW);
ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文档。
首先必须引用shellapi.pas单元:uses ShellAPI;
1.标准用法
ShellExecute函数原型及参数意思如下:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;
●hWnd:用来指定父窗口函数。当数组调用过程出现错误时,它将成为Windows消息窗口的父窗口。例如delphi http 下载文件,可以将其设置为应用程序主窗口函数,即Application.Handle,也可以将其设置为桌子窗口函数(用GetDesktopWindow函数获得)。
●Operation:用来指定要进行的操作。其中“open”操作表示执行由FileName参数指定的流程,或打开由FileName参数指定的文档或文件夹;“print”操作表示打印由FileName参数指定的文档;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,认为执行默认操作“open”。
●FileName:用来指定要打开的文件名、要执行的流程文件名或要浏览的文件夹名。
●Parameters:若FileName参数是一个可执行流程,则此参数指定命令行参数,如果此参数应为nil或PChar()。
●Directory:用来指定默认目录。
●ShowCmd:若FileName参数是一个可执行流程,则此参数指定程序窗口的初始显示方法,如果此参数应增设为。
若ShellExecute函数调用成功,则回到值为被执行流程的例子数组。若返回值小于32,则认为出现错误。
上述仅仅是ShellExecute函数的标准用法,上面将介绍它的独特用法。
2.独特用法
因为将FileName参数设置为“http:”条款文档,所以该字段将打开默认浏览器并链接到指定的URL地址。若用户机器中安装了多个浏览器,则该字段将按照Windows 9x/NT注册表中http协议处理流程(Protocols Handler)的设置确定启动哪个浏览器。
格式一:网页域名。
如:ShellExecute(handle, ‘open’, ;’, nil, nil, SW_SHOWNORMAL);
格式二:网站域名/网页文件名。
如:ShellExecute(handle, ‘open’, ;, 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’,‘, nil, nil, SW_SHOWNORMAL);打开新短信窗口,并自动填入收件人地址。若指定多个收件人地址,则收件人地址之间必须用分号或空格隔开开(下同)。
格式三:mailto:用户账户@邮件服务器地址?subject=邮件主题&body=邮箱正文
如:ShellExecute(handle, ‘open’, ‘?subject=Hello&Body=This is a test’, nil, nil, SW_SHOWNORMAL);打开新短信窗口,并自动填入收件人地址、短信主题和短信正文。若短信正文包含多行文本delphi http 下载文件,则必须在每行文本之间加入换行转义字符%a。
例子(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_SHOWNOACTIVATE 用最近的形状和位置显示一个窗口,同样不改变活动窗口
SW_SHOWNORMAL 与SW_RESTORE相同
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-118846-1.html