sooqua Опубликовано 7 августа, 2012 Поделиться Опубликовано 7 августа, 2012 Адреса координат курсора внутри формы:X - 00484ECC, Y - 00484ED0Команды, которые срабатывают, если пытаешься вывести курсор за форму (по Y):0040C89D - C7 05 D04E4800 00000000 - mov [00484ED0],000000000040C8F0 - D9 1D D04E4800 - fstp dword ptr [00484ED0] : [(float)308.0000]По X:0040C8C6 - D9 1D CC4E4800 - fstp dword ptr [00484ECC] : [(float)450.0000]0040C880 - C7 05 CC4E4800 00000000 - mov [00484ECC],00000000Если их занопить, можно будет двигать курсор "за пределы" формы, но его не видно. Т.е. он всё еще в игре Как бы сделать, чтобы можно было убирать курсор из формы, при этом чтоб он менялся на стандартный виндовский, а когда снова попадал бы в форму с игрой, менялся бы на игровую "стрелку"? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 7 августа, 2012 Поделиться Опубликовано 7 августа, 2012 Говоришь, что если окно делает MouseLeave(), или если Rectangle окна игры не содержит координат мыши (ага), то меняешь курсор принудительно. Т.е. если винда хочет нарисовать курсор за пределами игрового окна - что-то типа SetCursor(), файл курсора можно взять прямо из ресурсов игры. Или найди событие, отвечающее за смену курсора - отладь его при переходе указателя из окна игры в рабочий стол, ну и отключи нафиг смену указателя на текущий виндовый.Правда, нафига такие костыли? Короче, хук на GetMessage, там проверка на [вот это], если она проходит - то [вот это]. Не то, чтобы офигеть, как оптимально, но просто в реализации и работать будет. Ссылка на комментарий Поделиться на другие сайты Поделиться
sooqua Опубликовано 7 августа, 2012 Автор Поделиться Опубликовано 7 августа, 2012 В общем такие дела:Нашёл инструкцию, которая скрывает курсор:"DINPUT8.dll"+C0D5 - call dword ptr [6CD711F4] ; [showCursor]И нашёл вредоносную команду, которая блокирует доступ к другим окнам:"DINPUT8.dll"+528E - call 6CD7C5DEИменно после её выполнения (в отладке проверял) на другие окна уже нельзя нажать и тем самым активировать их.. Но если её занопить (и прилагающийся push, разумеется), игра зависает. Не пойму, почему)) Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 7 августа, 2012 Поделиться Опубликовано 7 августа, 2012 В общем такие дела:Нашёл инструкцию, которая скрывает курсор:"DINPUT8.dll"+C0D5 - call dword ptr [6CD711F4] ; [showCursor]И нашёл вредоносную команду, которая блокирует доступ к другим окнам:"DINPUT8.dll"+528E - call 6CD7C5DEИменно после её выполнения (в отладке проверял) на другие окна уже нельзя нажать и тем самым активировать их.. Но если её занопить (и прилагающийся push, разумеется), игра зависает. Не пойму, почему))Предполагаю, то что инструкция работает не только с курсором. Ссылка на комментарий Поделиться на другие сайты Поделиться
sooqua Опубликовано 8 августа, 2012 Автор Поделиться Опубликовано 8 августа, 2012 Предполагаю, то что инструкция работает не только с курсором.Оказалось точно так) В ней была еще одна инструкция, внутри которой еще одна Занопил её - и сказка))Только вопрос - я ведь в системной dll'ке занопил команду, будут ли остальные программы, использующие её работать корректно? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 8 августа, 2012 Поделиться Опубликовано 8 августа, 2012 Оказалось точно так) В ней была еще одна инструкция, внутри которой еще одна Занопил её - и сказка))Только вопрос - я ведь в системной dll'ке занопил команду, будут ли остальные программы, использующие её работать корректно?Ящитаю, что ты её занопил в инстансе дллки для конкретно процесса игры, а остальные программы будут подгружать себе новую. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения