獲取當前進程已載入模組的檔案的完整路徑,該模組必須由當前進程載入。
如果想要獲取另一個已載入模組的檔案路徑,可以使用GetModuleFileNameEx函式。
基本介紹
- 中文名:無
- 外文名:GetModuleFileName
- 函式類型:GetModuleFileNameEx函式
- 返回值:Long
聲明,(VB),(C++),返回值,參數,註解,VC函式,函式原型,函式參數,函式返回值,頭檔案,實例原始碼,
聲明
(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);//注意下緩衝區就行了。*/