FindExecutableA 函数 (shellapi.h)

检索与特定文档文件关联的可执行文件(.exe)文件的名称和句柄。

语法

HINSTANCE FindExecutableA(
  [in]           LPCSTR lpFile,
  [in, optional] LPCSTR lpDirectory,
  [out]          LPSTR  lpResult
);

参数

[in] lpFile

类型:LPCTSTR

指定文件名的 null-terminated 字符串的地址。 此文件应为文档。

[in, optional] lpDirectory

类型:LPCTSTR

指定默认目录的 null终止字符串的地址。 此值可以 NULL

[out] lpResult

类型:LPTSTR

接收关联可执行文件文件名的缓冲区的地址。 此文件名是一个 null-terminated 字符串,指定在 lpFile 参数中指定的文件上运行“打开”时启动的可执行文件。 简单地说,这是在直接双击文档文件或从文件的快捷菜单中选择 打开 时启动的应用程序。 此参数必须包含有效的非null 值,并且假定其长度为MAX_PATH。 验证该值的责任留给程序员。

返回值

类型:HINSTANCE

如果成功,则返回大于 32 的值,或小于或等于 32 表示错误的值。

下表列出了可能的错误值。

返回代码/值 描述
SE_ERR_FNF
2
找不到指定的文件。
SE_ERR_PNF
3
指定的路径无效。
SE_ERR_ACCESSDENIED
5
无法访问指定的文件。
SE_ERR_OOM
8
系统内存不足或资源。
SE_ERR_NOASSOC
31
与可执行文件的指定文件类型没有关联。

言论

对文档使用 FindExecutable。 如果要检索可执行文件的路径,请使用以下内容:

AssocQueryString(ASSOCF_OPEN_BYEXENAME,
                 ASSOCSTR_EXECUTABLE,
                 pszExecutableName,
                 NULL,
                 pszPath,
                 pcchOut);

此处,pszExecutableName 是指向指定可执行文件名称的 null-terminated 字符串的指针, pszPath 是指向接收可执行文件路径的 null终止字符串缓冲区的指针,pcchOut 是指向指定 pszPath 缓冲区中字符数的 DWORD 的指针。 函数返回时,pcchOut 设置为实际放置在缓冲区中的字符数。 有关详细信息,请参阅 AssocQueryString

FindExecutable 返回时,如果服务器未响应与 DDE 客户端应用程序启动 DDE 会话的请求,则 lpResult 参数可能包含动态数据交换(DDE)服务器的路径。

注意

shellapi.h 标头将 FindExecutable 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows XP [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 shellapi.h
Shell32.lib
DLL Shell32.dll

另请参阅

ShellExecute