ShellExecute功能打开或打印指定的文件。该文件可以是可执行文件或文档文件。另见ShellExecuteEx.
HITSTANCE ShellExecute(
HWND 【HWND】, | //处理父窗口 |
LPCTSTR 【lpOperation】, | //指向要执行的操作的字符串指针 |
LPCTSTR 【lpFile】, | //指向文件名或文件夹名字符串的指针 |
LPCTSTR 【lpParameters】, | //指向指定可执行文件参数的字符串的指针 |
LPCTSTR 【lpDirectory】, | //指向指定默认目录的字符串的指针 |
INT 【nShowCmd】 | //打开文件是否显示 |
); |
参数
【HWND】
指定父窗口。此窗口接收应用程序生成的任何消息框。例如,应用程序可能通过生成消息框来报告错误。
【lpOperation】
指向指定要执行的操作的以空值结尾的字符串的指针。以下操作字符串有效:
串 | 含义 |
“打开” | 该函数打开由【lpFile】指定的文件。该文件可以是可执行文件或文档文件。该文件可以打开一个文件夹。 |
“打印” | 该函数打印由【lpFile】指定的文件。该文件应该是文档文件。如果文件是可执行文件,则该函数将打开该文件,就像已经指定了“打开”一样。 |
“探索” | 该函数探索由【lpFile】指定的文件夹。 |
【lpOperation】参数可以为NULL。在这种情况下,该函数将打开由【lpFile】指定的文件。
【lpFile】
指向指定要打开或打印的文件的空终止字符串或要打开或浏览的文件夹。该函数可以打开可执行文件或文档文件。该函数可以打印文档文件。
【lpParameters】
如果【lpFile】指定可执行文件,【lpParameters】是一个指向空终止字符串的指针,该字符串指定要传递给应用程序的参数。
如果【lpFile】指定文档文件,则【lpParameters】应为NULL。
【lpDirectory】
指向指定默认目录的以空值终止的字符串的指针。
【nShowCmd】
如果【lpFile】指定可执行文件,【nShowCmd】指定应用程序打开时的显示方式。此参数可以是以下值之一:
值 | 含义 |
SW_HIDE | 隐藏窗口并激活另一个窗口。 |
SW_MAXIMIZE | 最大化指定的窗口。 |
SW_MINIMIZE | 最小化指定的窗口,并以Z顺序激活下一个顶级窗口。 |
SW_RESTORE | 激活并显示窗口。如果窗口最小化或最大化,Windows将其恢复到原来的大小和位置。应用程序在恢复最小化的窗口时应该指定此标志。 |
SW_SHOW | 激活窗口并将其显示为当前的大小和位置。 |
SW_SHOWDEFAULT | 根据启动应用程序的程序,传送给CreateProcess函数的STARTUPINFO结构中指定的SW_标志设置显示状态。应用程序应使用此标志调用ShowWindow,以设置其主窗口的初始显示状态。 |
SW_SHOWMAXIMIZED | 激活窗口并将其显示为最大化的窗口。 |
SW_SHOWMINIMIZED | 激活窗口并将其显示为最小化窗口。 |
SW_SHOWMINNOACTIVE | 将窗口显示为最小化窗口。活动窗口保持活动状态。 |
SW_SHOWNA | 以当前状态显示窗口。活动窗口保持活动状态。 |
SW_SHOWNOACTIVATE | 显示最新尺寸和位置的窗口。活动窗口保持活动状态。 |
SW_SHOWNORMAL | 激活并显示窗口。如果窗口最小化或最大化,Windows将其恢复到原来的大小和位置。应用程序在首次显示窗口时应指定此标志。 |
如果【lpFile】指定文档文件,则【nShowCmd】应为零。
返回值
如果函数成功,则返回值是运行的应用程序的实例句柄,或动态数据交换(DDE)服务器应用程序的句柄。
如果函数失败,则返回值是小于或等于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 | 找不到指定的动态链接库。 |
SE_ERR_FNF | 找不到指定的文件。 |
SE_ERR_NOASSOC | 没有与给定的文件扩展名关联的应用程序。 |
SE_ERR_OOM | 没有足够的内存来完成操作。 |
SE_ERR_PNF | 找不到指定的路径。 |
SE_ERR_SHARE | 发生共享冲突。 |
备注
由【lpFile】参数指定的文件可以是文档文件或可执行文件。如果文件是文档文件,ShellExecute功能将根据【lpOperation】参数的值打开或打印。如果该文件是可执行文件,则即使【lpOperation】指定打印,ShellExecute功能也会打开。
您可以使用ShellExecute打开或浏览一个shell文件夹。要打开文件夹,请使用以下任一调用:
ShellExecute(handle,NULL,path_to_folder,NULL,NULL,SW_SHOWNORMAL);
or
ShellExecute(handle,“open”,path_to_folder,NULL,NULL,SW_SHOWNORMAL);
要浏览文件夹,请使用以下调用:
ShellExecute(handle,“explore”,path_to_folder,NULL,NULL,SW_SHOWNORMAL);
如果【lpOperation】为NULL,该函数将打开由【lpFile】指定的文件。如果【lpOperation】为“open”或“explore”,该函数将强制打开窗口或浏览器。
也可以看看