dwmapi_dummy.zip/src/dwmapi.cpp
#include <string.h>
#include <windows.h>
#include "boost/filesystem/path.hpp"
FARPROC p_NONAME0 = NULL;
FARPROC p_NONAME1 = NULL;
FARPROC p_DwmEnableComposition = NULL;
FARPROC p_NONAME3 = NULL;
FARPROC p_NONAME4 = NULL;
FARPROC p_NONAME5 = NULL;
FARPROC p_NONAME6 = NULL;
FARPROC p_NONAME7 = NULL;
FARPROC p_NONAME8 = NULL;
FARPROC p_NONAME9 = NULL;
FARPROC p_NONAME10 = NULL;
FARPROC p_DwmAttachMilContent = NULL;
FARPROC p_NONAME12 = NULL;
FARPROC p_NONAME13 = NULL;
FARPROC p_NONAME14 = NULL;
FARPROC p_NONAME15 = NULL;
FARPROC p_DwmDefWindowProc = NULL;
FARPROC p_DwmDetachMilContent = NULL;
FARPROC p_NONAME18 = NULL;
FARPROC p_NONAME19 = NULL;
FARPROC p_NONAME20 = NULL;
FARPROC p_NONAME21 = NULL;
FARPROC p_DwmEnableBlurBehindWindow = NULL;
FARPROC p_DwmEnableMMCSS = NULL;
FARPROC p_NONAME24 = NULL;
FARPROC p_NONAME25 = NULL;
FARPROC p_NONAME26 = NULL;
FARPROC p_NONAME27 = NULL;
FARPROC p_NONAME28 = NULL;
FARPROC p_NONAME29 = NULL;
FARPROC p_NONAME30 = NULL;
FARPROC p_NONAME31 = NULL;
FARPROC p_NONAME32 = NULL;
FARPROC p_NONAME33 = NULL;
FARPROC p_NONAME34 = NULL;
FARPROC p_DwmExtendFrameIntoClientArea = NULL;
FARPROC p_DwmFlush = NULL;
FARPROC p_DwmGetColorizationColor = NULL;
FARPROC p_DwmGetCompositionTimingInfo = NULL;
FARPROC p_DwmGetGraphicsStreamClient = NULL;
FARPROC p_DwmGetGraphicsStreamTransformHint = NULL;
FARPROC p_DwmGetTransportAttributes = NULL;
FARPROC p_DwmGetWindowAttribute = NULL;
FARPROC p_DwmInvalidateIconicBitmaps = NULL;
FARPROC p_DwmIsCompositionEnabled = NULL;
FARPROC p_DwmModifyPreviousDxFrameDuration = NULL;
FARPROC p_DwmQueryThumbnailSourceSize = NULL;
FARPROC p_DwmRegisterThumbnail = NULL;
FARPROC p_DwmSetDxFrameDuration = NULL;
FARPROC p_DwmSetIconicLivePreviewBitmap = NULL;
FARPROC p_DwmSetIconicThumbnail = NULL;
FARPROC p_DwmSetPresentParameters = NULL;
FARPROC p_DwmSetWindowAttribute = NULL;
FARPROC p_DwmUnregisterThumbnail = NULL;
FARPROC p_DwmUpdateThumbnailProperties = NULL;
bool CheckDwmExists(bool &is_dwm_exists) {
OSVERSIONINFOEX osvi;
::ZeroMemory(&osvi, sizeof(osvi));
osvi.dwOSVersionInfoSize = sizeof(osvi);
const BOOL bOsVersionInfoEx = ::GetVersionEx(reinterpret_cast<OSVERSIONINFO*>(&osvi));
if(bOsVersionInfoEx == 0) {
return false;
}
if(VER_PLATFORM_WIN32_NT != osvi.dwPlatformId || osvi.dwMajorVersion <= 4) {
return false;
}
if(osvi.dwMajorVersion == 6) {
is_dwm_exists = true;
} else {
is_dwm_exists = false;
}
return true;
}
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
static HMODULE h_original = NULL;
switch(ul_reason_for_call) {
case DLL_PROCESS_ATTACH: {
bool is_dwm_exists;
if(!CheckDwmExists(is_dwm_exists) || !is_dwm_exists) {
return FALSE;
}
wchar_t sys_dir[256];
::GetSystemDirectoryW(sys_dir, sizeof(sys_dir) / sizeof(wchar_t));
boost::filesystem::path file_path = boost::filesystem::path(sys_dir) / L"dwmapi.dll";
h_original = ::LoadLibraryW(file_path.wstring().c_str());
if(h_original == NULL) {
return FALSE;
}
p_NONAME0 = GetProcAddress( h_original, MAKEINTRESOURCE(100) );
p_NONAME1 = GetProcAddress( h_original, MAKEINTRESOURCE(101) );
//p_DwmEnableComposition = GetProcAddress( h_original, "DwmEnableComposition" ); // 実装済み
p_NONAME3 = GetProcAddress( h_original, MAKEINTRESOURCE(103) );
p_NONAME4 = GetProcAddress( h_original, MAKEINTRESOURCE(104) );
p_NONAME5 = GetProcAddress( h_original, MAKEINTRESOURCE(105) );
p_NONAME6 = GetProcAddress( h_original, MAKEINTRESOURCE(106) );
p_NONAME7 = GetProcAddress( h_original, MAKEINTRESOURCE(107) );
p_NONAME8 = GetProcAddress( h_original, MAKEINTRESOURCE(108) );
p_NONAME9 = GetProcAddress( h_original, MAKEINTRESOURCE(109) );
p_NONAME10 = GetProcAddress( h_original, MAKEINTRESOURCE(110) );
p_DwmAttachMilContent = GetProcAddress( h_original, "DwmAttachMilContent" );
p_NONAME12 = GetProcAddress( h_original, MAKEINTRESOURCE(112) );
p_NONAME13 = GetProcAddress( h_original, MAKEINTRESOURCE(113) );
p_NONAME14 = GetProcAddress( h_original, MAKEINTRESOURCE(114) );
p_NONAME15 = GetProcAddress( h_original, MAKEINTRESOURCE(115) );
p_DwmDefWindowProc = GetProcAddress( h_original, "DwmDefWindowProc" );
p_DwmDetachMilContent = GetProcAddress( h_original, "DwmDetachMilContent" );
p_NONAME18 = GetProcAddress( h_original, MAKEINTRESOURCE(118) );
p_NONAME19 = GetProcAddress( h_original, MAKEINTRESOURCE(119) );
p_NONAME20 = GetProcAddress( h_original, MAKEINTRESOURCE(120) );
p_NONAME21 = GetProcAddress( h_original, MAKEINTRESOURCE(121) );
p_DwmEnableBlurBehindWindow = GetProcAddress( h_original, "DwmEnableBlurBehindWindow" );
p_DwmEnableMMCSS = GetProcAddress( h_original, "DwmEnableMMCSS" );
p_NONAME24 = GetProcAddress( h_original, MAKEINTRESOURCE(124) );
p_NONAME25 = GetProcAddress( h_original, MAKEINTRESOURCE(125) );
p_NONAME26 = GetProcAddress( h_original, MAKEINTRESOURCE(126) );
p_NONAME27 = GetProcAddress( h_original, MAKEINTRESOURCE(127) );
p_NONAME28 = GetProcAddress( h_original, MAKEINTRESOURCE(128) );
p_NONAME29 = GetProcAddress( h_original, MAKEINTRESOURCE(129) );
p_NONAME30 = GetProcAddress( h_original, MAKEINTRESOURCE(130) );
p_NONAME31 = GetProcAddress( h_original, MAKEINTRESOURCE(131) );
p_NONAME32 = GetProcAddress( h_original, MAKEINTRESOURCE(132) );
p_NONAME33 = GetProcAddress( h_original, MAKEINTRESOURCE(133) );
p_NONAME34 = GetProcAddress( h_original, MAKEINTRESOURCE(134) );
p_DwmExtendFrameIntoClientArea = GetProcAddress( h_original, "DwmExtendFrameIntoClientArea" );
p_DwmFlush = GetProcAddress( h_original, "DwmFlush" );
p_DwmGetColorizationColor = GetProcAddress( h_original, "DwmGetColorizationColor" );
p_DwmGetCompositionTimingInfo = GetProcAddress( h_original, "DwmGetCompositionTimingInfo" );
p_DwmGetGraphicsStreamClient = GetProcAddress( h_original, "DwmGetGraphicsStreamClient" );
p_DwmGetGraphicsStreamTransformHint = GetProcAddress( h_original, "DwmGetGraphicsStreamTransformHint" );
p_DwmGetTransportAttributes = GetProcAddress( h_original, "DwmGetTransportAttributes" );
p_DwmGetWindowAttribute = GetProcAddress( h_original, "DwmGetWindowAttribute" );
p_DwmInvalidateIconicBitmaps = GetProcAddress( h_original, "DwmInvalidateIconicBitmaps" );
//p_DwmIsCompositionEnabled = GetProcAddress( h_original, "DwmIsCompositionEnabled" ); // 実装済み
p_DwmModifyPreviousDxFrameDuration = GetProcAddress( h_original, "DwmModifyPreviousDxFrameDuration" );
p_DwmQueryThumbnailSourceSize = GetProcAddress( h_original, "DwmQueryThumbnailSourceSize" );
p_DwmRegisterThumbnail = GetProcAddress( h_original, "DwmRegisterThumbnail" );
p_DwmSetDxFrameDuration = GetProcAddress( h_original, "DwmSetDxFrameDuration" );
p_DwmSetIconicLivePreviewBitmap = GetProcAddress( h_original, "DwmSetIconicLivePreviewBitmap" );
p_DwmSetIconicThumbnail = GetProcAddress( h_original, "DwmSetIconicThumbnail" );
p_DwmSetPresentParameters = GetProcAddress( h_original, "DwmSetPresentParameters" );
p_DwmSetWindowAttribute = GetProcAddress( h_original, "DwmSetWindowAttribute" );
p_DwmUnregisterThumbnail = GetProcAddress( h_original, "DwmUnregisterThumbnail" );
p_DwmUpdateThumbnailProperties = GetProcAddress( h_original, "DwmUpdateThumbnailProperties" );
break;
}
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
if(h_original != NULL) {
::FreeLibrary(h_original);
}
break;
}
return TRUE;
}