Что нового

[Neverwinter Online] Отправка клавиш в неактивное окно (DirectX) - реально?

sss

Продвинутый
Сообщения
332
Репутация
96
Всем привет!

Предупреждаю сразу - если напишу какою-нибудь глупость или пропущу важную мелочь, просьба сильно тапками не бить - ботами практически никогда не занимался...

Написал небольшого бота для указанной выше игры. Все, конечно, неплохо, но он требует, чтобы окно было активным, а это не айс... Возможно ли перевести его работу на неактивное окно? Единственное, что требуется - нажимать клавиши, работа с картинкой [пока] не нужна. Собственно, вопрос - возможно ли отправить клавишу неактивному DirectX-окну? Все известные мне методы обломались - ControlSend требует ControlID, которого я найти не могу, при использовании PostMessage вообще ничего не происходит (даже если окно активное, хотя возможно, просто с кодом напортачил)... Гугление особо ничего не дало. Прошу помощи экспертов.

Заранее спасибо.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Sky-WaLkeR
Думаю стоит таки еще раз хорошенько покопать в сторону ControlSend.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
А куда еще дальше-то копать?.. Я бы с радостью, но код типа
Код:
ControlSend("Невервинтер", "", "", "q")

работать не хочет, а параметр ControlID я узнать никак не могу, ни через AutoIt Window Info, ни через Control Viewer от Yashied. Да и вообще, есть ли такой параметр у DirectX-окон... Больше вроде в ControlSend добавить ничего нельзя... Если есть что-то еще связанное с этой функцией, просьба ткнуть носом хотя бы в направление, буду очень признателен.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Sky-WaLkeR
А что, если попробовать найти дескриптор окна по процессу?
На форуме где-то была такая функция.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А почему в подобных темах никогда не рассматривается вариант виртуализации? Пара же кликов мыши и проблема исчезает на века. У меня вона десятки вирт машин живут на ноутбуке например
 

bugaj

Знающий
Сообщения
140
Репутация
11
ControlSend и PostMessage это по сути одно и тоже, контрол сенд просто обертка вокруг Postmessage, ну или они обе оборачивают одну и ту же базовую функцию ) можно похукать и посмотреть какова судьба этого сообщения. Хотя если окно действительно DirectX то оно скорей всего просто не принимает никаких сообщений. А другого способа отправить что либо в неактивное окно нет.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
Belfigor
Наверное потому что боты делаются не только для себя, но и для других. Не все же пользователи могут поднимать виртуальные машины :smile:
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Belfigor
Первая версия бота сейчас как раз и крутится на виртуалке, но сам ноут при этом начинает довольно неприятно фризить... Ну и DarWiM тоже прав ☺

bugaj действительно DirectX, так что думаю, хуками нецелесообразно... Спасибо за информацию.

DarWiM
Пробовал, не работает...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Как раз таки те боты что пишутся не под себя, бегают на вирт машинах. Достаточно указать данный пункт в соглашении ну + инструкцию по поднятию вирт машины
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Ну дык там же все элементарно. Двойнок клик, потом Далее-далее, готово и всё. Вы счастливый владелец вирт машины
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
OffTopic:
Belfigor
А что с ОС для машинки? Одного образа достаточно для десятка? :smile:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Да, и кряки на них работают так же как на физических машинах. Я использую Win7. Официальные MSDN образы.
 
Верх