Все-таки решил создать такую тему, чтобы этот вопрос окончательно закрыть, самостоятельно или с вашей помощью.
Есть вариант через DirectX Hook от Spookie. Мне больше нравится вариант из MVL без применения DirectX SDK, но я еще на разобрался, как там сделано.
Есть два варианта решения: научить игру сразу запускаться с другими параметрами окна, либо после запуска сменить эти параметры.
Первый вариант: вроде бы надо копать функцию
0x5FFAB0 WinMain, где создается окно, но пока безуспешно.
Второй вариант: плясать нужно вокруг адреса окна игры
HWND hWnd = *(HWND*)0x7897A4.
Тогда к hWnd можно применять любые оконные функции, например можно в любое время сдвинуть окно и поменять его размер независимо от разрешения (тест с MVL windowed mode):
SetWindowPos(hWnd, HWND_NOTOPMOST, 50, 50, 1024, 960, SWP_SHOWWINDOW);Как отучить от Fullscreen при таком варианте, я еще не нашел.
Другой момент, который мне понравился в MVL, это создание второго окна с независимой камерой.
Если разобраться с окнами, то можно например сделать радар напрямую со второй камеры (а также зеркало заднего вида, которое я предлагал в
этой теме).
На рисунке не фэйк, а два окна из MVL (только без рамок). Хорошо бы второе окно сделать вложенным без рамки поверх первого и зафиксировать положение.
Кому интересно, в MVL высота камеры второго окна задается в плагине vehmod.flt по этому смещению 0x72C48, и равна 15.0 (8 байтовое число), на рисунке заменено на 100.0
А если поменять не высоту, а повернуть камеру назад, то получится зеркало заднего вида.