|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
ForceTemporaryModeChange.cpp
Abstract:
A hack for several apps that permanently change the display mode and fail to restore it correctly. Some of these apps do restore the resolution, but not the refresh rate. 1024x768 @ 60Hz looks really bad.
Notes:
This is a general purpose shim.
History:
01/20/2000 linstev Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(ForceTemporaryModeChange) #include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(ChangeDisplaySettingsA) APIHOOK_ENUM_ENTRY(ChangeDisplaySettingsW) APIHOOK_ENUM_ENTRY(ChangeDisplaySettingsExA) APIHOOK_ENUM_ENTRY(ChangeDisplaySettingsExW) APIHOOK_ENUM_END
/*++
Force temporary change.
--*/
LONG APIHOOK(ChangeDisplaySettingsA)( LPDEVMODEA lpDevMode, DWORD dwFlags ) { if (dwFlags != CDS_FULLSCREEN) { LOGN( eDbgLevelError, "[ChangeDisplaySettingsA] Changing flags to CDS_FULLSCREEN."); }
return ORIGINAL_API(ChangeDisplaySettingsA)( lpDevMode, CDS_FULLSCREEN); }
/*++
Force temporary change.
--*/
LONG APIHOOK(ChangeDisplaySettingsW)( LPDEVMODEW lpDevMode, DWORD dwFlags ) { if (dwFlags != CDS_FULLSCREEN) { LOGN( eDbgLevelError, "[ChangeDisplaySettingsW] Changing flags to CDS_FULLSCREEN."); }
return ORIGINAL_API(ChangeDisplaySettingsW)( lpDevMode, CDS_FULLSCREEN); }
/*++
Force temporary change.
--*/
LONG APIHOOK(ChangeDisplaySettingsExA)( LPCSTR lpszDeviceName, LPDEVMODEA lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam ) { if (dwflags != CDS_FULLSCREEN) { LOGN( eDbgLevelError, "[ChangeDisplaySettingsExA] Changing flags to CDS_FULLSCREEN."); }
return ORIGINAL_API(ChangeDisplaySettingsExA)( lpszDeviceName, lpDevMode, hwnd, CDS_FULLSCREEN, lParam); }
/*++
Force temporary change.
--*/
LONG APIHOOK(ChangeDisplaySettingsExW)( LPCWSTR lpszDeviceName, LPDEVMODEW lpDevMode, HWND hwnd, DWORD dwflags, LPVOID lParam ) { if (dwflags != CDS_FULLSCREEN) { LOGN( eDbgLevelError, "[ChangeDisplaySettingsExW] Changing flags to CDS_FULLSCREEN."); }
return ORIGINAL_API(ChangeDisplaySettingsExW)( lpszDeviceName, lpDevMode, hwnd, CDS_FULLSCREEN, lParam); }
/*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(USER32.DLL, ChangeDisplaySettingsA) APIHOOK_ENTRY(USER32.DLL, ChangeDisplaySettingsW) APIHOOK_ENTRY(USER32.DLL, ChangeDisplaySettingsExA) APIHOOK_ENTRY(USER32.DLL, ChangeDisplaySettingsExW)
HOOK_END
IMPLEMENT_SHIM_END
|