Что нового

Как сделать скрипт в неактивном окне.

pixtachek

Новичок
Сообщения
29
Репутация
0
Версия
3.3.6.1
Описание:
Код:
Run("program")
winmove("World of Warcraft", "",800 ,400 , 308,267)
send("account")
send("{TAB}")
send("password")
send("{ENTER}")


Примечание :Как бы мне этот скрипт запустить в неактивном окне. Я в autoIT дуб дубом. Помогите , очень прошу!
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: Помощь нужна.

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

Переименуйте тему иначе она будет закрыта.

С уважением, Модератор раздела.








А также настоятельно рекомендую почитать вот это
http://autoit-script.ru/index.php?topic=124.0


Добавлено:
Сообщение автоматически объединено:

pixtachek
в случае с WarCraft'ом, как и со многими другими играми на основе DirectX (либо других граф. движков), передать симуляцию кликов и нажатий клавиш, как показывает практика, не получится.
поэтому, тут либо в активном окне, либо поднимать виртуальную машину, запускать скрипт в активном окне там.
если есть желание, могу перенести тему в раздел к ботоводам. они в другие разделы не ходоки, а помощи возможно будет поболее
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
Перенесите тему к ботоводам. Буду признателен.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
все ммо игры стараются защищаться, если мне не изменяет память в ВОВ тоже вшита какая-то защита и имя ей Warden. По крайней мере раньше так было, пока активна защита вероятнее всего ты не сможешь отослать свое нажатие в неактивное окно. Я с неактивными окнами никогда не работал ибо нужды такой небыло. Ты лучше скажи чего ты хочешь добиться а уже там можно будет подумать как это решить.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
С помощью
Код:
ControlSend()

очень даже получается, по крайней мере, если полноэкранный режим выключен.
Warden, несколько мне известно, вообще ничего толком не защищает, а следит за подобными процессами и отсылает соответствующие сообщения на сервер - могут забанить.
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
dwerf сказал(а):
С помощью
Код:
ControlSend()

очень даже получается, по крайней мере, если полноэкранный режим выключен.
Warden, несколько мне известно, вообще ничего толком не защищает, а следит за подобными процессами и отсылает соответствующие сообщения на сервер - могут забанить.
У меня не получалось использовать ControlSend в ВОВ-ку. Можете привести пример , как должен выглядеть скрипт для ВОВ? Чтобы ControlSend вбивал акк и пасс.


Мне нужно сделать программу автостарта акков, для вов. Вот решил это сделать в au3 и было бы очень не плохо если можно было бы всё это сделать в неактивное окно , чтобы автостарт работал в бэкграунде.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Вот с этой темы и следовало начинать.(А не писать мне в ЛС :-X)
Как сказал Kaster игры основанные на основе DirectX не поддаются ControlSend'ам. Т.к. контролы у них своеобразные, и Au3Info их отследить не может. Так же во всех (мной известных) MMORPG играх есть та, или иная защита от эмуляции нажатий и т.п.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Medic84 сказал(а):
Как сказал Kaster игры основанные на основе DirectX не поддаются ControlSend'ам. Т.к. контролы у них своеобразные, и Au3Info их отследить не может.
Зачем попу гармошка?

Код:
$sPath = 'D:\World of Warcraft\Wow.exe'
$sLogin = 'Login'
$sPassword = 'Password'

Opt('SendKeyDelay', 50)
Opt('SendKeyDownDelay', 50)

If Not FileExists($sPath) Then Exit
$iPid = Run($sPath)
If @error Then Exit
Sleep(10000)
$aWinList = WinList('World of Warcraft')
For $i = 1 To $aWinList[0][0] Step +1
	If WinGetProcess($aWinList[$i][1]) = $iPid Then
		WinSetState($aWinList[$i][1], '', @SW_MINIMIZE)
		Sleep(1000)
		ControlSend($aWinList[$i][1], '', '', $sLogin, 1)
		ControlSend($aWinList[$i][1], '', '', '{TAB}')
		ControlSend($aWinList[$i][1], '', '', $sPassword, 1)
		ControlSend($aWinList[$i][1], '', '', '{Enter}')
		Sleep(1000)
		WinSetState($aWinList[$i][1], '', @SW_MAXIMIZE)
		ExitLoop
	EndIf
