WinExec、ShellExecute、CreateProcess iexplore.exe打开网页

iexplore.exe 打开网页

运行窗口输入 iexplore.exe https://www.baidu.com/?tn=sitehao123_15 就能打开百度主页

WinExec主要运行EXE文件

**
  ⑴ 函数原型: UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);
  ⑵ 参数:
  lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。
  uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值。
  ⑶ 返回值:
  若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:
  ① 0:系统内存或资源已耗尽。
  ② ERROR_BAD_FORMAT:EXE文件无效(非Win32.EXE或.EXE影像错误)。
  ③ ERROR_FILE_NOT_FOUND:指定的文件未找到。
  ④ ERROR_PATH_NOT_FOUND:指定的路径未找到。
  虽然Microsoft认为WinExec已过时,但是在许多时候,简单的WinExec函数仍是运行新程序的最好方式。简单地传送作为第一个参数的 命令行,还需要决定如何显示程序(该程序也许会忽视它)的第二个参数。通常,将其设置为SW_SHOW,也可尝试SW_MINIMIZED或 SW_MAXIMIZED。WinExec不允许用CreateProcess获得的所有选项,而它的确简单。

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

1、标准用法
  ShellExecute函数原型及参数含义如下:
  HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd);
  ●hWnd:用于指定父窗口句柄。当函数调用过程出现错误时,它将作为Windows消息窗口的父窗口。例如,可以将其设置为应用程序主窗口句柄,即Application.Handle,也可以将其设置为桌面窗口句柄(用GetDesktopWindow函数获得)。
  ●lpOperation:用于指定要进行的操作。其中“open”操作表示执行由FileName参数指定的程序,或打开由FileName参数指定的文件或文件夹;“print”操作表示打印由FileName参数指定的文件;“explore”操作表示浏览由FileName参数指定的文件夹。当参数设为nil时,表示执行默认操作“open”。
  ●lpFileName:用于指定要打开的文件名、要执行的程序文件名或要浏览的文件夹名。
  ●lpParameters:若FileName参数是一个可执行程序,则此参数指定命令行参数,否则此参数应为nil或PChar(0)。
  ●lpDirectory:用于指定默认目录。
  ●lpShowCmd:若FileName参数是一个可执行程序,则此参数指定程序窗口的初始显示方式,否则此参数应设置为0。
  #include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <shellapi.h>

int main( void )
{
HINSTANCE hNewExe = ShellExecuteA(NULL, “open”, “d:\tese.log”, NULL, NULL, SW_SHOW);
if ((DWORD)hNewExe <= 32)
{
printf(“return value:%d\n”, (DWORD)hNewExe);
}
else
{
printf(“successed!\n”);
}
   printf(“GetLastError: %d\n”, GetLastError());
system(“pause”);
return 1;
}
当“D:\test.log”文件不存在是,执行结果如下:
  这里若函数执行错误, GetLastError()不一定能捕获到错误代码,例如当“d:\tese.log”文件存在,将记事本"notepad.exe"命名为其他名字时:

另外两个函数的返回值就不列出了。
  2、特殊用法

1)如果将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);

  2)如果将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:[email protected]”, nil, nil, SW_SHOWNORMAL);
  打开新邮件窗口,并自动填入收件人地址。若指定多个收件人地址,则收件人地址之间必须用分号或逗号分隔开(下同)
如:ShellExecute(this->m_hWnd, “open”, “mailto:[email protected]”, “”, “”, SW_SHOW);
  格式三:mailto:用户账号@邮件服务器地址?subject=邮件主题&body=邮件正文
  如:ShellExecute(handle, “open”, “mailto:[email protected]?subject=Hello&Body=This is a test”, nil, nil, SW_SHOWNORMAL);
  打开新邮件窗口,并自动填入收件人地址、邮件主题和邮件正文。若邮件正文包括多行文本,则必须在每行文本之间加入换行转义字符%0a。

发布了119 篇原创文章 · 获赞 9 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/haodawei123/article/details/102450833
今日推荐