findExecutableW 函数 (shellapi.h)

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

语法

HINSTANCE FindExecutableW(
  [in]           LPCWSTR lpFile,
  [in, optional] LPCWSTR lpDirectory,
  [out]          LPWSTR  lpResult
);

参数

[in] lpFile

类型: LPCTSTR

null 结尾的字符串的地址,该字符串指定文件名。 此文件应为文档。

[in, optional] lpDirectory

类型: LPCTSTR

null 结尾的字符串的地址,该字符串指定默认目录。 此值可以为 NULL

[out] lpResult

类型: LPTSTR

接收关联可执行文件的文件名的缓冲区的地址。 此文件名是一个 以 null 结尾的字符串,指定在 lpFile 参数中指定的文件上运行“open”时启动的可执行文件。 简单地说,这是在直接双击文档文件时或从文件的快捷菜单中选择 “打开 ”时启动的应用程序。 此参数必须包含有效的非 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 结尾的字符串的指针,该字符串指定可执行文件的名称,pszPath 是指向接收可执行文件路径的以 null 结尾的字符串缓冲区的指针,pcchOut 是指向指定 pszPath 缓冲区中字符数的 DWORD 的指针。 当函数返回时, pcchOut 设置为实际放置在缓冲区中的字符数。 有关详细信息 ,请参阅 AssocQueryString

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

注意

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

要求

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

另请参阅

ShellExecute