Next
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
Спасибо большое! dwerf . Помогло. :IL_AutoIt_1:


А как можно переделать вот такой вот скрипт, но тоже в неактивное окно. Подскажите.
Код:
Run("C:\Program Files\SocksCapV2\sc32.exe")
sleep(3000)

send("!f")
send("s")
sleep(3000)
send("IP {ENTER}")
sleep(3000)
send("{DOWN}")

sleep(500)

send("{ENTER}")


Я пытался сделать скрипт на подобие выше показанного примера, чет не получилось...
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Напишите конкретно что хотите сделать, что сделали, что не получилось.
Пара скринов программы, как вы это в ручную делаете, тоже бы не помешала, качать лень.
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
Программа SoksCap , служит в целях безопасности дабы в WoW заходить под другим IP.
Мой скрипт делает следующее:


Uploaded with ImageShack.us
 

Belfigor

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

pixtachek

Новичок
Сообщения
29
Репутация
0
Я уже говорил , что не разбираюсь в AutoIT? :smile:

Подскажите как сделать этот скрипт цикличным ? По моей задумке это должен быть спам бот в неактивное окно , подскажите как его воплотить в жизнь :smile:
Код:
$sChat = 'Wanna buy food'

Opt('SendKeyDelay', 50)
Opt('SendKeyDownDelay', 50)

If @error Then Exit
$aWinList = WinList('World of Warcraft')
$pid = WinGetProcess("World of Warcraft")

For $i = 1 To $aWinList[0][0] Step +1
    If WinGetProcess($aWinList[$i][1]) = $Pid Then
        Sleep(1000)
	    ControlSend($aWinList[$i][1], '', '', '{Enter}')
		ControlSend($aWinList[$i][1], '', '', $sChat, 1)
		ControlSend($aWinList[$i][1], '', '', '{Enter}')
		sleep(10000)
		ControlSend($aWinList[$i][1], '', '', '{Enter}')
		ControlSend($aWinList[$i][1], '', '', $sChat, 1)
		ControlSend($aWinList[$i][1], '', '', '{Enter}')
	    sleep(10000)
        Sleep(1000)   
        ExitLoop
    EndIf
	
Next
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Заключи то что хочешь циклично повторять в цикл
Код:
While 1
WEnd
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
Вопросы по GUI тут можно задать ? Или идти в спец тему?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Ну смотря какие, тут особых спецов по гуи нету, по крайней мере у меня так, примитивненькие интерфейсики :smile:
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
А GUI не сложный по идее , но в этом я опять же не разбираюсь , знания у меня совершенно поверхностные. Мне бы чтоб GUI отображал строку для в ввода текса ,которая будет менять
Код:
$sChat = 'TEXT'

И
Код:
sleep(delay)

Хоть идейку подскажите каким образом это сделать...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
текст можно выводить в лейбл
GUICtrlCreateLabel ( "text", left, top [, width [, height [, style [, exStyle]]]] )
а слип задавать через GuiCtrlRead
 

spider_xr

Знающий
Сообщения
14
Репутация
7
лайбл используется для отображени текста.
для в вода нужна GUICtrlCreateInput()

скачай "koda" тут на сайте есть ссылка как раз для создания GUI и для тех кто в этом мало помалу.
тута вот --> http://autoit-script.ru/index.php?topic=273.0
 
Автор
P

pixtachek

Новичок
Сообщения
29
Репутация
0
Возникла проблемка, если запускать несколько окон WoW , то скрипт начинает вбивать инфу в рэндомное окно . Можно ли как - то сделать чтоб он предлагал процессы WoW . Знаю что это можно сделать с помощью
Код:
_ProcessGetName ( $iPID )
Ток вот как это использовать я без понятия ....
З.ы. spider_xr Спасибо большое за ссылку... помогла !
 
Верх