您好,欢迎来到要发发知识网。
搜索
您的当前位置:首页调用外部文件(ShellExecute)

调用外部文件(ShellExecute)

来源:要发发知识网
调⽤外部⽂件(ShellExecute)

  有三个API函数可以运⾏可执⾏⽂件WinExec、ShellExecute和CreateProcess。CreateProcess因为使⽤复杂,⽐较少⽤。 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消息窗⼝的⽗窗⼝。例如,可以将其设置为应⽤程序主窗⼝句柄,即Application.Handle,也可以将其设置为桌⾯窗⼝句柄(⽤GetDesktopWindow函数获得)。

  ●Operation:⽤于指定要进⾏的操作。其中“open”操作表⽰执⾏由FileName参数指定的程序,或打开由FileName参数指定的⽂件或⽂件夹;“print”操作表⽰打印由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.sohu.com', 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=He

llo&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_SHOWNOACTIVATE ⽤最近的⼤⼩和位置显⽰⼀个窗⼝,同时不改变活动窗⼝SW_SHOWNORMAL 与SW_RESTORE相同

例题:

  ShellExecute(handle,nil,pchar('Http://www.baidu.com'),nil,nil,sw_shownormal);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- net188.cn 版权所有 湘ICP备2022005869号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务