Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Хендл окна! Баг!?

Автор: xolost 21.10.2012, 14:32

Сколько уже написал скриптов в пилоте, так не разу и не удалось привязать пилот к окну минуя "ctrl+a"
что бы полноценно работало.
Вот четкий пример..
Открываем блокнот, открываем пилот.
Пишем в пилоте:

set #handleWin findwindow (test - Блокнот)
set workwindow #handleWin
send rabotaet
end_script

или

set #handleWin findwindow (PID указываем реальный номер)
set workwindow #handleWin
send rabotaet
end_script

Ни в одном ни во втором случае текст не вбивается в окно.
А если стереть хендл
и оставить вот так:

send rabotaet
end_script

Нажать на блокноте ctrl+a

то в блокноте успешно напишется сообщение.

Или я полный тормоз или функция не работает или работает не корректно...

Прошу подсказать что не так я делаю или что надо сделать что бы заработало.
Спасибо.

Автор: DarkMaster 21.10.2012, 14:40

Блокнот на win7 имеет злую подлость: родительское окно не восприимчиво к посылам клавиш. Область ввода текста является одним из дочерних окон. Итого ты нашел не тот хендл.
Чтобы не вставать на подобные грабли, смотри дерево окон с помощью windowscanner.

Автор: xolost 21.10.2012, 14:45

Цитата(DarkMaster @ 21.10.2012, 15:40) *

Блокнот на win7 имеет злую подлость: родительское окно не восприимчиво к посылам клавиш. Область ввода текста является одним из дочерних окон. Итого ты нашел не тот хендл.
Чтобы не вставать на подобные грабли, смотри дерево окон с помощью windowscanner.


Не поверишь, я скажу почему я сдался и решил создать эту тему.
Я снес к чертовой бабке со всех компов вин7 и везде воткнул винХП 32бита! Стандартнее просто не бывает... хотел вин98, но не нашел образов...

Потому заявляю, проблема не решилась.

Но windowscanner не пробовал - щас попробую, спасибо.

Автор: xolost 21.10.2012, 15:03

Кстати, блокнот я привел для примера! Ни в каком браузере у меня не работало не разу.. точно так же как в блокноте..

