Firzen475 |
Отправлено: 15 Января, 2014 - 10:17:05
|
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2014
Репутация: 0
|
Такая проблема, на стационарном компе (RADEON HD 6450, WIN7 64) протестировал модернизированную мною программу, всё было в порядке.
Решил запустить её на ноутбуке(видеокарта GEFORSE 310М, WIN7 32), комбинация кнопок SHIFT+CTRL+S не находит игру. После нажатия комбинации кнопок в окне игры, в окне кибор, в полях "Имя окна" и "Класс окна" пусто, а во вкладке графика, определяется не окно приложения, а весь рабочий стол, вместе, со всем что на нем открыто. Однако, к примеру хром, ловится в фокус на ура.
Я уже читал подобную тему, и проверил цветовую схему как в самой игре, так и непосредственно в винде. Везде 32 бита.
Есть ли у Вас советы по этой проблеме, или способ обхода. К примеру, что убрать в коде инициализации окна, чтобы скрипт работал с самим рабочим столом. (Тогда будет не важно, в фокусе окно или нет.)
Я предполагаю, что проблема либо в видеокарте ноутбука, либо в винде, однако, и на стационарном компе и на ноуте стоит одна и та же, только с разной разрядностью.
Код инициализации окна РФ Онлайн (Отобразить)
CODE:win w=window ("RF Online", "D3D Window", -1);//Указатель на окно игры
if (w!=0)//Игра есть
{
activate(w);//Активировать окно игры
sleep(500);
if (attach(w, 1)!=0)//Присоеденить поток игры для проверки курсора
{
|
|
|
Firzen475 |
Отправлено: 15 Января, 2014 - 11:34:39
|
Прохожий
Покинул форум
Сообщений всего: 5
Дата рег-ции: Янв. 2014
Репутация: 0
|
Если имеется в виду эта (win w=window ("RF Online", "D3D Window", -1) ссылка вручную, то при проверке на наличие окна if (w!=0) программа не находит окно, и прерывает алгоритм, следовательно присоединить мышь к потоку невозможно (пробовал удалить строку if (w!=0)).
Тут либо по какой-то причине класс окна изменяется, либо... ничего в голову больше не идёт. Хотя я пробовал вызывать окно только по имени. Безрезультатно, такое впечатление, что его вовсе нет.
Если это не то что Вы имели в веду, то поясните, каким образом это сделать и я сразу попробую. Я пока не полностью разобрался в функционале программы. |
|
|
obm |
Отправлено: 15 Января, 2014 - 11:45:04
|
Наблюдатель
Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2014
Репутация: 1
|
Firzen475 пишет: Если имеется в виду эта (win w=window ("RF Online", "D3D Window", -1) ссылка вручную, то при проверке на наличие окна if (w!=0) программа не находит окно, и прерывает алгоритм, следовательно присоединить мышь к потоку невозможно (пробовал удалить строку if (w!=0)).
Тут либо по какой-то причине класс окна изменяется, либо... ничего в голову больше не идёт. Хотя я пробовал вызывать окно только по имени. Безрезультатно, такое впечатление, что его вовсе нет.
Если это не то что Вы имели в веду, то поясните, каким образом это сделать и я сразу попробую. Я пока не полностью разобрался в функционале программы.
Да, я про это и писал.
Ну тогда еще можете попробовать писать бота на весь экран (вместо окна указываете -1, но тогда окно игры должно быть развернуто), а не на окно игры, я так и сделал в итоге. У меня другой случай, при ссылке на конкретное окно распознание картинки происходит долго, а при ссылке на экран практически моментально, но от окон пришлось отказаться. |
|
|
obm |
Отправлено: 15 Января, 2014 - 12:35:01
|
Наблюдатель
Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2014
Репутация: 1
|
Firzen475 пишет: Не могли бы Вы немного по подробнее объяснить, каким образом Вы это сделали, желательно с примером кода. Я могу предположить, что должно быть так:
win w=window (-1, -1, -1);
следовательно надо убрать проверку на захват окна if (w!=0)
но как быть со строками:
activate(w);
и
if (attach(w, 1)!=0){}
Просто удалить?
Просто удалить win=w и activate(w), активировать окно врунчую
Например, код:
findimage(1, #Image_0[0][0], -1, #x[0], #y[0], 0, 0, wind.widthclient, wind.heightclient, wind); работает в окне wind
а такой код:
findimage(1, #Image_0[0][0], -1, #x[0], #y[0], 0, 0, wind.widthclient, wind.heightclient, -1);
работает во всем видимом экране, если при этом у меня окно развернуто и находится поверх всего, какая разница, куда мне кликать, в конкретное окно, или в экран?
только тогда вам придется рефакторить весь код, убирать окно и ставить экран |
|
|
|