GetModuleFileName:
如果第一个参数为 NULL,则 GetModuleFileName 返回用于创建调用进程的文件的路径。
如果第一个参数不为NULL, 则获取的是具体某个被执行组件的文件路径。
怎么保证第一个模块的参数不为空呢?采用下面方法:
HMODULE GetCurrentComponentHandle()
{
MEMORY_BASIC_INFORMATION mbi;
SIZE_T size = ::VirtualQuery(GetCurrentComponentHandle, &mbi, sizeof(mbi));
if (size != 0)
{
return (HMODULE)mbi.AllocationBase;
}
else
{
return NULL;
}
}