linux调用delphi程序,delphi调用外部程序打开文件

本文详细介绍了Delphi中ShellExecute函数的多种用法,包括发送电子邮件、打开网页、打印文件、打开文档以及利用特定程序打开文件等。通过设置不同的参数,ShellExecute函数可以实现与系统默认程序的交互,如启动默认浏览器、邮件客户端等。此外,还提到了WinExec函数主要用于运行EXE文件。
摘要由CSDN通过智能技术生成

2014012816224315357.jpg

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 有效

2014012819065934367.png

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);

cc7fb81d2e2ff863a7364a08b7a3983d.gif

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)的设置确定启动哪个浏览器。

3e23366301400645bc40641c90ce477e.gif

格式一:网页域名。

如: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);

d8b6a3026e133dd0eb0772b77abaae6a.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值