ShellExecute(

hWnd: HWND; {指定父窗口句柄}

Operation: PChar; {指定动作, 譬如: open、runas、print、edit、explore、find[] }

FileName: PChar; {指定要打开的文件或程序}

Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}

Directory: PChar; {缺省目录}

ShowCmd: Integer {打开选项}

): HINST;

使用要包含  #include <shellapi.h>

ShellExecute函数原型及参数含义如下:

ShowCmd 参数可选值:SW_HIDE = 0; {隐藏}

SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活}

SW_NORMAL = 1; {同 SW_SHOWNORMAL}

SW_SHOWMINIMIZED = 2; {最小化, 激活}

SW_SHOWMAXIMIZED = 3; {最大化, 激活}

SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}

SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活}

SW_SHOW = 5; {同 SW_SHOWNORMAL}

SW_MINIMIZE = 6; {最小化, 不激活}

SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}

SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}

SW_RESTORE = 9; {同 SW_SHOWNORMAL}

SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}

SW_MAX = 10; {同 SW_SHOWNORMAL}

3返回值编辑

执行成功会返回应用程序句柄

返回的HINSTANCE可以将它转换为一个整数(%d),并比较它的值大于还是小于32或比较它的错误代码

返回值大于32表示执行成功

返回值小于32表示执行错误

返回值可能的错误有: = 0 {内存不足}

ERROR_FILE_NOT_FOUND = 2; {文件名错误}

ERROR_PATH_NOT_FOUND = 3; {路径名错误}

ERROR_BAD_FORMAT = 11; {EXE 文件无效}

SE_ERR_SHARE = 26; {发生共享错误}

SE_ERR_ASSOCINCOMPLETE = 27; {文件名不完全或无效}

SE_ERR_DDETIMEOUT = 28; {超时}

SE_ERR_DDEFAIL = 29; {DDE 事务失败}

SE_ERR_DDEBUSY = 30; {正在处理其他 DDE 事务而不能完成该 DDE 事务}

SE_ERR_NOASSOC = 31; {没有相关联的应用程序}

例子编辑

//调用计算器

ShellExecute(NULL, "open", "calc.exe", NULL, NULL, SW_SHOWNORMAL);

//调用记事本

ShellExecute(NULL,"open","NOTEPAD.EXE", NULL, NULL, SW_SHOWNORMAL);

●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函数的标准用法,下面将介绍它的特殊用法。

C++/MFC如何启动另一个应用程序并获取其进程 ID的更多相关文章

  1. android intent隐式调用之一个应用程序启动另一个应用程序

    理解Intent的关键之一是理解清楚Intent的两种基本用法:一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似:另一种是隐式的Intent,即Inten ...

  2. Android学习笔记_70_一个应用程序启动另一个应用程序的Activity

    第一种(我自己写的) :之前在网上看来一些,很多不是我要的可以启动另外一个应用程序的主Activity. //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activit ...

  3. C#启动另一个应用程序并传参数

    第一个程序: try { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "Windows ...

  4. 按键(vb)启动指定目录的程序以及获取当前应用路径

    Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function ...

  5. IOS在一个程序中启动另一个程序

    尽管iPhone不允许同时运行两个应用程序,我们可以从自己的应用程序中启动另一个应用程序,并且可以在应用程序之间共享数据.我们可以使用UIApplication类的openURL:方法从一个应用程序来 ...

  6. Android -- 开机启动无界面后台程序

    简单的说,这是一个没有界面的后台运行的应用程序 而且,还有一功能:开机自启动,启动运行一个服务 程序结构非常简单,两个类,一个是service的扩展类,一个是BroadcastReceiver扩展类 ...

  7. android 在一个应用中启动另一个应用

    在程序开发过程当中,常遇到需要启动另一个应用程序的情况,比如在点击软件的一个按钮可以打开地图软件. 如果既有包名又有主类的名字,那就好 办了, 直接像下面就行: [html]  Intent inte ...

  8. 从”茄子快传”看应用程序怎样获取手机已安装程序的apk文件

    "茄子快传"是联想开发的一款近距离文件共享软件.它通过wifi-direct(速度飞快,不须要联网)或者普通的网络(速度慢)在不同手机间传递文件. 不知为何.它就火了起来,火的也飞 ...

  9. Android 在一个程序中启动另一个程序

    Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用.一般我们知道了另一个应用的包名和MainActivity的名字 ...

随机推荐

  1. Vmvare下Ubuntu安装Python3.4

    Ubuntu14.4下默认安装的Python版本是2.7.随着Python3.4的使用,现在大部分Python开发者都喜欢使用Py3.4.那么Ubuntu下应该怎么安装Python3.4呢? (1). ...

  2. js响应HTML客户端下拉列表的修改事件

    这个案例对经常写前端程序的人来讲应该比较简单,不过像我这种习惯于后台开发,对前端不熟悉的人来说,还是有参考意义的. 在asp.net里面,经常需要响应下拉列表DropDownList的Selected ...

  3. MapReduce简介

    MapReduce简介 参考自[http://www.cnblogs.com/swanspouse/p/5130136.html] MapReduce定义: MapReduce是一种可用于数据处理的编 ...

  4. Java web项目引用java项目,类型找不到

    Java web项目引用java项目,类型找不到 错误信息: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapp ...

  5. INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页

    INNO 补丁制作技术, 打开 INNO 补丁制作方法的第一页 作者:xin 日期:2005-09-23 字体大小: 小 中 大   VPatch 在 INNO 中的应用. VPatch 属于专为NS ...

  6. python--ulipad控制台中文输出乱码

    ulipad用起来顺手,而不尽人意的地方时,它不能正确输出中文.而且有人指出这和文件的编码没关系,所以将”设置“选项里”缺省文档编码“修改为”utf-8“也无济于事.为了解决这个问题,我在网上搜了搜, ...

  7. Hadoop学习17--yarn配置篇-内存管理

    这篇文章来自于:董的博客,记录备查 内存管理,主要是管理nodemanager上的物理内存和虚拟内存. YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会 ...

  8. 【uTenux实验】内存池管理(固定内存池和可变内存池)

    1.固定内存池管理实验 内存管理是操作系统的一个基础功能.uTenux的内存池管理函数提供了基于软件的内存池管理和内存块分配管理.uTenux的内存池有固定大小的内存池和大小可变的内存池之分,它们被看 ...

  9. Java中的代理模式

    代理模式在Java Web的框架中经常使用到.比如说在对数据库的访问中,核心功能是对数据库的增删改查,而连接数据库.处理事务等功能我们在开发中也要考虑到.所以我们将数据库的CRUD抽象到接口中,然后实 ...

  10. 14.高度最小的BST

    题目描述 对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树. 给定一个有序序列int[] vals,请返回创建的二叉查找树的高度. 返回高度的代码如下: imp ...