新闻资讯
看你所看,想你所想

GetModuleFileName

GetModuleFileName

GetModuleFileName

获取当前进程已载入模组的档案的完整路径,该模组必须由当前进程载入。

如果想要获取另一个已载入模组的档案路径,可以使用GetModuleFileNameEx函式。

基本介绍

  • 中文名:无
  • 外文名:GetModuleFileName
  • 函式类型:GetModuleFileNameEx函式
  • 返回值:Long

声明

(VB)

Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long

(C++)

DWORD WINAPI GetModuleFileName(    _In_opt_  HMODULE hModule,    _Out_     LPTSTR lpFilename,    _In_      DWORD nSize);

返回值

Long,如执行成功,返回複製到lpFileName的实际字元数量;零表示失败。使用GetLastError可以列印错误信息。

参数

hModule Long
一个模组的句柄。可以是一个DLL模组,或者是一个应用程式的实例句柄。如果该参数为NULL,
该函式返回该应用程式全路径。
lpFileName String
指定一个字串缓冲区,要在其中容纳档案的用NULL字元中止的路径名,hModule模组就是从这个档案装载进来的
nSize Long
装载到缓冲区lpFileName的最大字元数量

注解

在Windows 95下,函式会核查应用程式的内部版本号是否为4.0或更大的一个数字。如果是,就返回一个长档案名称,否则返回短档案名称
原型及各参数解释
DWORD GetModuleFileName(    HMODULE hModule,    LPTSTR lpFilename,    DWORD nSize);
获得hModule所指的档案的名字,
hModule在LoadLibrary之类的函式会返回,是一个句柄,用来标记这个档案资源。
lpFilename是你存放返回的名字的记忆体块的指针,是一个输出参数,nSize是这个记忆体块的大小,用于防止溢出。
返回值是用于指示是否发生错误的。

VC函式

函式原型

DWORDGetModuleFileName(HMODULE  hModule,LPTSTR  lpFilename,DWORD  nSize);

函式参数

HMODULE hModule 装载一个程式实例的句柄。如果该参数为NULL,该函式返回该当前应用程式全路径。
LPTSTR lpFileName 是你存放返回的名字的记忆体块的指针,是一个输出参数
DWORD nSize,装载到缓冲区lpFileName的最大值

函式返回值

如果返回为成功,将在lpFileName的缓冲区当中返回相应模组的路径,如果所设的nSize过小,那幺返回仅按所设定缓冲区大小返回相应字元串内容。
如果函式失败,返回值将为0,利用GetLastError可获得异常代码。

头档案

windows.h

实例原始码

#include <windows.h>#include <stdio.h>BOOL CreateSampleService(){    TCHAR szPath[MAX_PATH];    if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )    {        printf("GetModuleFileName failed (%d)\n", GetLastError());        return FALSE;    }return TRUE;}/*如果想获得某个正在运行的EXE或者DLL的全路径可以这样写代码GetModuleFileNameEx(hProcess,hInst,lpFile,MAX_PATH);//注意下缓冲区就行了。*/

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com