И ещё, что-то этот InqSoft Window Scanner что-то не желает интерфейс показывать(( в запущенных приложениях виден, якобы развернут, а всё равно нету интерфейса.. блин.. не помнишь, комп перезагружать надо после переустановки?

Автор: DarkMaster 21.10.2012, 15:07

Сканер вообще не требует установки.

Браузер еще сложнее чем блокнот. Там десятки хендлов. Вообще я бы посоветовал для начала выводить в лог содержимое переменной с хендлом.

Автор: xolost 21.10.2012, 15:23

Цитата(DarkMaster @ 21.10.2012, 16:07) *

Сканер вообще не требует установки.

Браузер еще сложнее чем блокнот. Там десятки хендлов. Вообще я бы посоветовал для начала выводить в лог содержимое переменной с хендлом.


сцыль можешь дать на рабочую версию? а то первая страница поисковика кидает видимо на вирусный софт, который я по всей видимости уже скушал, раз установил..


при пиде и текстовом варианте
16:21:21 6 (, 2): 44500254
16:21:52 6 (, 2): 44500254
вот такие логи

Автор: DarkMaster 21.10.2012, 15:31

http://s0m.narod.ru/iws.html

Смотри дерево. Там уже можно начинать понимать что находишь и что следовало бы найти.

Автор: xolost 21.10.2012, 15:35

Цитата(DarkMaster @ 21.10.2012, 16:31) *

http://s0m.narod.ru/iws.html

Смотри дерево. Там уже можно начинать понимать что находишь и что следовало бы найти.

Я не могу у себя на компе это дерево увидеть.. не показывается нифига...
а сайт значит верный откуда качал... (тот же что и ты дал)..и он имеет установку, а не сразу запускается.. вот не хочет работать...

Автор: DarkMaster 21.10.2012, 15:37

https://forum.uokit.com/index.php?act=Attach&type=post&id=1171

Автор: xolost 21.10.2012, 15:41

Цитата(DarkMaster @ 21.10.2012, 16:37) *

https://forum.uokit.com/index.php?act=Attach&type=post&id=1171

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

Автор: DarkMaster 21.10.2012, 15:51

99% ты не тот хендл находишь.

Автор: _LESTAT_ 21.10.2012, 17:16

Все работает с блокнотом на виндовс 7 , просто ты не указывал переход на дочернее окно, являющееся едитом. Пользуйся windows scaner'ом , чтобы узнать на сколько дочерних окон спускаться и куда.

Цитата
set #a findwindow ( — Блокнот )
set #a getwindow (#a CHILD)
set workwindow #a
if #a > 0
showwindow #a
send Privet ot LESTAT85
sendex {Enter}
send Как видишь, все работает !
end_if
stop_script


Это простейший рабочий пример, в более сложных веб приложениях поиск нужного рабочего окна целый процесс, вот например кусок кода скрипта отвечающий за это в моем скрипте.
Цитата

//Поиск игрового окна
:Res0
//Help Позиции в которых может появиться нужное нам игровое окно
//0: >>v>v>> // > child , v next
//1: >>v>v>>>>
//2: >>>v>>
//3: >>>v>>>>
//4: >>>v>>> (10.09.2012)
//5: >>>v>>>v (21.10.2012)
set #w #w + 1
if #w > 2
set #w 0
gosub win_lost
end_if
//set logging > w = #w
:Opo
set #va findwindow ( какая то игра)
if #va = 0
gosub win_lost
end_if
set #wjug0 #va //Для Обновления страницы
set #var getwindow (#va CHILD)
if #var = 0
gosub opoj //Для отсеивания постор. окон
end_if
get windowpos #va #wx #wy #ww #wh //Получаем размеры окна
// set logging #va #wx #wy #ww #wh
set #hposx (#wx + (#wx + #ww / 2)) //Вычисляем середину окна
set #hposy (#wy + #wh - 50) //Вычисляем почти низ окна
set #var getwindow (#var CHILD)
if #w = 1
set #varbuf #var
set #var getwindow (#var NEXT) //2 or 3
if #var = 0
set #var #varbuf
end_if
end_if
set #var getwindow (#var CHILD)
set #var getwindow (#var NEXT) //1 or 3
set #var getwindow (#var CHILD)
set #var getwindow (#var CHILD)
gosub ButEn_seach
set #var getwindow (#var CHILD)
gosub WinGame_seach //сделать дополнительный goto
if #w = 2
set #varbuf #var
set #var getwindow (#var NEXT) //5
gosub WinGame_seach
if #var = 0
set #var #varbuf
end_if
end_if
set #var getwindow (#var CHILD)
gosub WinGame_seach
goto Res0

Автор: Санчес 10.1.2013, 15:01

Цитата(DarkMaster @ 21.10.2012, 14:51) *

99% ты не тот хендл находишь.

Такая же беда...
код
Цитата
set workwindow 0007079C
set $w workwindow
log $w
move 1015, 307
stop_script



В логе "0"
мувает по абсолютным 1440*900
ВинХП


Брауз Хром

В любой вкладке мувает в одно место,и даже если все свернуть делает то же на раб.столе.


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Санчес 10.1.2013, 15:19

причем если после мува добавить лефт туда же, то не лефтает.

Автор: xolost 10.1.2013, 15:23

Цитата(Санчес @ 10.1.2013, 16:19) *

причем если после мува добавить лефт туда же, то не лефтает.

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


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

Автор: Санчес 10.1.2013, 15:35

я хочу фыльму смотреть пока пилот работает,поэтому мне не подходит через курсор...а так мне проще нажать ктрлА чем в каждый скрипт добавлять новые строки с привязкой

и фильм на весь экран хочу smile.gif

Автор: xolost 10.1.2013, 15:39

Цитата(Санчес @ 10.1.2013, 16:35) *

я хочу фыльму смотреть пока пилот работает,поэтому мне не подходит через курсор...а так мне проще нажать ктрлА чем в каждый скрипт добавлять новые строки с привязкой

и фильм на весь экран хочу smile.gif


Не понимаю, в чем отличие между привязкой по курсору и по хендлу? ну по-сути?
Курсор не нужно всегда держать на окне.
Курсор нужно один раз навести куда нужно через move (на окно к которому привязывать будем) и написать:
Код
set WorkWindow WindowFromCursor

И всё, к этому окну будет привязан.


кажется я понял почему ты считаешь это проблемой.
Твой код использует "шапку"?
Если не знакомо понятие "шапка", то поясняю.

сначала указываем все константы в коде:

Например,
Код
//шапка
set #a 1
set $a 10
move 500, 500
set WorkWindow WindowFromCursor

//+++++++++++++= тело
:na4alo
while 1 = 1
   // тут много всякого кода.
end_while


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

Автор: DarkMaster 10.1.2013, 15:41

Ну для начала вы присвоили переменной workwindow вместо хенда текст.
set workwindow 0007079C
0007079C для пилота текст и не более того. Либо пишите признак шестнадцатиричного числа 0x0007079C, либо используйте десятичный вид числа(предпочтительнее).

Во вторых напрашивается вопрос зачем вы вообще задаете константой хендл? Он при каждом запуске будет сгенерирован новый. Без findwindow не обойдетесь.

Цитата
кажется я понял почему ты считаешь это проблемой.
Твой код использует "шапку"?

Куда страшнее когда работа с браузером и хендлы меняются, как перчатки.

Автор: Санчес 10.1.2013, 15:44

Цитата
Не понимаю, в чем отличие

запустил скрипт в нужном окне
привязал
включил фильм
скрипт повторился
и...
к чему он привяжется в этот раз??

Автор: xolost 10.1.2013, 15:45

Цитата(Санчес @ 10.1.2013, 16:44) *

запустил скрипт в нужном окне
привязал
включил фильм
скрипт повторился
и...
к чему он привяжется в этот раз??


Ответил на это чуть выше про шапку.
Как раз то о чем вы спрашиваете

Автор: Санчес 10.1.2013, 15:55

Цитата
Ну для начала вы присвоили переменной workwindow вместо хенда текст.
set workwindow 0007079C
0007079C для пилота текст и не более того. Либо пишите признак шестнадцатиричного числа 0x0007079C, либо используйте десятичный вид числа(предпочтительнее).

Спасибо за совет,с десятичным работает.

Цитата
Куда страшнее когда работа с браузером и хендлы меняются, как перчатки.


Это что значит? Обновил страницу,определил правильно.


понял что такое "в шапке",да,именно в шапке,мне именно там и надо чтобы оно было,потому как скрипты меняются и один запускает другой

DarkMaster если я правильно понял из вики то для того чтобы фколор\фимидж работали с хендлом недостаточно прописать его в шапке ,а также нужно добавить переменную с раб.окном в строку с фколором\фимиджем между %массивом и параметрами поиска,так?

Автор: xolost 10.1.2013, 16:00

Цитата(DarkMaster @ 10.1.2013, 16:41) *

Куда страшнее когда работа с браузером и хендлы меняются, как перчатки.


Сет курсору пофигу на все эти хендлы.
Я помню мы долго конфликтовали на эту тему с тобой.

И мнение я всё же не изменил своего.
Напомню,
Если уопилот имеет функцию "привязка к окну по названию", то такая функция должна работать полноценно. т.е. не используя сторонних программ сканеров для вычисления дочерних кодов.

Вот я вижу перед собой только одно окно. Я не вижу 20 дочерних или каких там, которые имеют тоже название.
И раз я вижу только одно окно перед собой, значит браузер как-то всё-таки различает их? и скрывает не нужные. Раз сканер тоже умеет искать в итоге нужное. Стало быть и пилот можно научить различать и находить нужное. Должны быть способы.

Автор: Санчес 10.1.2013, 16:12

вкладки брауза тоже различает по хендлу и переключает на передний план,пока считаю что ето есть гут,дальше видно будет smile.gif

Автор: Санчес 10.1.2013, 16:33

set $w getwindow (0)
пишет в логе ноль и ничего не делает
хендл из сканера занесенный в ворквиндоу работает правильно
Почему ?

Автор: DarkMaster 10.1.2013, 16:35

Цитата
Вот я вижу перед собой только одно окно.

Ты не представляешь насколько глубоко ты сейчас заблуждаешься.
Цитата
Цитата
Куда страшнее когда работа с браузером и хендлы меняются, как перчатки.


Это что значит? Обновил страницу,определил правильно.

При каждом обновлении страницы хендл будет генерироваться новый.
Цитата
DarkMaster если я правильно понял из вики то для того чтобы фколор\фимидж работали с хендлом недостаточно прописать его в шапке ,а также нужно добавить переменную с раб.окном в строку с фколором\фимиджем между %массивом и параметрами поиска,так?

Не совсем корректно. Необходимо указывать хендл в финде, а где он объявлен и объявлен ли вообще не имеет никакого значения. Можно просто написать число, можно тыкнуть ctrl+a и написать workwindow, можно подставить переменную. Это как душе угодно.

Цитата
set $w getwindow (0)
пишет в логе ноль и ничего не делает
хендл из сканера занесенный в ворквиндоу работает правильно
Почему ?

set $w getwindow (0)
log $w
stop_script

в логе:
20:34:58 22 (, 1): 919970

Автор: Санчес 10.1.2013, 16:46

Код

Цитата
set workwindow 133024
log $w // в логе 133024
move 1018, 305
wait 500
left 1018, 305
stop_script

работает
Код
Цитата
set $w getwindow (0)
set workwindow $w
log $w // в логе 0
move 1018, 305
wait 500
left 1018, 305
stop_script

не работает

Сорри ,обшибси
Код
Цитата
set $w getwindow (0)
set workwindow $w
log $w // лог 5:39:11 8 (, 2): 395570
move 1018, 305
wait 500
left 1018, 305
stop_script

не работает

Цитата
При каждом обновлении страницы хендл будет генерироваться новый.
Цитата
DarkMaster если я правильно понял из вики то для того чтобы фколор\фимидж работали с хендлом недостаточно прописать его в шапке ,а также нужно добавить переменную с раб.окном в строку с фколором\фимиджем между %массивом и параметрами поиска,так?
Не совсем корректно. Необходимо указывать хендл в финде, а где он объявлен и объявлен ли вообще не имеет никакого значения. Можно просто написать число, можно тыкнуть ctrl+a и написать workwindow, можно подставить переменную. Это как душе угодно.

1 Обновил страницу несколько раз,хендл не меняется,переоткрывание вкладки,и соответственно перезапуск брауза - хендл меняется.
2 Значит правильно понял,НО Если помимо фимиджа есть иф по цвету то привязка в шапке таки нужна?

Автор: Санчес 10.1.2013, 16:58

дошло...иф не будет работать даже с привязкой...жаль.

Автор: veiron 10.1.2013, 17:27

Цитата(Санчес @ 10.1.2013, 17:46) *

1 Обновил страницу несколько раз,хендл не меняется,переоткрывание вкладки,и соответственно перезапуск брауза - хендл меняется.

Я так же мучался с хэндлом, даже где то тема моя по этому поводу есть. Теперь научился и проблем с хэндлом нет. Спасибо ДаркМастеру,доходчиво объяснил. Теперь смотри:
1. Скачивай InqSoft Window Scanner
2. Наводишь прицел на нужное тебе место
3. Открываешь справа посредине много папок.
4. Смотришь в открывшемся окне где находится нужное тебе.
У меня в гугле получается вот такой хэндл, единственное я незнаю как сделать его 1 строкой, приходится вставлять, все 4 строка. В небесах с игрой всего 2 хэндла,практически на всех браузерах.
Цитата

set #handleWin findwindow (Небеса: уникальная игра! - Игра - Google Chrome)
set #handleWin GetWindow (#handleWin CHILD)
set #handleWin GetWindow (#handleWin CHILD)
set workwindow #handleWin

И еще, желательно, что бы окно было открыто в браузере одно, ни каких дополнительных вкладок. Вот к примеру, этот форум не меняет хэндл, даже если его открыть в гугле еще одной вкладкой, а вот если открыть одноклассники, то они так изменят хондл, что не разберешься, что прописывать.

Да,еще, если тебе для Небес, то там все работает на лефтах прекрасно, и не надо ни какие мувы и клефты, единственно, у меня винда 7 64 бита, и я так и несмог понять как работать с перекрытым окном с помощью Фимеджа и Фколора, А так если монитор большой, то в одной половине пилот в игре играет, а ты в другой делаешь свои дела.

Автор: DarkMaster 10.1.2013, 17:35

Цитата
в одной половине пилот в игре играет, а ты в другой делаешь свои дела.

Можно вообще за пределы экрана выкинуть.

Автор: veiron 10.1.2013, 17:36

Цитата(DarkMaster @ 10.1.2013, 18:35) *

Можно вообще за пределы экрана выкинуть.

Нет, нельзя. Сразу перестает работать.

Сейчас попробовал. Работает только иф поиск цвета, а Ф.имедж и Ф.колор сразу перестают работать.

Автор: DarkMaster 10.1.2013, 17:37

Цитата
1 Обновил страницу несколько раз,хендл не меняется,переоткрывание вкладки,и соответственно перезапуск брауза - хендл меняется.
2 Значит правильно понял,НО Если помимо фимиджа есть иф по цвету то привязка в шапке таки нужна?

1) Хром?
2) Да, либо по абс.

