当前位置:首页 > 芯闻号 > 充电吧
[导读]LPCTSTR lpFile;LPCTSTR lpParameters;LPCTSTR lpDirectory;int nShow;HINSTANCE hInstApp;LPVOID lpIDList

LPCTSTR lpFile;
LPCTSTR lpParameters;
LPCTSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
LPVOID lpIDList;
LPCTSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
union {
HANDLE hIcon;
HANDLE hMonitor;
} DUMMYUNIONNAME;
HANDLE hProcess;

} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;

 

在C#中其结构为

public struct SHELLEXECUTEINFO // 用于 ShellExecuteEx
{
public int cbSize;
public int fMask;
public int hwnd;
public string lpVerb;
public string lpFile;
public string lpParameters;
public string lpDirectory;
public int nShow;
public int hInstApp;
public int lpIDList;
public string lpClass;
public int hkeyClass;
public int dwHotKey;
public int hIcon;
public int hProcess;
}

 

参数详解:

cbSize
存储该结构的长度,以字节为单位。

fMask
一个标志数组,用来设置其他成员的有效性
SEE_MASK_CLASSKEY         0x3
SEE_MASK_CLASSNAME         0x1
SEE_MASK_CONNECTNETDRV     0x80
SEE_MASK_DOENVSUBST         0x200
SEE_MASK_FLAG_DDEWAIT     0x100
SEE_MASK_FLAG_LOG_USAGE     0x4000000
SEE_MASK_FLAG_NO_UI         0x400
SEE_MASK_HMONITOR         0x200000
SEE_MASK_HOTKEY         0x20
SEE_MASK_ICON             0x10
SEE_MASK_IDLIST         0x4
SEE_MASK_INVOKEIDLIST     0xC
SEE_MASK_NOASYNC         0x100000
SEE_MASK_NOCLOSEPROCESS     0x40
SEE_MASK_NOZONECHECKS     0x800000
SEE_MASK_NO_CONSOLE         0x8000
SEE_MASK_UNICODE         0x100000
SEE_MASK_FILEANDURL         0x4000000

 

hwnd
调用这个 ShellExecuteEx 的窗口句柄

lpVerb
设定这个 ShellExecuteEx 的动作,包括:
edit
打开编辑器编辑文档,如果 lpFile 不是一个文档,则这个函数会失败
explore
以 lpFile 为路径打开资源管理器
find
从指定目录开始搜索
open
根据 lpFile 打开对应文件,该文件可以为可执行文件、文档或者文件夹
print
根据 lpFile 打印文档,若 lpFile 不是一个文档则该函数会失败
properties
显示文件或文件夹的属性

lpFile
以 /0 结尾的字符串,指出 lpVerb 的操作对象的路径,被系统支持的操作包括文本的 open 、 print 等,其中 print 要求必须有一个已经注册的打印机,而其他种类的文档会通过系统关联进行查询执行。若要设置一个空的 namespace ,则需要设置 fMask 的值为 see_mask_invokeidlist。
注意: 若 see_mask_invokeidlist 已设置,则可以藉由 lpFile 或者 lpIDList 确定 item 的系统路径或者 PIDL

lpParameters
运行 / 打开程序的参数,如果打开的是一个文档,则该项无效

lpDirectory
指明工作目录的名字,成员没有说明,则默认为当前目录

nShow
说明 ShellExecuteEx 打开的程序将以什么形式出现

hInstApp
如果函数运行成功,该项的值将大于 32 ,否则会是下列错误对应的值
SE_ERR_FNF
没有找到文件
SE_ERR_PNF
没有找到路径
SE_ERR_ACCESSDENIED
拒绝访问
SE_ERR_OOM
内存不足
SE_ERR_DLLNOTFOUND
没有找到动态链接库
SE_ERR_SHARE
不能操作一个以打开的文件
SE_ERR_ASSOCINCOMPLETE
文件关联信息不完整
SE_ERR_DDETIMEOUT
DDE 操作超时
SE_ERR_DDEFAIL
DDE 操作失败
SE_ERR_DDEBUSY
DDE 繁忙
SE_ERR_NOASSOC
没有找到文件关联

lpIDList
一个 itemidlist 结构的地址,用来存储成员的特别标识符,当 fMask 不包括 see_mask_idlist 或 see_mask_invokeidlist 时该项被忽略

lpClass
用以指明文件类别的名字或 GUID ,当 fMask 不包括 see_mask_classname 时该项被忽略

hkeyClass
获得已在系统注册的文件类型的 Handle ,当 fMask 不包括 see_mask_classkey 时该项被忽略

dwHotKey
程序的热键关联,低位存储虚拟关键码( Key Code ),高位存储修改标志位 (HOTKEYF_) ,修改标志为( modifier flags )的详细列表请看 wm_sethotkey 消息的描述,当 fmask 不包括 see_mask_hotkey 时该项被忽略

DUMMYUNIONNAME
hIcon
取得对应文件类型的图标的 Handle ,当 fMask 不包括 SEE_MASK_ICON 时该项被忽略

hMonitor
将文档显示在显示器上的 Handle ,当 fMask 不包括 SEE_MASK_HMONITOR 时该项被忽略

hProcess
用于进行 return 操作的成员,若 fMask 不设为 see_mask_nocloseprocess 则该项值为 null ,即使 fMask 设为 see_mask_nocloseprocess ,若没有进程启动,该项值仍为 null 。即没有新的进程启动,则该项值一只为 null

 

3 、说说 ShellExecuteEx

http://blog.csdn.net/kesalin/category/242901.aspx

 

ShellExecuteEx Function

对指定应用程序执行某个操作

语法:

BOOL ShellExecuteEx(      



    LPSHELLEXECUTEINFO lpExecInfo

 

 

 

 

);

 

 

参数:

lpExecInfo

[in, out]  一个指向 SHELLEXECUTEINFO 结构的指针,用来传递和保存应用程序执行相关的信息。

返回值:

如果函数成功执行就返回 TRUE ,否则返回 FALSE 。可调用 GetLastError 获取错误信息。

备注:

由于 ShellExecuteEx能够将执行委托给那些由组件对象模型 COM 激活的 Shell 扩展(数据源,上下文菜单句柄,动词实现),因此在调用 ShellExecuteEx之前要先初始化 COM 。某些 Shell 扩展要求单线程单元模型的 COM ,在这种情况下,应当像下面一般初始化 COM :

 

CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

 

 

 

 

在某些情况下 ShellExecuteEx并没有使用这种类型的 Shell 扩展 ,这时就无需初始化 COM 。虽然如此,总是在使用这个函数之前初始化 COM 是个不错的举措。

如果有多个显示器,并且你指定了一个 HWND同时设置 lpExecInfo的成员 lpVerb为 "Properties" ,那么由 ShellExecuteEx创建的任何窗口都有可能显示在不正确的位置上。

如果这个函数执行成功,它会设置 SHELLEXECUTEINFO的 hInstApp成员为一个大于 32 的值。如果函数执行失败, hInstApp成员被设置为 SE_ERR_XXX (提示失败的原因)。虽然为了兼容 16 位的 windows 应用程序 hInstApp被声明成一个句柄,但它并不是一个句柄。它只能被转型为整数,并同 32 或 SE_ERR_XXX 之类的错误代码比较。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