參考:
1. http://blog.sina.com.cn/s/blog_b078a1cb0101fw48.html
2. https://www.cnblogs.com/Satu/p/8203936.html
函數原型:
DWORD GetModuleFileName(
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
函數參數說明:
hModule HMODULE 裝載一個程序實例的句柄。如果該參數為NULL,該函數返回該當前應用程序全路徑。
lpFileName LPTSTR 是你存放返回的名字的內存塊的指針,是一個輸出參數
nSize DWORD ,裝載到緩沖區lpFileName的最大值
函數返回值:
如果返回為成功,將在lpFileName的緩沖區當中返回相應模塊的路徑,如果所設的nSize過小,那么返回僅按所設置緩沖區大小返回相應字符串內容。
如果函數失敗,返回值將為0,利用GetLastError可獲得異常代碼。
需要的頭文件為:
windows.h
關於GetModuleFileName function
參考:https://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx
以下代碼摘自Installing a Service(https://msdn.microsoft.com/en-us/library/windows/desktop/ms683500(v=vs.85).aspx)。
IDE: Microsoft Visual Studio Community 2017 15.5.2
操作系統:Windows 7 x64
#include "stdafx.h" /* IDE自行創建的 */
#include <windows.h>
int main(int argc, char **argv)
{
TCHAR szPath[MAX_PATH];
if (!GetModuleFileName(NULL, szPath, MAX_PATH))
{
printf("Cannot get the module file name, error: (%d) \n", GetLastError());
return 1;
}
else {
printf("Module file name: %ls \n", szPath);
}
getchar();
return 0;
}
關於MAX_PATH,在頭文件minwindef.h中定義,但沒有給出具體的描述。
#define MAX_PATH 260