Что нового

ControlSend в разные окна, с одинаковым названием.

jufas222

Знающий
Сообщения
93
Репутация
5
Версия AutoIt v3.

Описание: Онлайн игра Lineage II, мне нужно запустить Н-ное количество окон и посылать в нужное мне окно ControlSend, но дело в том что все окна называются "Lineage II" возможно, как то можно разлечить и осуществить ControlSend в нужные мне окна, если это возможно, то дайте ссылочку где почитать, или покажите на примере.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Если запускаете один и тот же exe, то отслеживайте окна по координатам и переключайтесь между ними.
 
Автор
J

jufas222

Знающий
Сообщения
93
Репутация
5
Мне нужно что бы каждые 15 минут в 1 окне нажималось пару кнопок, во 2 и 3 нажимались одинаковые кнопки каждые 2 минуты, а в 4 скрипт работал без перерыва...Вы мне предлогаете уменьшить окна, и добавить в функцию, MouseClick что бы, окно переключилось, нажались кнопки, и опять окно переключилось на основное, или я вас не правельно понял?
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Пример:

Код:
#include <array.au3>

$hWnd = GetHandle('(E:) Локальный диск')
_ArrayDisplay($hWnd)

Func GetHandle($sTitle)
	Local $aRet[1][5]
	Local $aList = WinList()
	For $i = 1 To $aList[0][0]
		If ($aList[$i][0] == $sTitle) Then
			$aRet[0][0] += 1
			ReDim $aRet[$aRet[0][0] + 1][UBound($aRet, 2)]
			$aRet[$aRet[0][0]][0] = $aList[$i][1]
			$iPos = WinGetPos($aList[$i][1])
			$aRet[$aRet[0][0]][1] = $iPos[0]
			$aRet[$aRet[0][0]][2] = $iPos[1]
			$aRet[$aRet[0][0]][3] = $iPos[2]
			$aRet[$aRet[0][0]][4] = $iPos[3]	
		EndIf	
	Next
    Return $aRet	
EndFunc


Ищет все окна с одинаковым Title и возвращает массив с handle окна и его координатами, а дальше берёте нужное вам окно (то есть его handle из массива) и делаете с ним что хотите.
 
Автор
J

jufas222

Знающий
Сообщения
93
Репутация
5
Извените, но до меня не доходит, если я правельно понял, то вместо "('(E:smile: Локальный диск')" я должен был вписать своё окно, точнее "Lineage II: Overworld" я так и сделал, но мне не чего не выдало.

P.S. да и если он должен выдавать одинаковые окна, то какой от него толк?....
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Он выдаст не одинаковые окна а handle окна при каждом запуске одного и того же exe, handle у его окна меняется и является уникальным, что позволяет управлять тем или иным окном из кучи одинаковых.
 
Автор
J

jufas222

Знающий
Сообщения
93
Репутация
5
Но ведь в окошечке не чего не происходит....Я правельно вообще делаю, так как я не понимаю, что нужно делать? :(
Код:
#include <array.au3>

$hWnd = GetHandle('Overworld.exe')
_ArrayDisplay($hWnd)

Func GetHandle($sTitle)
    Local $aRet[1][5]
    Local $aList = WinList()
    For $i = 1 To $aList[0][0]
        If ($aList[$i][0] == $sTitle) Then
            $aRet[0][0] += 1
            ReDim $aRet[$aRet[0][0] + 1][UBound($aRet, 2)]
            $aRet[$aRet[0][0]][0] = $aList[$i][1]
            $iPos = WinGetPos($aList[$i][1])
            $aRet[$aRet[0][0]][1] = $iPos[0]
            $aRet[$aRet[0][0]][2] = $iPos[1]
            $aRet[$aRet[0][0]][3] = $iPos[2]
            $aRet[$aRet[0][0]][4] = $iPos[3]
        EndIf
    Next
    Return $aRet
EndFunc



P.S. Обратил внимание на то, что вы написали .exe по этому указал вместо названия окна, приложение, которое запускает окно с игрой (Lineage II: Overworld)


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

С помощью этой темы: http://autoit-script.ru/index.php/topic,9880.msg65525.html#msg65525 я смог узнать хендл окна, но как его использовать я не знаю...Подскажите пожалуйста.
 
Верх