Автор: Санчес 10.1.2013, 19:34

Цитата
и я так и несмог понять как работать с перекрытым окном с помощью Фимеджа и Фколора

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



Экран то у меня достаточно большой,но я хочу чтобы то что я хочу делать разворачивалось на весь экран а не наполовину,иначе на фиг мне 20 дюймов если фильм я буду смотреть в диагонали в 5-10 дюймов smile.gif

Цитата
Да, либо по абс.

не понял причем тут абс...попробую объяснить суть вопроса,работа с окном по привязке к хендлу полностью идентична контрол+а? если да до иф с цветом не работае ни в одном из этих вариантов,а мне надо чтобы работал именно ИФ так как с фколором и фимиджем я уже понял че делать.


я делаю иф по цвету,привязываю к окну через ктрл+а,перекрываю это окно и иф перестает определять цвет правильно,в этом главная проблема которую хотелось бы решить


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

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

"И еще, желательно, что бы окно было открыто в браузере одно, ни каких дополнительных вкладок."

у меня вкладки нормально определяет,пока проблем не было
"то там все работает на лефтах прекрасно"

к лефтам у меня тоже нет вопросов,у меня вопрос только по ИФу пока..

Цитата
1) Хром?

DarkMaster именно он.

Цитата
Я так же мучался с хэндлом, даже где то тема моя по этому поводу есть. Теперь научился и проблем с хэндлом нет. Спасибо ДаркМастеру,доходчиво объяснил. Теперь смотри:
1. Скачивай InqSoft Window Scanner
2. Наводишь прицел на нужное тебе место

Андпей,по идее getwindow в Пилоте должен делать тоже самое что и сканер,в этом главное,почему?Объясняю,если ты хочешь привязаться к окну по хендлу с помощью сканера то не вопрос,делай все то что делал раньше,НО! если getwindow делает тоже самое что и сканер то вместо всех тех операций:
Цитата
1. Скачивай InqSoft Window Scanner
2. Наводишь прицел на нужное тебе место
3. Открываешь справа посредине много папок.
4. Смотришь в открывшемся окне где находится нужное тебе.

да еще и вставить хендл в переменную надо....
ты пишешь
Код

set $w getwindow (0)
set workwindow $w

и все smile.gif

очепятка "Андрей",извини спешил smile.gif

Цитата
ты пишешь
Код

set $w getwindow (0)
set workwindow $w

DarkMaster или я ошибаюсь?

интересный возник вопрос,а не считает ли пилот активным СВОЕ окно в тот момент?Я то нежимаю пуск не гор.клавишей,а мышкой на кнопке РЛОУ smile.gif

Хм... так и есть,если не тыкнуть в окно брауза,то пилот пишет хундл своего окна,если же поставить паузу перед ГЕТом,то в логе другой хендл,но проблема осталась,он все равно не тот что в сканере и так же с ним не работает скрипт.

