LoadModule功能加载并执行基于Windows的应用程序或创建现有基于Windows的应用程序的新实例。
提供此函数以兼容早期版本的Windows。基于Win32的应用程序应使用CreateProcess功能。
DWORD LoadModule(
LPCSTR 【lpModuleName】, | //要加载的文件名的地址 |
LPVOID 【lpParameterBlock】 | //新建模块的参数块地址 |
); |
参数
【lpModuleName】
指向包含要运行的应用程序的文件名的以null结尾的字符串。如果【lpModuleName】参数不包含目录路径,Windows将按以下顺序搜索可执行文件:
1.应用程序加载的目录。
2.当前目录。
3.Windows 95: Windows系统目录。使用GetSystemDirectory函数获取此目录的路径。
Windows NT: 32位Windows系统目录。使用GetSystemDirectory函数获取此目录的路径。该目录的名称是SYSTEM32。
4.Windows NT: 16位Windows系统目录。没有获取此目录的路径的Win32函数,但它被搜索。该目录的名称是SYSTEM。
5.Windows目录。使用GetWindowsDirectory函数获取此目录的路径。
6. PATH环境变量中列出的目录。
【lpParameterBlock】
指向定义新应用程序参数块的应用程序定义的LOADPARMS32结构。
LOADPARMS32结构具有以下形式:
typedef struct tagLOADPARMS32 {en
LPSTR lpEnvAddress; //环境字符串的地址
LPSTR lpCmdLine; //命令行地址
LPSTR lpCmdShow; //如何显示新程序
DWORD dwReserved; //必须为零
} LOADPARMS32;
会员 | 描述 |
lpEnvAddress | 指向为新进程提供环境字符串的以null结尾的字符串数组。该数组的值为NULL作为其最后一个条目。此参数的值为NULL会导致新进程以与调用进程相同的环境启动。 |
lpCmdLine | 指向包含正确形成的命令行的Pascal风格的字符串。字符串的第一个字节包含字符串中的字节数。字符串的其余部分包含命令行参数,不包括子进程的名称。如果没有命令行参数,则此参数必须指向零长度字符串;它不能为NULL。 |
lpCmdShow | 指向包含两个WORD值的结构。第一个值必须始终设置为2。第二个值指定应用程序窗口如何显示,并用于向CreateProcess 功能提供STARTUPINFO结构的wShowWindow成员。有关可接受值的列表,请参阅ShowWindow函数的【nCmdShow】参数的描述。 |
//保留,必须设置为零 | This parameter is reserved; it must be zero. |
将所有未使用的成员设置为NULL,lpCmdLine除外,如果不使用,则必须指向一个空值终止的字符串。
返回值
如果函数成功,返回值大于31。
如果函数失败,返回值是一个错误值,它可能是以下之一:
值 | 含义 |
0 | 系统内存不足或资源不足。 |
ERROR_BAD_FORMAT | .EXE文件无效(非Win32 .EXE或.EXE映像中的错误)。 |
ERROR_FILE_NOT_FOUND | 找不到指定的文件。 |
ERROR_PATH_NOT_FOUND | 找不到指定的路径。 |
备注
基于Win32的应用程序应使用CreateProcess功能。在Win32 API中,LoadModule函数的实现调用CreateProcess.以下部分将介绍如何形成CreateProcess的每个参数:
CreateProcess参数 | 值 |
【lpszImageName】 | LoadModule 【lpModuleName】参数。 |
【lpszCommandLine】 | LoadModule 【lpParameterBlock->lpCmdLine.】 |
【lpsaThread】 | NULL. |
【lpvEnvironment】 | NULL. |
【fInheritHandles】 | FALSE. |
【fdwCreate】 | 0. |
【The structure is initialized to zero.】 | LoadModule 【lpParameterBlock->lpEnvAddress.】 |
【lpszCurDir】 | NULL. |
【lpsiStartInfo】 | 结构初始化为零。cb成员设置为结构的大小,wShowWindow成员设置为LoadModule 【lpParameterBlock->lpCmdShow】参数的第二个字的值。 |
【lppiProcInfo.hProcess】 | 手柄立即关闭。 |
【lppiProcInfo.hThread】 | 手柄立即关闭。 |
也可以看看
CreateProcess, GetSystemDirectory, GetWindowsDirectory, ShowWindow, STARTUPINFO, WinExec