Тема: AHK: Захват монитора с помощью лупы Magnification API
Тема для обсуждения "Захват монитора с помощью лупы Magnification API".
http://forum.script-coding.com/viewtopic.php?id=17699
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Тема для обсуждения "Захват монитора с помощью лупы Magnification API".
http://forum.script-coding.com/viewtopic.php?id=17699
Алгоритм кода был сделан ранее serzh82saratov с небольшой моей помощью.
Да там если бы не ты, то я и не написал бы ничего.
Пара вопросов.
В API можно указать не исключаемые окна, а только нужные?
По производительности не сравнивал? Ты уже наверное все возможные способы захватов реализовал, есть ли какой то рейтинг производительности по ним?
В API можно указать не исключаемые окна, а только нужные?
Это нашёл, на 10ке появилось.
https://learn.microsoft.com/en-us/windo … filterlist
Разве появилось, там наоборот написано, что начиная с win-7 это убрали.
Вот я балда, наоборот прочитал, оно значит в ХР было, а в 7ке выпилили. Ясно, в общем нет вариантов.
Теоретически можно пробовать инжектиться в каждый новый процесс и ставить SetWindowDisplayAffinity на все новые окна.
Я, правда, еще не тестировал стало ли работать это с layered windows на win11.
По производительности через лупу кушает много.
Лучше на с++ что-то подобное пробовать искать.
Имеешь ввиду что на С++ этот же код будет работать заметно быстрее, api ведь тоже самое?
И в принципе по всем методам DirectX и.т.п., какие самые быстрые и самые медленные по твоему?
Насчет лупы не знаю, так-как это апи не преднозначено для сохранения экрана.
Но всё-равно однопоточный автохотки по скорости будет проигрывать.
По производительности я бы смотрел в сторону Desktop Duplication API или WindowsGraphicsCapture API.
А задача какая?
Если бюджет позволяет, то можно поискать реверс-инженера, который хакнет dwm и будет получать изображение напрямую.
Но всё-равно однопоточный автохотки по скорости будет проигрывать.
А в несколько потоков что делать, если одну картинку надо сохранить например?
А задача какая?
Пока никакой, интересуюсь. Хак dwm ты встречал где то, что даёт?
А в несколько потоков что делать, если одну картинку надо сохранить например?
Например в 1 получаешь, во втором сохраняешь.
Это надо уже у c++ спрашивать.
Хак dwm ты встречал где то, что даёт?
Конечно встречал. Их постоянно геймеры пишут.
DWM через directx собирает все окна и отрисовывает их.
Цель хакера внедриться в этот процесс и перехватить функцю отрисовки.
Вот автор вроде опытный.
https://gmh5225.github.io/about/
https://github.com/gmh5225/awesome-game-security
Например в 1 получаешь, во втором сохраняешь.
Это синхронные действия, для одной картинки не ускоришь, вот если серию делать, то да. Кстати не пробовал на AHK_H в другой поток передавать битмап?
Конечно встречал. Их постоянно геймеры пишут.
В смысле написали 1000 раз, но никто не выложил? Или там для каждой игры что то переписывать надо, а на рабочий стол он просто никому не нужен?
Кстати не пробовал на AHK_H в другой поток передавать битмап?
Неа, я вообще AHK_H не использовал.
Или там для каждой игры что то переписывать надо
Скорее всего надо переписывать для каждой новой версии windows или при нахождении этих инжектов античитовыми программами.
По моей ссылке много различных вариантов перехвата и инжекта в dwm.
Например вот:
https://github.com/lainswork/dwm-screen-shot
надо переписывать для каждой новой версии windows или при нахождении этих инжектов античитовыми программами.
То есть к конкретной программе привязки быть не может (кроме античита).
Кстати не пробовал на AHK_H в другой поток передавать битмап?
Я не пробовал. Как думаешь теоретически возможно? Передаём указатель на битмап в другой поток, поток в том же процессе, но непонятно контекст GDIP в этом потоке тот же или нет.
То есть к конкретной программе привязки быть не может (кроме античита).
Не совсем понял, что ты имеешь в виду?
Не знаю на счет ahk_h, но битмап можно передовать между процессами.
https://stackoverflow.com/questions/253 … -processes
Не совсем понял, что ты имеешь в виду?
Я про то что если на нескольких ПК нет античитов и одинаковые ОС, то один код будет работать в любых приложениях на них.
Я думаю да, хотя если приложение отрисовывается не через dwm, как например direct3d полноэкранные игры, то тогда надо уже будет инжектиться в него.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться