说说ShellExecuteEx
来源:互联网 发布:mac bilibili客户端 编辑:程序博客网 时间:2024/04/27 16:37
今天来说说ShellExecuteEx这个函数,先翻译MSDN,然后看个例子。
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之类的错误代码比较。
提供SE_ERR_XXX 之类的错误代码是为了兼容ShellExecute。使用GetLastError可以获得更详细的错误信息。返回值可以使下列之一:
Error
Description
ERROR_FILE_NOT_FOUND
指定文件不存在
ERROR_PATH_NOT_FOUND
指定路径不存在
ERROR_DDE_FAIL
动态数据交换 (DDE) 处理失败
ERROR_NO_ASSOCIATION
没有与制定文件名扩展对应的应用程序
ERROR_ACCESS_DENIED
访问指定文件被拒绝
ERROR_DLL_NOT_FOUND
无法找到运行应用程序所必须的库文件
ERROR_CANCELLED
这个函数要求用户提供更多其他信息(译注:比如弹出对话框),但请求用户被取消了
ERROR_NOT_ENOUGH_MEMORY
没有足够的内存来执行操作
ERROR_SHARING_VIOLATION
共享违规发生了
Windows 95/98/Me: ShellExecuteEx 为Microsoft Layer for Unicode (MSLU)所支持。为了使用这个函数,必须添加额外的文件到应用程序中去,请参考:Microsoft Layer for Unicode on Windows Me/98/95 Systems.
函数信息:
Minimum DLL Version
shell32.dll version 3.51 or later
Custom Implementation
No
Header
shellapi.h
Import library
shell32.lib
Minimum operating systems
Windows NT 4.0, Windows 95
Unicode
Implemented as ANSI and Unicode versions
下面举例说明如何使用这个函数,executePackage 这个函数用来执行某个应用程序。
- 说说ShellExecuteEx
- 说说ShellExecuteEx
- ShellExecuteEx
- ShellExecuteEx
- ShellExecuteEx
- ShellExecuteEx shellExecute
- ShellExecuteEx函数
- SHELLEXECUTEINFO,ShellExecuteEx
- 说说
- 说说
- 说说
- 说说
- 说说
- 说说
- 说说
- 说说
- 说说
- 说说
- 【转】IBM企业结构
- Oracle的BI解决方案
- 金融危机下最抢手的IT人才
- 详解Java中抽象类和接口的区别
- 09年IT界最值得关注的七大并购案
- 说说ShellExecuteEx
- C:/WINDOWS/system32/drivers/etc下的文件作用?
- 希捷硬盘真伪查询
- oregano客户端socket创建时候的动作
- 用BitBlt旋转图片2
- UNIX Shell 编程(5)
- 谈谈就业形势。。。
- radio
- web工程中web.xml添加taglib标签报错的解决办法