mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-06-14 03:16:38 +10:00
51 lines
1.7 KiB
C++
51 lines
1.7 KiB
C++
#pragma once
|
|
#include <Windows.h>
|
|
#ifdef __cplusplus
|
|
#ifndef GetCurrentModule_bRefDefault
|
|
// 在 C++ 中,GetCurrentModule 将会启用默认值。你可以在之前宏定义此默认值。定义宏时别忘了等号“=”
|
|
// 用法如:HMODULE GetCurrentModule (BOOL bRef GetCurrentModule_bRefDefault)
|
|
#define GetCurrentModule_bRefDefault = FALSE
|
|
#endif
|
|
#else
|
|
#define GetCurrentModule_bRefDefault
|
|
#endif
|
|
HMODULE GetCurrentModule (BOOL bRef GetCurrentModule_bRefDefault)
|
|
{
|
|
HMODULE hModule = NULL;
|
|
if (GetModuleHandleExW (bRef ? GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS : (GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
|
|
| GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), (LPCWSTR)GetCurrentModule, &hModule))
|
|
{
|
|
return hModule;
|
|
}
|
|
return NULL;
|
|
}
|
|
HMODULE GetSelfModuleHandle ()
|
|
{
|
|
MEMORY_BASIC_INFORMATION mbi;
|
|
return ((::VirtualQuery (GetSelfModuleHandle, &mbi, sizeof (mbi)) != 0)
|
|
? (HMODULE)mbi.AllocationBase : NULL);
|
|
}
|
|
#ifndef GetModuleHandleW_lpModuleNameDefault
|
|
#define GetModuleHandleW_lpModuleNameDefault NULL
|
|
#endif
|
|
#ifndef DEFAULT_HMODULE
|
|
#ifdef HMODULE_MODE_EXE
|
|
#define DEFAULT_HMODULE GetModuleHandleW (NULL)
|
|
#elif defined (HMODULE_MODE_DLL1)
|
|
#define DEFAULT_HMODULE GetCurrentModule ()
|
|
#elif defined (HMODULE_MODE_DLL2)
|
|
#define DEFAULT_HMODULE GetSelfModuleHandle ()
|
|
#else
|
|
#define DEFAULT_HMODULE GetModuleHandleW (GetModuleHandleW_lpModuleNameDefault)
|
|
#endif
|
|
#endif
|
|
#undef GetModuleHandleW_lpModuleNameDefault
|
|
#ifdef __cplusplus
|
|
#ifndef hModule_DefaultParam
|
|
// 在 C++ 中,你可以使用此宏“hModule_DefaultParam”来用于给一些函数的形参定义默认值。你可以在之前宏定义此默认值。定义宏时别忘了等号“=”
|
|
// 用法如:std::wstring GetRCStringSW (UINT resID, HMODULE hModule hModule_DefaultParam)。
|
|
#define hModule_DefaultParam = DEFAULT_HMODULE
|
|
#endif
|
|
#else
|
|
#define hModule_DefaultParam
|
|
#endif |