хендл пилота 395570
... окна этой страницы 329276

сканер определяет:
пилот(заголовок) как 395570 Десятичное (00060932 Начальное)
это окно 723226 Десятичное (000B091A Начальное)

Кнопку play и все рядом показывает как отдельное окошко 329782 дес. 00050836 нач.

Цитата
Кнопку play и все рядом показывает как отдельное окошко 329782 дес. 00050836 нач.

В смысле кнопку пилота smile.gif

Автор: veiron 10.1.2013, 19:49

Цитата(Санчес @ 10.1.2013, 20:34) *

мне надо чтобы работал именно ИФ так как с фколором и фимиджем я уже понял че делать.

Саша, у тебя что, фколор и фимидж работают в перекрытом окне?

Автор: Санчес 10.1.2013, 20:04

я пока не пробовал,но Вики утверждает что есть выход
Научил 'findimage' искать картинки в перекрытых окнах. ищет не на всем экране, а в конкретном указанном окне. хэндл окна указывается в качестве типа поиска
set #w findwindow (test.bmp)
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a #w 70 10 15)
http://uopilot.tati.pro/index.php?title=Findimage
а вот про работу с цветом ИФа:
Привязка к окну: опциональна.
Работа со свернутым окном: частично.
но примера не вижу...пока..
http://uopilot.tati.pro/index.php?title=If



я так понимаю что если хочешь найти картинку в перекрытом окне,то надо хендл этого окна занести в переменную,а переменную поместить в строку фимидж после массива
set workwindow 1234567
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)
тогда фИмидж будет искать картинку в окне с указанным хендлом.

Модеры как выбрать цвет шрифта в сообщении?Хочется акцентировать внимание на словах и терминах цветом.

Автор: Zeleax 10.1.2013, 20:14

Цитата
Модеры как выбрать цвет шрифта в сообщении?Хочется акцентировать внимание на словах и терминах цветом.

Нежелательно делать попугайные сообщения.
Но если очень нужно: Редактирование сообщения/Расширенный режим, смотрите "BB-коды форума" и вставляйте в сообщения.

Лучше выделять курсивом или жирным.

Автор: Санчес 10.1.2013, 20:21

Мысль такая:
Иф по цвету это:
код
иф #x,#y 12345(цвет)
включается поиск по цветц в коорд #x,#y
а значит типа такого
set #иф FindColor ( #x,#y #x,#y (12345) ResultArray [type] [abs])
иф #иф > 0
выполнить тело ИФа
как то так...


Zeleax спс smile.gif


Так?

smile.gif

Автор: veiron 10.1.2013, 20:24

Цитата(Санчес @ 10.1.2013, 21:04) *

я пока не пробовал,но Вики утверждает что есть выход
Научил 'findimage' искать картинки в перекрытых окнах. ищет не на всем экране, а в конкретном указанном окне. хэндл окна указывается в качестве типа поиска
set #w findwindow (test.bmp)
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a #w 70 10 15)
http://uopilot.tati.pro/index.php?title=Findimage

У меня почему-то не работает в перекрытом, если не перекрыто, все четко находится, может я не правильно, что то сделал, вот скрипт
Код
set #handleWin findwindow  (Игра - Opera)
set #handleWin GetWindow (#handleWin CHILD)
set #handleWin GetWindow (#handleWin CHILD)
set workwindow #handleWin
set #handleWin findwindow (test.bmp)
set $a FindImage ( 319, 342 417, 379 (test.bmp) %a workwindow 70 10 15)
set $a FindImage ( 319, 342 417, 379 (test.bmp) %a #handleWin 70 10 15)
if $a > 0
  msg Изображение найдено
  else
  msg Изображение не найдено
end_if
end_script

Автор: Санчес 10.1.2013, 20:27

set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)
должен быть зеленый по идее
желтый
проверим smile.gif

убедился,больше не буду smile.gif

Автор: veiron 10.1.2013, 20:29

Цитата(Санчес @ 10.1.2013, 21:27) *

set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)

у меня есть в коде workwindow

Автор: Санчес 10.1.2013, 20:29

Цитата
set #handleWin GetWindow (#handleWin CHILD)
set #handleWin GetWindow (#handleWin CHILD)

зачем две одинаковых?

Автор: Zeleax 10.1.2013, 20:32

set #handleWin GetWindow (#handleWin CHILD)
set #handleWin GetWindow (#handleWin CHILD)

Эти типа "сын сына" smile.gif
Напрямую написать "внук" нельзя

Автор: veiron 10.1.2013, 20:35

Цитата(Санчес @ 10.1.2013, 21:29) *

зачем две одинаковых?

Потому, что расположено окно во 2 дочернем окне от главного

Код
 set #w findwindow (test.bmp)
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a workwindow 70 10 15)
set $a FindImage ( 0 0 1300 1300 (2.bmp) %a #w 70 10 15)


А это, что опечатка, в первой строке картинка test.bmp, а во 2 - 3 2.bmp

Автор: Zeleax 10.1.2013, 20:42

Цитата
А это, что опечатка, в первой строке картинка test.bmp, а во 2 - 3 2.bmp

в 1 строке ищется окно, правда привязка не сделана
а в 2-3-й ищется картинка из файла

Автор: veiron 10.1.2013, 20:44

Цитата(Zeleax @ 10.1.2013, 21:42) *

в 1 строке ищется окно, правда привязка не сделана
а в 2-3-й ищется картинка из файла

Вот сам скрипт,без перекрытия окна картинка находится
Код

set #handleWin findwindow  (Игра - Opera)
set #handleWin GetWindow (#handleWin CHILD)
set #handleWin GetWindow (#handleWin CHILD)
set workwindow #handleWin
set #handleWin findwindow (test.bmp)
set $a FindImage ( 319, 342 417, 379 (test.bmp) %a workwindow 70 10 15)
set $a FindImage ( 319, 342 417, 379 (test.bmp) %a #handleWin 70 10 15)
if $a > 0
  msg Изображение найдено
  else
  msg Изображение не найдено
end_if
end_script

Автор: Санчес 10.1.2013, 20:47

Попробую понять цель кода...
set #handleWin findwindow (Игра - Opera)
ищем окно с названием и записываем в переменную
set #handleWin GetWindow (#handleWin CHILD)
определяем хендл того же окна?
set #handleWin GetWindow (#handleWin CHILD)
еще раз...
set workwindow #handleWin
назначаем рабочее окно из переменной
set #handleWin findwindow (test.bmp)
ищем окно с названием (test.bmp) и записываем в ту же переменную что и предыдущие два,в четвертый раз
set $a FindImage ( 319, 342 417, 379 (test.bmp) %a workwindow 70 10 15)
ищем в привязаном окне по коорд. картинку (test.bmp) хотя непонятно откуда ее брать для срвнения
set $a FindImage ( 319, 342 417, 379 (test.bmp) %a #handleWin 70 10 15)
ищем непонятно что и где...
Логика кода плиз.?

про дочерние окна понял,видимо так должно быть,не знаю..

Автор: Zeleax 10.1.2013, 20:50

set #handleWin findwindow (Игра - Opera) // ищем окно "Игра - Opera" и записываем его хендл в #handleWin
set #handleWin GetWindow (#handleWin CHILD) // ищем дочернее окно для окна с хендлом #handle и записываем хендл найденного окна в #handle
и т.п.

чтобы понять смысл - нужно разобраться с программой InqSoft WindowsScanner, в частности как устроена структура окон

Автор: Санчес 10.1.2013, 20:55

Цитата

set #handleWin GetWindow (#handleWin CHILD)
set #handleWin GetWindow (#handleWin CHILD)

Но если мы хотим дойти до "внука" то разве не надо изменить название переменной?

set #handleWinSon GetWindow (#handleWin CHILD)
"сын"
set #handleWinGrandSon GetWindow (#handleWinSon)
"внук"
???


видать я запутался...ладно,меня больше волнует ИФ цвет smile.gif как с ним быть в перекрытом окне?

Автор: Zeleax 10.1.2013, 20:58

Можно изменить, но не обязательно:

Код
set #a 5
msg #a
set #a #a + 1
msg #a
end_script


Цитата
видать я запутался...ладно,меня больше волнует ИФ цвет как с ним быть в перекрытом окне?

да вот в соседней теме как раз обсуждаем такую процедуру )

Автор: veiron 10.1.2013, 21:02

Цитата(Санчес @ 10.1.2013, 21:55) *

Но если мы хотим дойти до "внука" то разве не надо изменить название переменной?


Два чилда потому, что когда смотрим сканер видим:
1. Главное окно Игра - Opera ставим set #handleWin findwindow (Игра - Opera)
2. От него идет продолжение в дочерней папке, значит ставим set #handleWin GetWindow (#handleWin CHILD)
3. А от дочерней идет еще одна, в которой и будет наше окно,ставим еще set #handleWin GetWindow (#handleWin CHILD)
4. Завершаем set workwindow #handleWin

Автор: Санчес 10.1.2013, 21:24

Цитата
Два чилда потому, что

Дошло smile.gif
Цитата
да вот в соседней теме как раз обсуждаем такую процедуру )

Это в "Упростить скрипт"?

Автор: Zeleax 10.1.2013, 21:26

да

Автор: Санчес 10.1.2013, 21:35

заглянул,прочитал все что написано,пока не въехал,кто нибудь ответит мне на предыдущий вопрос,почему сканер и гет виндоу пишут разные хендлы одного и того же окна,и почему с тем что выдает сканер все работает а с тем что выдает гетвиндоу - нет?

Автор: Санчес 10.1.2013, 21:49

wait 2000
set $w getwindow (0)
set workwindow $w
log $w 20:36:54 8 (, 3): 329276
move 1126, 526
wait 500
left 1126, 526 // по кнопке "быстро" на этой странице
stop_script

// Если курсор оставить на кнопке "рлау" пилота то мувает ниже кнопки и не тычет
// Если тыкнуть в окно(типа сделать его активным) то мувает выше кнопки и не тычет

wait 2000
set $w 8849610 // Хендл от Сканера
set workwindow $w
log $w 20:37:59 8 (, 11): 8849610
move 1126, 526
wait 500
left 1126, 526 // по той же кнопке
stop_script

// В обоих случаях и мувает и тычет
Почему???

Автор: Zeleax 10.1.2013, 22:25

Значит привязка идет к разным окнам, расположенным в одном месте (или включающим в себя одно и то же место экрана).
Окном даже поле ввода считается или кнопка...
Возможно, что в 1-м случае к нужному окну еще следует переходить через getwindow ... CHILD/OWNER и т.д.

Автор: veiron 10.1.2013, 22:38

Код
set #a findwindow  (Игра - Opera)
set workwindow #a

Подскажите, вот так set workwindow #a работает в скрипте

Код
set #w findwindow  (Игра - Opera)
set #w GetWindow (#w CHILD)
set #w GetWindow (#w CHILD)
set workwindow #w

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

Автор: Zeleax 10.1.2013, 22:42

Чет я не пойму: если первый вариант работает, то зачем второй городить?

Автор: Санчес 10.1.2013, 22:52

Прав,методом тыка выяснил что гетвиндоу "тычет" в область с вкладками хрома( я так понимаю в левый верхний угол окна) и привязывает пилот к другим координатам,и мувает пилот в точку выше заданной так как сам пилот при ктрл+а в окне эти заголовки не считает...это очень плохо так как все скрипты я писал по относительным координатам которые выдавал пилот,переписывать все это просто аморально...можно ли как то "сказать" гетвиндоу "тыкать" не в угол а в центр??

Цитата
Значит привязка идет к разным окнам,

Автор: veiron 10.1.2013, 22:53

Цитата(Zeleax @ 10.1.2013, 23:42) *

Чет я не пойму: если первый вариант работает, то зачем второй городить?

Во втором варианте добавлены 2 чилда, в первом их нет. пилот не видит окно со 2 вариантом. если я его ставлю в скрипт так пилот видит окно.
Код

set #w findwindow  (Игра - Opera)
set #w GetWindow (#w CHILD)
set #w GetWindow (#w CHILD)
set workwindow #w

если в скрипт вставлено set workwindow #w то пилот уже окно не видит.
Код

set workwindow #w

Автор: veiron 10.1.2013, 23:06

Цитата(Санчес @ 10.1.2013, 22:49) *

wait 2000
set $w getwindow (0)
set workwindow $w
log $w 20:36:54 8 (, 3): 329276
move 1126, 526
wait 500
left 1126, 526 // по кнопке "быстро" на этой странице
stop_script

Сча попробовал, этот код работает только, если хэндл без чилдов, и только если мышкой кликнуть по нужному окну, а пилот запустить горячими клавишами. Как только мышкой нажал, кнопку старт в пилоте, так пилот сразу определяет свой хэндл.

Автор: Санчес 10.1.2013, 23:18

Кое что выяснил,с перекрытым окном фКолор работает,подтверждено,но есть одно но:
Если написать привязку к окну и лефт,то пилот выводит привязаное окно\вкладку в браузе на передний план( даве вкладки открыты и одна из них привязана) и тычет куда указано.Если брауз свернут то разворачивает.
Теперь если о фКолоре то он не делает этого(то есть не делает активной вкладку) и соответственно не тычет.
Вывод: В перекрытых(другим браузом или фильмом на весь экран) smile.gif но из других вкландок не "вытаскивает", что в принципе логично за ненадобностью,но если надо чтобы он "прыгал из вкладки во вкладку( 1 скрипт работает с одной,2 с другой) то чтобы поиск начался верно а значит надо "вытащить" вкладку на передний план(мне пока такое не нужну,но может кому пригодится,например Тебе Андрей smile.gif) то достаточно написать привязку и лефт в этот хендл,главное не попасть на какую нибудь кнопку дабы не сотворить лишнего smile.gif

Думаю фИмидж аналогично

Цитата
Вывод: В перекрытых(другим браузом или фильмом на весь экран) - работает,но из других вкландок не "вытаскивает", что в принципе логично за ненадобностью

Хотя было бы неплохо в соседней вкладке работает пилот,а я тем временем тут,в другой вкладке,пишу че нить smile.gif
Может это можно как нибудь осуществить если методом тыка выяснено что у каждой вкладки свой хендл...
Тогда можно было бы сделать управляющий скрипт,который бы один раз записывал хендлы для разных скриптов,а другие из него "забирали" каждый свой.

Автор: veiron 10.1.2013, 23:24

Цитата(Санчес @ 11.1.2013, 0:18) *

может кому пригодится,например Тебе Андрей smile.gif)

