shellexecuteex 输入输出参数都是SHELLEX
作者:admin 发布时间:2023-03-23 00:24:11 分类:解惑 浏览:133
输入输出参数都是 SHELLEXECUTEINFO 结构体,其结构定义如下:
typedef struct _SHELLEXECUTEINFO
{
DWORD cbSize;//结构大小,sizeof(SHELLEXECUTEINFO)
ULONG fMask;//指定结构成员的有效性
HWND hwnd;//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL
LPCTSTR lpVerb;//指定该函数的执行动作
LPCTSTR lpFile;//操作对象路径
LPCTSTR lpParameters;//执行参数,可以为 ULL
LPCTSTR lpDirectory;//工作目录,可以为 NULL
int nShow;//显示方式
HINSTANCE hInstApp;//如果设置了 SEE_MASK_NOCLOSEPROCESS ,并且调用成功则该值大于32,调用失败者被设置错误值
LPVOID lpIDList;//ITEMIDLIST结构的地址,存储成员的特别标识符,当fMask不包括SEE_MASK_IDLIST或SEE_MASK_INVOKEIDLIST时该项被忽略
LPCTSTR lpClass;//指明文件类别的名字或GUID,当fMask不包括SEE_MASK_CLASSNAME时该项被忽略
HKEY hkeyClass;//获得已在系统注册的文件类型的Handle,当fMask不包括SEE_MASK_HOTKEY时该项被忽略
DWORD dwHotKey;//程序的热键关联,低位存储虚拟关键码(Key Code),高位存储修改标志位(HOTKEYF_),当fmask不包括SEE_MASK_HOTKEY时该项被忽略
union
{
HANDLE hIcon;//取得对应文件类型的图标的Handle,当fMask不包括SEE_MASK_ICON时该项被忽略
HANDLE hMonitor;//将文档显示在显示器上的Handle,当fMask不包括SEE_MASK_HMONITOR时该项被忽略
} DUMMYUNIONNAME;
HANDLE hProcess;//指向新启动的程序的句柄。若fMask不设为SEE_MASK_NOCLOSEPROCESS则该项值为NULL。
//但若程序没有启动,即使fMask设为SEE_MASK_NOCLOSEPROCESS,该值也仍为NULL。
//如果没有新创建进程,也会为空
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;复制代码
fMask 用于指定结构成员的内容和有效性,可为下列值的组合:
● SEE_MASK_DEFAULT (0)默认
● SEE_MASK_CLASSNAME 使用 lpClass 参数,如果 SEE_MASK_CLASSKEY 也有效,则用后者
● SEE_MASK_CLASSKEY 使用 hkeyClass 参数
● SEE_MASK_IDLIST 使用 lpIDList 参数
● SEE_MASK_INVOKEIDLIST 使用选定项目的快捷菜单 IContextMenu 接口处理程序
● SEE_MASK_ICON 使用 hIcon 给出的菜单,不能与 SEE_MASK_HMONITOR 共用,Vista之后
● SEE_MASK_HOTKEY 使用 dwHotKey 参数
● SEE_MASK_NOCLOSEPROCESS 如果执行之后需要返回进程句柄,或者等待执行完毕的话,则需要指定该参数,从结构参数意义可以看到 hProcess 和 hInstApp 都依赖该选项
● SEE_MASK_CONNECTNETDRV 验证共享并连接到驱动器号
● SEE_MASK_NOASYNC 不等待操作完成,直接返回,会创建一个后台线程运行。
● SEE_MASK_FLAG(鼓浪屿在哪里个城市?鼓浪屿位于厦门,因岛上的鼓浪石而得名,与厦门大学隔海相望。鼓浪屿代表景点有:日光岩、菽庄花园、皓月园、毓园、鼓浪石等等。)_DDEWAIT 弃用,使用 SEE_MASK_NOASYNC
● SEE_MASK_DOENVSUBST 环境变量会被展开
● SEE_MASK_FLAG_NO_UI 出现错误,不显示错误消息框,比如不会弹出找不到文件之类的窗口,直接返回失败
● SEE_MASK_UNICODE UNICODE 程序
● SEE_MASK_NO_CONSOLE 继承父进程的控制台,而不是创建新的控制台,与 CREATE_NEW_CONSOLE 相反
● SEE_MASK_ASYNCOK 执行在后台线程,调用立即返回
● SEE_MASK_NOQUERYCLASSSTORE 弃用
● SEE_MASK_HMONITOR 使用 hmonitor,不能与 SEE_MASK_ICON 共存
● SEE_MASK_NOZONECHECKS 不执行区域检查
● SEE_MASK_WAITFORINPUTIDLE 创建新进程后,等待进程变为空闲状态再返回,超时时间为1分钟
● SEE_MASK_FLAG_LOG_USAGE 跟踪应用程序启动次数
● SEE_MASK_FLAG_HINST_IS_SITE
lpVerb 参数与 ShellExecute 的 lpOperation 参数一致:
edit 用编辑器打开 lpFile 指定的文档,如果 lpFile 不是文档,则会失败
explore 浏览 lpFile 指定的文件夹
find 搜索 lpDirectory 指定的目录
open 打开 lpFile 文件,lpFile 可以是文件或文件夹
print 打印 lpFile,如果 lpFile 不是文档,则函数失败
properties 显示属性
runas 请求以管理员权限运行,比如以管理员权限运行某个exe
NULL 执行默认”open”动作
nShow 与 ShellExecute 的该参数一致:
● SW_HIDE 隐藏窗口,活动状态给令一个窗口
● SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
● SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
● SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
● SW_SHOWMAXIMIZED 最大化窗口,并将其激活
● SW_SHOWMINIMIZED 最小化窗口,并将其激活
● SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
● SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
● SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
● SW_SHOWNORMAL 与SW_RESTORE相同
如果设置了 SEE_MASK_NOCLOSEPROCESS ,调用成功则 hInstApp 返回大于32的值,调用失败会返回:
● SE_ERR_FNF (2) 文件未找到
● SE_ERR_PNF (3) 路径未找到
● SE_ERR_ACCESSDENIED (5) 拒绝访问
● SE_ERR_OOM (8) 内存不足
● SE_ERR_DLLNOTFOUND (32) 动态库未找到
● SE_ERR_SHARE (26) 无法共享打开的文件
● SE_ERR_ASSOCINCOMPLETE (27) 文件关联信息不完整
● SE_ERR_DDETIMEOUT (28) 操作超时
● SE_ERR_DDEFAIL (29) 操作失败
● SE_ERR_DDEBUSY (30) DDE 操作忙
● SE_ERR_NOASSOC (31) 文件关联不可用
返回值:
函数执行成功,返回 TRUE ,否则返回 FALSE ,可使用 GetLastError 获取错误码。
● ERROR_FILE_NOT_FOUND 文件不存在
● ERROR_PATH_NOT_FOUND 路径不存在
● ERROR_DDE_FAIL DDE(动态数据交换)失败
● ERROR_NO_ASSOCIATION 未找到与指定文件拓展名关联的应用
● ERROR_ACCESS_DENIED 拒绝访问
● ERROR_DLL_NOT_FOUND 未找到dll
● ERROR_CANCELLED 功能提示用户提供额外信息,但是用户取消请求。
● ERROR_NOT_ENOUGH_MEMORY 内存不足
● ERROR_SHARING_VIOLATION 发生共享冲突
实例:
SHELLEXECUTEINFO sei;
ZeroMemory( sei, sizeof(SHELLEXECUTEINFO));//使用前最好清空
sei.cbSize=sizeof(SHELLEXECUTEINFO);//管理员权限执行cmd,最基本的使用与 ShellExecute 类似
sei.lpFile=_T("cmd.exe");
sei.nShow=SW_SHOW;
sei.lpVerb=_T("runas");
ShellExecuteEx( sei);
ZeroMemory( sei, sizeof(SHELLEXECUTEINFO));
sei.cbSize=sizeof(SHELLEXECUTEINFO);
sei.lpFile=_T("cmd.exe");
sei.nShow=SW_SHOW;
sei.fMask=SEE_MASK_NOCLOSEPROCESS;//使用 SEE_MASK_NOCLOSEPROCESS 参数
sei.lpVerb=_T("open");
if (ShellExecuteEx( sei))//执行成功
{
if (sei.hProcess)//指定 SEE_MASK_NOCLOSEPROCESS 并其成功执行,则 hProcess 将会返回执行成功的进程句柄
WaitForSingleObject(sei.hProcess, INFINITE);//等待执行完毕
}
else
{
CString s;
s.Format(_T("ShellExecuteEx error,error code:%d"), GetLastError());
MessageBox(s);
}复制代码
其他诸如打开文件、打开网页等与 ShellExecute 类似。
相关推荐
- 树林阴翳 1、1树林的树荫意味着遮蔽。2
- 暨 暨是什么意思呢?我们一起来了解
- 张兰俏江南 最近,因汪小菲、大S闹离婚,张
- 嬴政和芈月是什么关系 1、米月实际上是嬴政的曾祖母,
- 放驴小子于小飞被打 上周的《笑傲江湖》第二季的第八
- 明日之后沙石堡宝箱 我们在游戏中的沙石堡会去寻找探
- 旧显示器 导读:在这个电子产品随处可见的
- 汪文展 1、汪文展,男,汉族,1966
- 墙面铝板 1、处理墙面安装铝单板之前,需
- 2013高考时间 1,2013年高考什么时候20
- 毕方大王 1、电影《毕方》是夏青根写的电
- 仙女山的月亮 1、《仙女山的月亮》歌词:冰凉
- 得胜6320 1、苏里南播棋(Adji-bo
- 不同银行转账手续费 不同银行之间转账时,每家银行的
- 手机购买电影票 手机购买电影票变得越来越方便了
- 仁川机场免税店 亲身经历!仁川机场免税店攻略,
- 孤单圣诞节 “每逢佳节倍思亲”,思绪总在热
- 朱砂痣 一、朱砂痣是什么意思朱砂痣即红
- 世界上最贵的东西 随着大家生活水平的提高,很多物
- 朴洪俊 1、崔哲,艺名崔二丫erya,
- analacrobats 1、adobeacrobat7
- 浙江省连锁经营协会 1、魏任斌,男,厦门大学会计学
- 江苏同方专转本 2022年江苏各院校专转本专业
- oppo手机怎么投屏到电视 以oppofindx2手机,C
- 独臂刀客主题曲 钱小豪演的电视连续剧独臂刀客主
- 清风欲孽 1、清穿文:一般指现代人穿越到
- 求人 求人办事的时候一定要会说话,只
- 工行纸白银双向交易 工行纸白银双向交易如何操作?先
- 瓢虫是什么意思 1、瓢虫释义:动物名。昆虫纲瓢
- 华为荣耀7x 你现在用的是什么牌子的手机呢?
- 最新推荐
-
- 野心勃勃的意思 【野心勃勃】的意思,拼音,读音
- 梦幻诛仙青云门加点 梦幻诛仙青云门加点,相信很多小
- 卡天赋bug 卡天赋bug之前,最烦人的就是
- 颊 【颊】字的意思解释,拼音,组词
- 百无禁忌什么意思 【百无禁忌】的意思,拼音,读音
- 对方 【对方】的意思,拼音,读音
- profiled单词的意思,例句
- 自树一帜的意思,拼音
- 拾人牙慧什么意思 【拾人牙慧】的意思,拼音,读音
- 倦的组词 疲倦
- 酒席 【酒席】的意思,拼音,读音等)
- 步步生莲游戏 阴阳师谋士任务中怎么种莲花?玩
- 叠组词 重叠
- 雀圣1演员表 演员表角色演员备注十三飞元秋雀
- 火炬之光2修改器怎么用 火炬之光2修改器怎么用?《火炬
- 地牢围攻1攻略 地牢围攻1攻略及地牢围攻1攻略
- derivative单词的意思,例句
- 硬派 【硬派】的意思,拼音,读音等)
- 年年 【年年】的意思,拼音,读音
- supplying单词的意思,例句
- 繁弦急管的意思 【繁弦急管】的意思,拼音,读音
- 引诱 【引诱】的意思,拼音,读音
- 遗嘱的拼音 【遗嘱】的意思,拼音,读音等)
- 求道 【求道】的意思,拼音,读音等)
- 夏组词 “夏”组词,拼音,解释夏橘夏成
- brutally单词的意思,例句
- 生化危机5秘籍 生化危机5攻略秘籍及生化危机5
- 国手是什么意思 【国手】的意思,拼音,读音
- bitty单词的意思,例句
- 瓜田李下的意思,拼音
- 天下3职业介绍 天下3职业加点和天下3职业技能
- looting单词的意思,例句
- 缀的组词和拼音 【缀】字的意思解释,拼音,组词
- 慎的组词 “慎”组词,拼音,解释慎狱慎防
- 中国乒乓球运动员 中国乒乓球十大巨星中国乒乓球十
- 诡组词 【诡】字的意思解释,拼音,组词
- 极限的祭坛攻略 极限的祭坛攻略及地下城极限的祭
- 冷暖自知的意思 【冷暖自知】的意思,拼音,读音
- 跳水拼音 【跳水】的意思,拼音,读音等)
- 朱墨 【朱墨】的意思,拼音,读音等)
- 刀剑2公测 刀剑2什么时候公测?可能有部分
- 通天塔电影解析 2007年奥斯卡结束当夜,罗杰
- 楷怎么读 【楷】字的意思解释,拼音,组词
- 受罚 【受罚】的意思,拼音,读音
- 鬼镜1 (本文由火锅剧场原创:hott
- 瞎子摸象的意思,拼音
- 弦组词 “弦”组词,拼音,解释弦脉弦韦
- tighten单词的意思,例句
- 莫须有 【莫须有】的意思,拼音,读音等
- 无能 【无能】的意思,拼音,读音等)
- 凉帽 【凉帽】的意思,拼音,读音
- 隐姓埋名 【隐姓埋名】的意思,拼音,读音
- 清理平台 清理平台任务完成攻略清理平台任
- 四不像是什么 【四不像】的意思,拼音,读音等
- 驱魔师pk加点 驱魔师pk加点和法驱魔师加点,
- 猎刃好玩吗 猎刃好玩吗?猎刃怎么样?猎刃游
- 国统纲领 国统纲领全名为国家统一纲领,经
- 验的组词 “验”组词,拼音,解释验明正身
- 独组词 独立
- 外宽内深 【外宽内深】的意思,拼音,读音