winexec文件exe格式打开

图标

豆瓜

豆瓜网

豆瓜网专栏

首发
豆瓜 图标 2020-10-17 01:11:18

1,WinExec():

 

  WinExec主要运行EXE文件,不能运行其他类型的文件。不用引用特别单元。

 

  原型:UINT WinExec(exePath,ShowCmd)

 

  示例,我想要用记事本打开"C:\HDC.TXT",以正常方式运行:WinExec(pChar('notepad c:\taoyoyo.txt'),SW_SHOWNORMAL); 

 

  参数说明:

  --xePath:命令行参数。注意,要用pChar转化一下。

  --ShowCmd:外部程序的运行方式。其取值如下: 

  ----SW_HIDE 隐藏 

  ----SW_MAXIMIZE 最大化 

  ----SW_MINIMIZE 最小化,并把Z order顺序在此窗口之后(即窗口下一层)的窗口激活 

  ----SW_RESTORE 激活窗口并还原为初始化大小 SW_SHOW 以当前大小和状态激活窗口 

  ----SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态 

  ----SW_SHOWDEFAULT 以默认方式运行

  ----SW_SHOWMAXIMIZED 激活窗口并最大化 

  ----SW_SHOWMINIMIZED 激活窗口并最小化 

  ----SW_SHOWMINNOACTIVE 最小化但不改变当前激活的窗口 

  ----SW_SHOWNA 以当前状态显示窗口但不改变当前激活的窗口 

  ----SW_SHOWNOACTIVATE 以初始化大小显示窗口但不改变当前激活的窗口 

  ----SW_SHOWNORMAL 激活并显示窗口,如果是最大(小)化,窗口将会还原。第一次运行程序 时应该使用这个值 

 

  如果调用成功,这个函数会返回一个不小于31的值,否则调用失败,其返回值的意义如下:

  --0 系统内存或资源不足 

  --ERROR_BAD_FORMAT .EXE文件格式无效(比如不是32位应用程序) 

  --ERROR_FILE_NOT_FOUND 指定的文件设有找到

  --ERROR_PATH_NOT_FOUND 指定的路径没有找到

 

  其他:

  这个函数和system()非常类似,只能运行.EXE文件,这样在WINDOWS中有它不尽人意的地方,比如不能用此方法通过关联的方法打开文件,例如WinExec("1.html",SW_SHOWNA);就不能打开此文档。

 

  2,ShellExecute() :

 

  不仅可以运行EXE文件,也可以运行系统已经关联的文件。

  这个函数和WIN9X中的命令行命令"start"类似,不光可以对文件进行操作,还可以对HTTP、MAILTO等进行操作。这样我们可以设计有超级链接风格的程序了。

  ShellExecute的功能要强得多,并且可以完全替代WinExec(),事实上,WinExec()也是为了和以前版本兼容而保留,所以,我们要尽量使用ShellExecute()。

 

  首先必须引用shellapi.pas单元:uses ShellAPI; 

 

  函数原型: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。 

  ----SW_HIDE 隐藏 

  ----SW_MAXIMIZE 最大化 

  ----SW_MINIMIZE 最小化,并把Z order顺序在此窗口之后(即窗口下一层)的窗口激活 

  ----SW_RESTORE 激活窗口并还原为初始化大小 SW_SHOW 以当前大小和状态激活窗口 

  ----SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态 

  ----SW_SHOWDEFAULT 以默认方式运行

  ----SW_SHOWMAXIMIZED 激活窗口并最大化 

  ----SW_SHOWMINIMIZED 激活窗口并最小化 

  ----SW_SHOWMINNOACTIVE 最小化但不改变当前激活的窗口 

  ----SW_SHOWNA 以当前状态显示窗口但不改变当前激活的窗口 

  ----SW_SHOWNOACTIVATE 以初始化大小显示窗口但不改变当前激活的窗口 

  ----SW_SHOWNORMAL 激活并显示窗口,如果是最大(小)化,窗口将会还原。第一次运行程序 时应该使用这个值 

 

  若ShellExecute函数调用成功,则返回值为被执行程序的实例句柄。若返回值小于32,则表示出现错误。 

 

  示例:

 

  (1),刚才的例子:WinExec(pChar('notepad c:\taoyoyo.txt'),SW_SHOWNORMAL); 

  就可以改变为(假设窗口的句柄为Handle) 

  ShellExecute(Handle,'open','notepad','c:\taoyoyo.txt','',SW_SHOWNORMAL); 

 

  此外,还可以不用那么复杂,因为.TXT的关联程序就是记事本,所以只要这样就可以了:

  ShellExecute(Handle,'','c:\taoyoyo.txt','','',SW_SHOWNORMAL); 

 

  (2),例子(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;  

 

  (3),在VB中,我们首先声明此函数(可由VB自带的API游览器得到): 

  Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long 

 

  然后放置两个Label,设置其属性为: 

  Name lbHomepage lbEMail Caption http://bcbtop.126.com mailto:hugsnow@126.com 

 

  并把字体改为蓝色有下划线,然后分别在两个Label的Click事件中加入以下代码: 

 

  ShellExecute(Me.hWnd,"",lbHomepage.Caption,"","",SW_SHOWNORMAL); 

  ShellExecute(Me.hWnd,"",lbEMail.Caption,"","",SW_SHOWNORMAL); 

 

  3,ShellExecute() 特殊用法 

 

  如果将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。 


本文由豆瓜网专栏作家 豆瓜 投稿发布,并经过豆瓜网编辑审核。

转载此文章须经作者同意,并附上出处(豆瓜网)及本页链接。

若稿件文字、图片、视频等内容侵犯了您的权益,请联系本站进行 投诉处理

相关搜索

winexec
图标 图标

豆瓜

豆瓜网

豆瓜网专栏

  • winexec文件exe格式打开

    图标
    豆瓜 图标 · 今天 01:11:18 · 0浏览
  • oracle数据库备份方法说明

    图标
    豆瓜 图标 · 今天 01:10:11 · 4浏览
  • php正则表达式组成说明

    图标
    豆瓜 图标 · 今天 01:08:58 · 7浏览
  • 全部评论

    豆瓜

    豆瓜网

    豆瓜网专栏

  • winexec文件exe格式打开
  • oracle数据库备份方法说明
  • php正则表达式组成说明
  • dumps区别说明
  • window.showmodaldialog...
  • 我来说两句