Спасибо Саша smile.gif Я такое пробовал. Я думал, что можно перекрыть полностью и что бы там тихонечко себе кликало, а на верхнее окно еще пилот поставить)

Автор: Санчес 10.1.2013, 23:33

Думаю логично было бы сделать так чтобы гетвиндоу брал нулевые координаты из указанного места...конечно можно и по абс,раз гетвиндоу берет их из левого верхнего угла(наверное).Но может можно придумать строку типа - set #w getwindow x y (0)

set #w getwindow x y (0) abs


Цитата
Я думал, что можно перекрыть полностью и что бы там тихонечко себе кликало,

я именно так и сделал,перекрыл Хром Мозиллой,все работает,и находит и лефтает,но это фКолор,думаю фИмидж тоже должен также.

оба брауза развернуты на весь экран

если в скриптах нет перехвата мыши(move например) то можно делать почти все что хочешь,только не тыкать мышкой чаще чем каждые 10-100 мс smile.gif

я так понимаю что фИмидж это "усиленный" фКолор.

просто фКолор ищет одну точку и сравнивает с заданной,а фИмидж ищет 100 точек(картинка 10*10пикс),и так же сравниваетс заданой,и даже может быть сверяет координаты каждой точки,а не только цвет.На досуге проверю так ли это.

Автор: veiron 10.1.2013, 23:37

Цитата(Санчес @ 11.1.2013, 0:33) *

я именно так и сделал,перекрыл Хром Мозиллой,все работает,и находит и лефтает,но это фКолор,думаю фИмидж тоже должен также.

Сейчас попробовал. Находит картинку рандомно: 10 раз увидел 1 нет, 15 раз увидел 1 нет, 28 раз увидел 2 нет. 2 раза увидел 1 нет. Плохая работа в перекрытом окне.

Автор: Санчес 10.1.2013, 23:47

Цитата
просто фКолор ищет одну точку и сравнивает с заданной,а фИмидж ищет 100 точек

поэтому я в большинстве случаев,когда достаточно проверить одну точку,пользуюсь фКолором,он гораздо быстрее имиджа потому как меньше напрягается,имидж же при 6 картинках(40*40пикс) поиска через "or" уже подтормаживает,а их количество уже выросло до 15,и будет расти,поэтому обрезал их до 20*20,но боюсь после 30ти штук опять начнет тормозить,придется резать 10*10...потом 5*5 и теде smile.gifsmile.gif

Цитата
проверить одну точку,пользуюсь фКолором

и поэтому на "Небесах" скриптик в 200 строк за 25 сек успевает перебрать все поле и все пять цветов,пропускает ход иногда из за не вовремя выскакивающих стрелочек-подсказок над камнями.

Цитата
успевает перебрать все поле и все пять цветов

ну конечно если нет комбинаций и нет маны на квадрат или крест,идет от красных камней к анкхам по очереди.

Цитата
Находит картинку рандомно: 10 раз увидел 1 нет

нехорошо,учту,как только займусь таким скриптиком - проверю любопытно почему...На каких задержках в среднем работают твои скрипты?

Тип поиска пробовал и 1 и 2 ?

Автор: veiron 10.1.2013, 23:55

Цитата(Санчес @ 11.1.2013, 0:47) *

Тип поиска пробовал и 1 и 2 ?

Ты меня не понял. Это так он нашел сейчас в перекрытом окне. А так находит всегда.
Код

set #ke findimage ($X $Y ($key) %keyverx  2 100 1 2)

Автор: Санчес 11.1.2013, 0:22

Ну я так и понял что а перекрытом,о том и речь smile.gif , а,ну да,в перекрытых он ищет видимо по умолчанию медленно но верно..

Автор: veiron 11.1.2013, 0:30

Цитата(Санчес @ 11.1.2013, 1:22) *

а,ну да,в перекрытых он ищет видимо по умолчанию медленно но верно..

как раз наоборот, в НЕ перекрытых он находит всегда, а в перекрытом пропускает(не находит).

Автор: Санчес 11.1.2013, 0:40

Цитата
как раз наоборот, в НЕ перекрытых он находит

я не говорю находит ли,я говорю ИЩЕТ smile.gif.В обычном фмидже указывается тип поиска медленный или быстрый,а в перекрытых вместо него указывается хендл,значит тип поиска по умолчанию - медленный.

Цитата
а,ну да,в перекрытых он ищет видимо по умолчанию медленно но верно..

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

Автор: Санчес 11.1.2013, 1:19

2.19
Добавил возможность ссылаться на 'workwindow' из других скриптов.
Модеры можно пример?Неплохо было бы и на Вики написать...

Автор: DarkMaster 11.1.2013, 4:28

вообще workwindow.номер_вкладки по факту с зарезервированными переменнымми это вызывает зачастую проблемы. Надежнее будет через обычную переменную передать.
wet #workwindow workwindow
и уже обращаться к #workwindow

Автор: WKnight 11.1.2013, 11:11

Цитата
дошло...иф не будет работать даже с привязкой...жаль.
Для него сделана функция color().

Цитата
set $w getwindow (0)
Цитата: "функция 'getwindow', вызванная без параметров (но со скобками), или с 'handle'=0 вернет хэндл активного окна" (не верхнего, и не рабочего стола. - прим. переводчика)

Цитата
Код
set #w findwindow (Игра - Opera)
set #w GetWindow (#w CHILD)
set #w GetWindow (#w CHILD)
set workwindow #w
а вот так уже не работает, что у меня не правильно.
Может неправильный путь, и у первого чилда просто нет потомков.

