Author Topic: Привязка к окну  (Read 2312 times)

0 Members and 1 Guest are viewing this topic.

method

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Привязка к окну
« on: January 01, 2018, 08:50:10 AM »
Приветствую всех, возник вопрос по привязке к окну.
Например я выставил в кликермене кликание мышкой со скоростью 1ms
Могу ли я так скажем открыть 10 таких кликеров на своём компе и привязать каждый к отдельному окну? 10кликерменов = 10окон
Соответственно могу ли я вот так сделать и просто скрыть эти 10окон(чтобы они работали на "фоне")? Будут ли выполняться в них нужные мне кликанья? Не будут ли возникать в них лаги какие-то(может быть ограничения есть какие-то, если увеличивается кол-во окон)?
« Last Edit: January 01, 2018, 08:52:12 AM by method »

i7330

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
Re: Привязка к окну
« Reply #1 on: January 02, 2018, 07:00:13 AM »
У меня с привязкой тоже ещё не всё гладко получается. Полагаю, что это из-за непростой структуры окна приложения к которому пытаюсь привязываться. Пробую HGETTEXT-том искать по title (см. на скриншоте зелёная стрелка):
[spoiler=screenshot][/spoiler]
Code: [Select]
SUB(l,$i)// log window info
$t=HGETTEXT($i)
WNDGETINFO($i,$x,$y,$w,$h)
LOGWRITE($i," ",$x," ",$y," ",$w," ",$h," ",$t)
END_SUB
SUB(w)//
$i=WNDFIND("VipIP")
l($i)
$i=WNDFIND("VipIP",1)
l($i)
$i=WNDFIND("VipIP Серфинг  v.8.6.11")
l($i)
$i=WNDFIND("VipIP Серфинг  v.8.6.11",1)
l($i)
END_SUB
w()
но на выходе получаю HWND другого окна (красная стрелка) с похожим текстом в заголовке, и которое вообще непонятно где? Привязку по координатам (HGET) пока вообще не рассматриваю. Хочется находить HWND окна (приложение) по заголовку, чтобы затем определив координаты и размер этого окна, в дальнейшем с помощью GETSCREEN и IF_PICTURE_IN получать состояние только в пространстве окна, а не всего рабочего стола. В идеале конечно хотелось бы ещё и научиться ловить весь текст целиком (все строки) внутри рамки:

чтобы затем анализировать его (текст) программно. Вот только с этим пока у меня ещё большая неясность. HGETTEXT-ом и простеньким изучателем:
Code: [Select]
$w=25
WHILE(1=1)
$i=HGET($_xmouse,$_ymouse)
IF($b!$i)
$b=$i
l($i)
END_IF
WAITMS($w)
END_CYC
удаётся поймать только символы: "Категория:" - из заголовка рамки.

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Re: Привязка к окну
« Reply #2 on: January 02, 2018, 07:19:04 AM »
Идем пер идем, всё же в чем смысл привязки и какова окончательная цель скрипта? Если нужен текст, может его лучше скопировать просто оттуда или распознать ОКРом?

Да, и скину ещё раз тему от Драмчега! Для тех, кто не в курсах)

ПС. А почему не сделать поиск HWND через координат из HGET? Нужно просто сперва запустить главное окошко кликера (на нем пишется инфа об окнах, когда наводишь мышку на другие проги). Если поводить мышью над нужным текстом, и окажется, что в кликере HWND по наведении с текста на заголовок программы, то очевидно что текст находится в дополнительном скрытом поле, и тогда есть смысл искать через скрипт это скрытое поле. А потом сделать HGET с фиксированной координатой со смещением от нулевых точек окна, и оно постоянно будет в лог выдавать найденный текст по нужной координате. Ну накрайняк, если скрытое поле по HWND не найдётся, можно поискать здесь тему вроде  "Кликер и полезные проги к нему", там встречал какой-то эксплорер помнится и вот он хорошо умеет разлагать интерфейс окон на запчасти и показывать их содержимое, ещё им попытаться.
« Last Edit: January 02, 2018, 07:59:20 AM by Cleoss »

i7330

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
Re: Привязка к окну
« Reply #3 on: January 02, 2018, 08:12:59 AM »
в чем смысл привязки и какова окончательная цель скрипта?
1) в чем смысл привязки - а) программно определить пространство (x,y,w,h) окна, которое будет затем многократно помещатья в буфер программы GETSCREEN-ном, б) хочется чтобы по итогу вся эта конструкция фурычила фоном, в) всесторонне (в процессе экспериментов и решения этой задачи) изучитить безграничные возможности Clickermann-на ;)
2) какова окончательная цель скрипта - гм.. сударь, ответ на этот и многие другие вопросы (мне кажется) вполне себе прослеживаются в пп. а-в пункта 1 - не находите? Но всё же я отвечу: окончательная цель - всестореннее изучение мною свойств, методов и возможностей Clickermann-на
:)


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

встречал какой-то эксплорер помнится и вот он хорошо умеет разлагать интерфейс окон на запчасти и показывать их содержимое
- часом не это:

« Last Edit: January 02, 2018, 08:35:25 AM by i7330 »

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Re: Привязка к окну
« Reply #4 on: January 02, 2018, 08:26:29 AM »
а) программно определить пространство (x,y,w,h) окна, которое будет затем многократно помещатья в буфер программы GETSCREEN-ном, б) хочется чтобы по итогу вся эта конструкция фурычила фоном

Эмм, так GETSCREEN-ном или HGETTEXT-кстом? Так а чего сейчас не хватает в скрипте, чтоб он в фоне работал? Ну, самое первое, подозреваю, чего -- задержки хотя б в секунду. Разве нужно каждые несколько миллисекунд обновлять инфу из программы и грузить ею лог?

Мне просто становится немного не по себе от "программно определить пространство окна")) Это как? Имеется ввиду задать координаты области окна?
« Last Edit: January 02, 2018, 08:31:09 AM by Cleoss »

i7330

  • Зашел в гости
  • *
  • Posts: 19
    • View Profile
Re: Привязка к окну
« Reply #5 on: January 02, 2018, 08:52:13 AM »
немного не по себе от "программно определить пространство окна")) Это как?
- это.. у первых строках скрипта, однозначно зная, что приложение с которым интегрируется Clickermann содержит в title буквы, скажем "Блокнот", - делаем следующее:

Code: (Clickermann) [Select]
$i=WNDFIND("Блокнот")
// как-то здесь убеждаемся в том, что это правильный "Блокнот" (если необходимо)
WNDGETINFO($i,$x,$y,$w,$h)
// вуаля! в $x,$y,$w,$h - искомое программно определить пространство окна (с)
// немного математики:
$x1=$x
$y1=$y
$x2=$w+$y
$y2=$h+$y// и похлёбка  для
GETSCREEN ([x1, y1, x2, y2])//-на, который
// делает снимок экрана и помещает его в буфер анализа программы
// Параметры
// x1, y1, x2, y2 - параметры, описывающие область экрана; необязательны - готова
// моем руки, рассаживаемся... кушаем ;)
« Last Edit: January 02, 2018, 08:57:12 AM by i7330 »