
ShellExecute function
Syntax
1 2 3 4 5 6 7 8 |
HINSTANCE ShellExecute( _In_opt_ HWND hwnd, _In_opt_ LPCTSTR lpOperation, _In_ LPCTSTR lpFile, _In_opt_ LPCTSTR lpParameters, _In_opt_ LPCTSTR lpDirectory, _In_ INT nShowCmd ); |
Parameters
- hwnd [in, optional]
- Type: HWND
指定父窗口句柄用于显示UI或错误消息。如果操作不与窗口相关联,这个值可以是NULL。 - lpOperation [in, optional]
- Type: LPCTSTR
- 一个指针,指向一个空终止字符串,在这种情况下为一个动词,它指定要执行的动作。一组可用动词取决于特定的文件或文件夹。一般情况下,从一个对象的快捷菜单中得到可用的操作动词。常用的动词有以下:
- edit
- 启动编辑器,并打开该文件进行编辑。如果参数lpFile不是一个文档文件,该函数将失败。
- explore
- 浏览由参数lpFile指定的文件夹。
- find
- 从lpDirectory指定的目录中开始搜索。
- open
- 打开由参数lpFile指定的项目。该项目可以是一个文件或文件夹。
- 打印由参数lpFile指定的文件。如果参数lpFile不是一个文档文件,该函数将失败。
- NULL
- 默认的动作,如果有的话。如果没有,使用“open”。如果没有动作可用,系统将使用在注册表中列出的第一个动词。
- lpFile [in]
- Type: LPCTSTR
- 一个指针,指向一个空终止字符串,该字符串指定要在其上执行指定动作的文件或对象。要通过完全合格的解析名称指定一个Shell命名空间对象。请注意,并非所有动词都支持所有对象。例如,不是所有的文件类型都支持“打印”动词。如果lpDirectory参数使用相对路径,参数lpFile不要使用相对路径。
- lpParameters [in, optional]
- Type: LPCTSTR
- 如果参数lpFile指定一个可执行文件,这个参数是一个指针,指向一个空终止字符串,该字符串指定要传递给应用程序的参数。此字符串的格式由被调用的动词确定。如果参数lpFile指定一个文档文件,lpParameters应该是NULL。
- lpDirectory [in, optional]
- Type: LPCTSTR
- 一个指针,指向一个空终止字符串,该字符串指定默认的(工作)目录。如果这个值是NULL,则使用当前工作目录。如果使用参数lpFile提供的相对路径,lpDirectory不使用相对路径。
- nShowCmd [in]
- Type: INT
- 该指定的应用程序在打开时的显示标识。如果参数lpFile指定一个文档文件,该标记被简单地传递到相关联的应用程序。它是由应用程序决定如何处理它。这些值在Winuser.h中定义。
- SW_HIDE (0)
- 隐藏窗口并激活另一个窗口。
- SW_MAXIMIZE (3)
- 最大化指定窗口。
- SW_MINIMIZE (6)
- 最小化指定窗口并在z-order激活下一个顶层窗口。
- SW_RESTORE (9)
- 激活并显示窗口。如果窗口被最小化或最大化,Windows将它恢复到原来的大小和位置。还原最小化窗口时,应用程序应指定此标识。
- SW_SHOW (5)
- 激活窗口,并在其当前大小和位置显示。
- SW_SHOWDEFAULT (10)
- 通过启动应用程序设置基于STARTUPINFO结构中指定的SW_flag的显示状态传递给CreateProcess 函数,应用程序应该调用ShowWindow这个标志设置主窗口最初显示状态。
- SW_SHOWMAXIMIZED (3)
- 激活窗口并将其显示为最大化窗口。
- SW_SHOWMINIMIZED (2)
- 激活窗口并将其显示为最小化窗口。
- SW_SHOWMINNOACTIVE (7)
- 显示窗口为最小化窗口。活动窗口保持活动状态。
- SW_SHOWNA (8)
- 显示在当前状态的窗口。活动窗口保持活动状态。
- SW_SHOWNOACTIVATE (4)
- 显示在最近的大小和位置的窗口。活动窗口保持活动状态。
- SW_SHOWNORMAL (1)
- 激活并显示一个窗口。如果窗口被最小化或最大化,Windows将它恢复到原来的大小和位置。显示第一次的窗口时,应用程序应指定此标志。
Return value
Type: HINSTANCE
如果函数成功,则返回一个大于32的值。如果函数失败,则返回一个错误值,指出失败的原因。返回值是为了向后兼容16-bit Windows应用程序。但是,它不是一个真正的程序。它可以转换为intint和32或如下错误代码比较。
错误代码 描述
- 0
- 操作系统是内存或资源。
- ERROR_FILE_NOT_FOUND
- 找不到指定的文件。
- ERROR_PATH_NOT_FOUND
- 找不到指定的路径。
- ERROR_BAD_FORMAT
- .exe文件无效(非Win32.exe文件或错误的.exe镜像)。
- SE_ERR_ACCESSDENIED
- 操作系统拒绝访问指定的文件。
- SE_ERR_ASSOCINCOMPLETE
- 文件名关联不完整或无效。
- SE_ERR_DDEBUSY
- DDE的交易无法完成,因为其他的DDE交易正在处理中。
- SE_ERR_DDEFAIL
- 该DDE事务失败。
- SE_ERR_DDETIMEOUT
- DDE的交易无法完成,因为请求超时。
- SE_ERR_DLLNOTFOUND
- 找不到指定的DLL。
- SE_ERR_FNF
- 找不到指定的文件。
- SE_ERR_NOASSOC
- 没有与给定的文件扩展名关联的应用程序。如果您尝试打印一个文件,该文件是不可打印,这个错误也将被返回。
- SE_ERR_OOM
- 没有足够的内存来完成操作。
- SE_ERR_PNF
- 找不到指定的路径。
- SE_ERR_SHARE
- 发生共享冲突。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
//譬如用记事本打开一个文件 ShellExecute(Handle, 'open', 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', null, SW_SHOWNORMAL); //第一个参数是用来当作错误提示窗口的父窗口的, 不能是 null, 可以是 0(也就是桌面窗口) ShellExecute(0, 'open', 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', null, SW_SHOWNORMAL); //第二个参数如果是 null, 也会默认为open ShellExecute(0, null, 'notepad.exe', 'C:\WINDOWS\SchedLgU.Txt', null, SW_SHOWNORMAL); //文件路径可以放在参数五 ShellExecute(0, null, 'notepad.exe', 'SchedLgU.Txt', 'C:\WINDOWS', SW_SHOWNORMAL); //把参数三直接指定为要打开的文件, 文件将用对应默认程序打开; 次数参数四应为 null ShellExecute(0, null, 'SchedLgU.Txt', null, 'C:\WINDOWS', SW_SHOWNORMAL); //如果文件在: 程序目录/当前目录/System32/Windows/PATH环境变量中, 参数五也可以 null ShellExecute(0, null, 'SchedLgU.Txt', null, null, SW_SHOWNORMAL); //如果参数三是个文件, 可以用参数二命令打印 ShellExecute(0, 'print', 'SchedLgU.Txt', null, null, 1); //用 IE 打开网页 ShellExecute(Handle, 'open', 'IExplore.EXE', 'about:blank', null, SW_SHOWNORMAL); //用火狐打开网页 ShellExecute(Handle, 'open', 'firefox.exe', 'about:blank', null, SW_SHOWNORMAL); //用默认浏览器打开网页 ShellExecute(Handle, 'open', 'Explorer.exe', 'about:blank', null, SW_SHOWNORMAL); //还是用默认浏览器打开网页 ShellExecute(0, null, 'http://del.cnblogs.com', null, null, 1); |
如无注明,均为原创。转载请注明: 转载自MITGAI`S THINKING
本文链接地址: Windows API — ShellExecute function
本文链接地址: Windows API — ShellExecute function
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
如果本文对您生活或工作产生了积极影响,那我非常高兴。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。