Цитата
В обычном фмидже указывается тип поиска медленный или быстрый,а в перекрытых вместо него указывается хендл,значит тип поиска по умолчанию - медленный.
Неверное предположение. Там быстрый тип поиска, но слегка замедлен за счет перекрытости клиента. Поищите первым типом че-нить на всем экране...

Автор: veiron 11.1.2013, 11:57

Код
 
set $a 0
while ( $a = 0 )
set workwindow #handleWin
wait 100
set $a findcolor (108, 431 108, 431 1 1  1315436  %s workwindow )
if $a > 0
left 108, 431
end_if
wait 1s
end_while

Подскажите, что не так в этом коде. Включаю пилот, запускается цикл, 1 раз пилот цвет находит, потом может 5 раз пропустить, а 6 найти. Если включат и выключать пилот, находит каждый раз, без пропусков.
Еще если заменить wait 1s на wait 8s, тоже находит каждую.
Код

set $a 0
while ( $a = 0 )
set workwindow #handleWin
wait 100
get color #color 108, 431
set $a findcolor (108, 431 108, 431 1 1  1315436  %s workwindow )
if $a > 0
left 108, 431
end_if
wait 1s
end_while

В этом коде все тоже самое, только перед фколором добавил get color и все работает, цвет точки в цикле while находит каждый раз. Почему так происходит, ведь я #color ни куда не вставляю, зничит по идее и гетколор не работает.

Автор: veiron 11.1.2013, 12:12

Цитата(WKnight @ 11.1.2013, 12:11) *

Может неправильный путь, и у первого чилда просто нет потомков.

Вы наверно меня не так поняли. Если вставляю в скрипт полный хэндл состоящий из 4 строк, то все работает пилот окно находит, а вот если в скрипт вставил одной строкой set workwindow #w сразу пилот перестает видить окно.
Код

set #w findwindow (Игра - Opera)
set #w GetWindow (#w CHILD)
set #w GetWindow (#w CHILD)
set workwindow #w

так пилот видит окно и клики выполняются.
Код

set workwindow #w

а вот так уже не видит и клики не происходят.

Автор: DarkMaster 11.1.2013, 12:17

про фколор только одна идея - цвет изменяется. Посмотри логом что вообще возвращается.

Цитата
а вот так уже не видит и клики не происходят.

дык а как они будут происходить? Привязки то нет. #w пустая же.

Автор: veiron 11.1.2013, 12:20

Цитата(DarkMaster @ 11.1.2013, 13:17) *

про фколор только одна идея - цвет изменяется. Посмотри логом что вообще возвращается.

А почему тогда с добавлением гет колора работает ???
Цитата(DarkMaster @ 11.1.2013, 13:17) *

дык а как они будут происходить? Привязки то нет. #w пустая же.

Как это пустая, я же там все прописал?

Автор: DarkMaster 11.1.2013, 12:41

Цитата

А почему тогда с добавлением гет колора работает ???

я не сказал, что это хорошая версия. Она просто единственная. Сделай log commands, он может показать в чем проблема.
Цитата
Как это пустая, я же там все прописал?

Цитата
Код


set workwindow #w


а вот так уже не видит и клики не происходят.

Во втором случае я не вижу какого-либо присвоения переменной #w.

Автор: veiron 11.1.2013, 12:55

Цитата(DarkMaster @ 11.1.2013, 13:41) *

я не сказал, что это хорошая версия. Она просто единственная. Сделай log commands, он может показать в чем проблема.

Попробую сделать log commands
Цитата
Во втором случае я не вижу какого-либо присвоения переменной #w.

Не подскажете как тогда правильно сделать?

Автор: DarkMaster 11.1.2013, 14:12

что сделать то? у вас есть работающий вариант. чем он вас не устраивает?

Автор: veiron 11.1.2013, 14:15

Цитата(DarkMaster @ 11.1.2013, 15:12) *

что сделать то? у вас есть работающий вариант. чем он вас не устраивает?

Сделать, что бы работало одной строкой set workwindow #w. Не устраивает потому, что у меня постоянно меняется хэндл, и если я вместо 4 строк буду вставлять 1 строк, то скрипт станет с меньшим количеством строк.

Автор: DarkMaster 11.1.2013, 14:46

Никак. Скрипт прочитать мысли должен что ли сам подставить значение в #w?) Делайте findwindow.

Автор: Санчес 13.1.2013, 1:29

Цитата
вообще workwindow.номер_вкладки

workwindow.1_script
так?

Автор: Zeleax 13.1.2013, 1:30

workwindow.1

Автор: Санчес 13.1.2013, 1:42

Цитата
дошло...иф не будет работать даже с привязкой...жаль.
Для него сделана функция color().

Извините,я видать пропустил,это что за функция и будет ли она работать в перекрытом окне?

Цитата
workwindow.1

Напишите пример на вики,мож еще кому пригодится.

Автор: Zeleax 13.1.2013, 1:43

там есть вроде

Автор: veiron 13.1.2013, 1:43

Код
добавил возможность отключать возврат курсора, после кликов мышью, в ту позицию, в которой он был до команды move 

Возможность добавили. А вот где почитать как отключать ни где нет. В истории развития нет, на вики тоже нет. Может кто подскажет, как все-таки отключать это move?

Автор: Zeleax 13.1.2013, 1:48

в настройках пилота снять птичку с "Возвращать курсор после кликов мышью"

Автор: Санчес 13.1.2013, 1:50

История развития

2.14
Добавил возможность задания рабочего окна из скрипта:
'set WorkWindow <handle>'
2.19
Добавил возможность ссылаться на 'workwindow' из других скриптов.
Категория: Окна

Вроде нету Zeleax

Автор: Санчес 13.1.2013, 2:03

Цитата
workwindow.1


Че то у меня как_то не очень получается,можно конкретнее?Сет не нужен,и название переменной на которую надо ссылаться в другом скрипте тоже не нужно?
Пример:
это в первом скрипте
move 1016, 309
set WorkWindow WindowFromCursor
set #ww WorkWindow
log Хендл рабочего окна #ww
stop_script
Мне нужно чтобы второй скрипт сделал рабочим окно хендл которого указан в первом,как должна выглядеть строка в первом скрипте??
workwindow.1 это все что нужно написать???

Автор: DarkMaster 13.1.2013, 4:22

сет нужен

Автор: Zeleax 13.1.2013, 9:48

set workwindow workwindow.2

Цитата
Вроде нету Zeleax

а последний пример смотрели?

Автор: Санчес 13.1.2013, 13:35

Цитата
а последний пример смотрели?

Смотрел,вот последний:
История развития

2.14
Добавил возможность задания рабочего окна из скрипта:
'set WorkWindow <handle>'
2.19
Добавил возможность ссылаться на 'workwindow' из других скриптов.
Я,к сожалению, не вижу в нем как писать "ссылку" на другой скрипт,я вижу ссылку на хендл.

