|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратурая правильно понял что когда игра не запущена то можно весь экран прочитать а когда запущена то нельзя? когда запущена, можно прочитать все окна, кроме окна игры. будет возвращаться сплошной чёрный цвет аппаратураа может кнопка PrintScreen работает? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2012, 19:20 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
если PrintScreen работает ну так 50 мб это же в памяти а для памяти это не критично просто на диск не надо его писать а выбрать то что нужно и анализировать если PrintScreen работает то может и блокировки никакой нет может просто что-то другое неверно сделано а может надо просто вызывать так lngHdc = GetDC(0) для всего экрана или так lngHdc = CreateDC("DISPLAY", 0, 0, 0) это просто другие функции с помощью которых можно получить графический контекст для всего экрана а имея этот контекст уже вызывать GetPixel можно еще попробовать вызвать из .net соответствующую функцию ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2012, 19:47 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратураlngHdc = GetDC(0) пробовал, я выкладывал парой смс выше BelowZero'hdcA = (GetWindowDC(HWND_DESKTOP)) тогда попробую при помощи image. только хз, будет ли работать распознавание из image, если фокус на игре. возможно. игра будет блокировать всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2012, 20:04 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
там где я видел там GetWindowDC а тут просто GetDC ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2012, 20:14 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, проверил - GetDC тоже не работает. более того, защита железобетонная. блокируются полностью функции, если фокус на игре. т.е. прога не может распознать цвета даже чужой программы, если фокус на игре, и не может распознать цвета окна игры, даже если игра без фокуса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2012, 21:17 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
ну если PrintScreen Clipboard.GetData работает то я думаю нужно им и пользоваться и не мучаться я могу сделать code.bytes файлы для GetPixel например но все равно они могут не работать из-за защиты или по какой-то другой причине кстати ведь можно написать цикл PrintScreen ClipBoard.GetData Clipboard.Clear и посмотреть сколько раз успеет такое выполниться за 1 секунду например те оценить скорость работы я думаю весь экран копировать получится достаточно быстро для данной задачи ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2012, 12:46 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, на всякий случай проверил - Код: vbnet 1. 2.
и Код: vbnet 1.
работают, т.е. возвращают значения. отсюда вывод, что не работает именно Код: vbnet 1.
нужно получить пиксели экрана или окна как-то подругому. я думаю, будет работать, если сначала загрузить изображение в image, убрать фокус с игры, а затем снова его ставить... но тогда окно будет мелькать несколько раз в секунду... как-то непрофессионально... пока что попробую юзать getpixel через левую дллку. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 15:06 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, простое переименование gdi32 на gdi327 в system32 привело к глобальному краху среды vb6 и закрытию несохранённого проекта... о5. надо научиться сохранять промежуточные варианты кода... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 15:15 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторнадо научиться сохранять промежуточные варианты кода не уверен но по-моему есть галочка в настройках бейсика которая позволяет сохранять изменения каждый раз когда программа запускается на выполнение ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 18:55 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, что посоветуете делать с getpixel? нужно, чтобы прога хоть как-то получала данные от игры. были даже идеи через звук(томный вздох - под атакой мобов, звон меча - удары, шарканье - персонаж бежит), но это как-то чересчур экстремально) меня напрягла dll gdi32. не ожидал, что бональная переименовка приводит к краху. с user32 так не было ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 19:03 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
работает ли PrintScreen на игре? если работает то предлагаю его использовать те 1 программно нажать PrintScreen 2 прочитать из Clipboard картинку 3 прочитать пиксел еще могу сделать такой же GetPixel.code.bytes.bin файл как и для SetCursorPos только я не очень верю в то что он заработает думаю что функция GetPixel в ядре перехвачена так же как и SendInput но конечно это надо проверить ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 19:14 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура2 прочитать из Clipboard картинку 3 прочитать пиксел а как вы прочитаете картинку? вернее чем? getpixel не работает, если игра в фокусе ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 19:35 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
игра запущена защита активирована жмем PrintScreen идем в Paint вставлям картинку из ClipBoard сохраняем картинка в файл вот если такие действия позволяют картинку игры сохранить то и программно их наверное можно сделать или так нельзя сохранить картинку игры вручную? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 19:44 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратураигра запущена защита активирована жмем PrintScreen идем в Paint вставлям картинку из ClipBoard сохраняем картинка в файл вот если такие действия позволяют картинку игры сохранить то и программно их наверное можно сделать или так нельзя сохранить картинку игры вручную? всё это можно только толку. вот у вас есть сохранённая картинка экрана. а что с ней делать?) как считать, что на ней нарисовано? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 19:50 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
авторвсё это можно только толку. вот у вас есть сохранённая картинка экрана. а что с ней делать?) как считать, что на ней нарисовано? я думал как читать дальше известно Вам кто-то ведь приводил в этом топике или в соседнем топике пример я тоже могу посмотреть как читать эту картинку сразу сказать как на бейсике это сделать не знаю надо посмотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 20:00 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, приводили, если не ошибаюсь, getpixel. можно убирать фокус с игры, будет работать, но это не идеально... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 20:04 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
я посмотрю что можно сделать просто PrintScreen пишет картинку в ClipBoard определенном формате надо посмотреть в каком именно ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2012, 20:06 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
у меня сейчас нет возможности на игре протестировать функции поэтому я написал тестовый пример на vb.net можно откомпилировать и запусить или можно сразу запустить (есть готовый m05.exe) для запуска нужен .net framework 2.0 или выше функция делает следующее 1 показывает msgbox 2 ждет 5 сек 3 за это время нужно переключиться на игру 4 нужно нажать руками PrintScreen 5 после того как 5 сек пройдут 6 читается из Clipboard картинка в память 7 mgsbox спрашивает координаты точки для которой надо считать цвет 8 показывается цвет выбранной точки вот такой тест надо запусить на игре я пока на не могу его на игре запустить просто я думаю что когда игра запущена то этот тест не пройдет тк защита игры не даст ему выполниться ведь если защита смогла GetPixel запретить она и GetClipboardData может запретить ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 01:54 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, всё работает... но результаты опыта зависят от того, как построен проект. Я не знаю, как написан ваш код: 1) после ввода координат пикселя запускается считывание, а затем возвращается фокус игре(в таком случае ничего не нового не узнали, т.к. при отсутствии фокуса игра и так позволяла считывать пиксели) 2) сначала фокус возвращается игре, а затем производится считываение пикселя. в этом случае вам удалось решить задачу, т.е. считать пиксели, когда фокус у игры. (в этом случае остаётся понять, почему в моём проекте ничего не вышло, а у вас получилось) p/s выводятся 4 составляющие: зелёный, синий, красный цвета, а что за А? возвращает 255 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 16:02 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
ну ведь есть исходники их можно посмотреть и понять как работает ведь синтаксис vb.net похож на систаксис vb6 кроме того я написал выше 1-8 пункты как работает первый msgbox для того чтобы подготовиться потом будет пауза на 5 сек за это время надо отдать фокус игре и нажать PrintScreen после паузы фокус у игры но наш тестовый пример продолжает работать одной командой наш тестовый пример копирует в память картинку из clipboard те когда фокус еще у игры после этого выводится msgbox для задания координат но тк картинку из clipboard мы скопировали в память то нам уже не важно что игра потеряла фокус пример ввода координат x y через пробел 120 240 цвет это 32 бита А значит прозрачность при снимке экрана она всегда 255 она может использоваться только при наложении двух картинок тогда можно для каждой картинки задать прозрачность и с учетом этой прозрачности получить из двух картинок одну я прошу проверить тк пока у меня нет возможности запустить игру если все будет работать то я расскажу как этот код для определения пиксела вызывать из vb6 те будет примерно так 1 посылаем программно PrintScreen это мы умеем делать 2 читаем файл из Clipboard в память это делает код из m05 3 вызываем функцию чтения пиксела из картинки которая теперь находиться в памяти параметры функци будут задавать координаты это делает код из m05 4 тк картинка в памяти то функцию чтение пиксела можем вызывать любое количество раз ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2012, 16:37 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
аппаратура, похожий код на vb6. не работает. вот строки кода: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
на форме текстбокс, пикчебокс, таймер. изображение, как ему и положено, успешно загружается из буфера обмена в пикчебокс. но если фокус у игры, то прога не может обработать даже свой пикчебокс. возвращается 0. отсюда 2 возможных варианта: 1) я что делаю не так, как у вас в проекте 2) у вас показывается табличка, куда нужно вводить данные, т.е. вы забираете фокус у игры. только затем используете getpixel. в таком, случае, как и положено, всё будет работать. а нужно, что-бы всё работало, когда фокус у игры ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2012, 21:27 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
я два раза написал практически одно и то же читайте внимательно и не просто читайте мой текст здесь а еще и читайте код программы которую я выложил для m05 да vb.net это другой язык не vb6 но синтаксис похож и последовательность действий которые там делаются можно уловить даже не зная языка совсем третий раз объясняю как работает m05 1 MsgBox чтобы подготовиться 2 пауза 5 секунд чтобы сделать нужные действия 3 за эти пять секунд активируем игру 4 за эти пять секунд нажимаем PrintScreen 5 после нажатия PrintScreen в clipboard помещается картинка всего экрана 6 после того как 5 сек прошли m05 пример отводит память для картинки и копирует из clipboard картинку в эту память 7 все картинка скопирована в память и к нашей памяти мы можем обращаться как хотим 8 я мог бы просто не выдавать msgbox с запросом на ввод координат и вбить фиксированные x y прямо в код но я решил спросить x y 9 на тест этот вопрос о координатах x y никак не влияет 10 когда координаты введены я просто читаю из памяти нужный пиксел 11 все я не знаю как это сделать на vb6 мне лень разбираться но даже если это и можно сделать то потребуется больше писанины а в m05 примере всего две команды две строчки 1 Glipboard.GetImage прочитать из Clipboard в память картинку 2 objImage.GetPixel(x, y) прочитать цвет пиксела 3 все почему не работаем Ваш пример Вы упорно не хотите сравнить то что я предлагаю с тем что есть у Вас Вы используете GetPixel(hdc, x, y) это api функция hdc это графический контекст который нужен каждой api функции hdc в этой функции не просто так задан он используется я же предлагаю считать одной командой всю картинку в память те после этой операции картинка помещается в область памяти которую я сам задаю а после того как она туда помещена к своей памяти я могу обращаться как хочу и когда хочу и защита никакая это не может запретить хотя защита может запретить копирование картинки в свою память ведь это тоже api функция только другая вот как раз для этого я и написал тестовый пример m05 он позволяет проверить дает ли защита игры копировать картинку целиком как храниться картинка а памяти сначала идет заголовок те некоторая информация описывающая картинку например ширина высота количество цветов алгоритм сжатия далее идет просто массив байтов где каждый байт или несколько байтов кодируют цвет а вот как этот массив байтов переводится в цвет это опеределяется алгоритмом сжатия а он может быть разный поэтому есть проблема при определении цвета писксела для нас да мы знаем этот массив байтов но его надо расшифровать в соответствии с алгоритмом сжатия вот с этим я не хочу возиться поэтому я просто использую готовое решение из двух строк см выше кстати на vb6 тоже есть две команды Set objImage = Clipboard.GetImage SavePicture objImage, "c:\image.bmp" они позволяют записать картинку из clipboard в файл но только в файл а как объяснить что писать надо в память не знаю наверное нельзя это vb6 объяснить наверное vb6 дает писать только в файл кстати смысл m05 теста проверить что игра дает скопировать весь экран когда она в фокусе это тест можно заменить тестом на vb6 приведенным выше те Set objImage = Clipboard.GetImage SavePicture objImage, "c:\image.bmp" все если это работает значит игра дает скопировать весь экран вот только даже если это работает то vb6 мы не можем использовать для того чтобы получить цвет пиксела вернее я не знаю как это сделать надо разбираться сделать это точно можно но как неизвестно мне а в m05 уже есть и код который получает цвет пиксела ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2012, 00:43 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
кстати то что мы может послать PrintScreen нажатия с помощью SendInput надо тоже проверить защита именно эту кнопку может не пропускать ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2012, 00:49 |
|
Имитация нажатий. имитация сигнала
|
|||
---|---|---|---|
#18+
> Автор: аппаратура > но только в файл а как объяснить что писать надо в память не знаю > наверное нельзя это vb6 объяснить > наверное vb6 дает писать только в файл Можно, в MSDN даже статья с примером была на эту тему как сделать скрин формы, экрана. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2012, 11:51 |
|
|
start [/forum/topic.php?fid=60&msg=37614699&tid=2158128]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 273ms |
0 / 0 |