Автор: Zeleax 13.1.2013, 13:41

Примеры

set workwindow 6573546 // сделать рабочим окно c указанным хендлом
set workwindow #h // сделать рабочим окно, хендл которого хранится в переменной #h
set workwindow windowfromcursor // сделать рабочим окно, над которым сейчас находится курсор мыши
set #w workwindow // сохранить в переменной #w хендл рабочего окна
set #h workwindow.3 // сохранить в переменной #h хендл рабочего окна скрипта из 3-й вкладки

Автор: Санчес 13.1.2013, 13:56

Цитата
set #h workwindow.3 // сохранить в переменной #h хендл рабочего окна скрипта из 3-й вкладки

Спасибо что добавили,сегодня я не обратил внимания на этот Последний пример,чуть раньше этой строки не было tongue.gif

Автор: Санчес 13.1.2013, 14:12

Цитата
вообще workwindow.номер_вкладки по факту с зарезервированными переменнымми это вызывает зачастую проблемы.
Надежнее будет через обычную переменную передать.
set #workwindow workwindow и уже обращаться к #workwindow


попробовал обе конструкции:
код1:
Цитата
move 1016, 309
set workwindow windowfromcursor
set #ww8 workwindow
log Хендл рабочего окна #ww8
stop_script

Запись в 8ой скрипт хендла.
код2:
Цитата
set #ww9 workwindow.8
set workwindow #ww9
log Хендл рабочего окна workwindow

"забор" хендла из переменной workwindow 8го скрипта - Работает.
код3:
Цитата
set #ww9 #ww8.8
set workwindow #ww9 log
Хендл рабочего окна workwindow

"забор" хендла из переназначенной переменной ww8 - Не работает (1): Символ не распознан (pos:1)





З.Ы Перенос второй строки в "код3" - неправильно вставил,в скрипте все правильно

третьей строки то бишь smile.gif

Автор: Zeleax 13.1.2013, 14:48

во время обращения к переменным других скриптов эти другие скрипты должны работать или быть на паузе (pause_script)

Автор: Санчес 13.1.2013, 15:20

Цитата
во время обращения к переменным других скриптов эти другие скрипты должны работать или быть на паузе (pause_script)

Спасибо,я этот момент пропустил.

но напрямую вроде забирает и из "стоячего" скрипта.

Автор: Zenogiasu 26.3.2024, 23:57

Привет, в последнее время стала часто возникать проблема - Пилот не привязывается к окнам, у которых слишком длинный хендл... Иногда длина хендла заходит за область отображения в рамке пилота. Вручную привязывается контрл+а а через ворквиндов не хочет. Пока-что решение сделал чтоб мышку наводил и привязывался. Правильно? Или лучше как обычно переходить на луа?

Автор: Aqualon 29.3.2024, 16:25

Цитата(Zenogiasu @ 27.3.2024, 0:57) *

Привет, в последнее время стала часто возникать проблема - Пилот не привязывается к окнам, у которых слишком длинный хендл... Иногда длина хендла заходит за область отображения в рамке пилота. Вручную привязывается контрл+а а через ворквиндов не хочет. Пока-что решение сделал чтоб мышку наводил и привязывался. Правильно? Или лучше как обычно переходить на луа?

Что значит длинный хендл?
Длинный заголовок окна?
Или само окно длинное и не влезает в ваш монитор?
Как будто в одном случае можно изменить заголовок окна на более короткий, в другом - изменить размер окна чтобы оно помещалось в монитор.
Выбор через ctrl + a врчуную - это, конечно, решение, но больше костыльное.
На луа смысл переходить есть всегда и при любых обстоятельствах.
Замечательный язык для задач скриптинга, работать с ним проще и приятнее чем с языком пилота.

Автор: Zenogiasu 31.3.2024, 12:19

Цитата(Aqualon @ 29.3.2024, 16:25) *

Что значит длинный хендл?
Длинный заголовок окна?
Или само окно длинное и не влезает в ваш монитор?
Как будто в одном случае можно изменить заголовок окна на более короткий, в другом - изменить размер окна чтобы оно помещалось в монитор.
Выбор через ctrl + a врчуную - это, конечно, решение, но больше костыльное.
На луа смысл переходить есть всегда и при любых обстоятельствах.
Замечательный язык для задач скриптинга, работать с ним проще и приятнее чем с языком пилота.

если хендл окна более 10ти символов, команда ворквиндов не привязывает пилот к окну. конец истории. енплохо бы пофиксить.
ошибки пилота, найденные в языке пилота, также могут быть быть актуальны и для зыка луа. я не знаю как вы бодете это тестить, но уж попробуйте наролить себе хендл больше 10ти символов на луа и проверить возможность привязки на нём.

Автор: Madeus 31.3.2024, 13:20

Хендл из 14 символов без проблем цепляется, Lua.

Автор: Cockney 31.3.2024, 14:55

Цитата(Zenogiasu @ 31.3.2024, 12:19) *

если хендл окна более 10ти символов, команда ворквиндов не привязывает пилот к окну. конец истории. енплохо бы пофиксить.
ошибки пилота, найденные в языке пилота, также могут быть быть актуальны и для зыка луа. я не знаю как вы бодете это тестить, но уж попробуйте наролить себе хендл больше 10ти символов на луа и проверить возможность привязки на нём.



Прошу прощения, а вы лично спонсируете разработку пилота ? Или вы как-то приобрели права на него, а заодно и на участников форума ? Иначе я не понимаю почему обсуждение вашей проблемы привело к такому сообщению
Цитата
я не знаю как вы бодете это тестить, но уж попробуйте наролить себе хендл больше 10ти символов на луа и проверить возможность привязки на нём.

Автор: Zenogiasu 5.4.2024, 20:09

Цитата(Cockney @ 31.3.2024, 14:55) *

Прошу прощения, а вы лично спонсируете разработку пилота ? Или вы как-то приобрели права на него, а заодно и на участников форума ? Иначе я не понимаю почему обсуждение вашей проблемы привело к такому сообщению

"каждый месяц отправляю 5% дохода создателям."
хотел бы я так сказать, ибо собирался так делать когда были лучшие времена. но последний год нигде стабильно поставиться не могу и сижу без профита...

Автор: DarkMaster 9.4.2024, 21:51

Мне несколько не ясна битность хэндла. Учитывая, что луа работает по части математики полностью на double в котором выделены 52 бита под целочисленные значения меня все это очень смущает. То, что в винапи хэндл храниться в double, даже при моем отношении к этой поделке, это было бы совсем слишком бредово. Скорее всего значение просто влазит в эти 52 бита из 64 (читай везет до поры). Я бы рекомендовал при наличии намека на подобные проблемы сразу объявлять long long через ffi, ну или uint64 и использовать его. Если парсер пилота проглотит, то это будет намного корректнее.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)