<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7784&amp;type=atom" />
	<updated>2012-11-19T15:55:52Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7784</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65823#p65823" />
			<content type="html"><![CDATA[<p>Все-таки не совсем понятен твой поток мыслей, попробую угадать. В первоначальный скрипт внесены изменения, начало и конец новых блоков отмечены при помощи <strong>&quot;============&quot;</strong><br />В первом блоке цикл loop{} ждет появление где-то пикселя, при его появлении нажимает&nbsp; на ЛКМ несколько раз (координаты подбирать самому) и переходит к чтению с экрана и нажатию клавиш Up, Down и т.д.<br />Если не нужно бесконечное ожидание пикселя, а сразу переход к проверке при его отсутствии, то строки 13 и 23 ( &quot;loop {&quot; и &quot;}&quot; )&nbsp; нужно убрать.<br />После каждого прохода по клавишам с их нажатием происходит проверка на появление окна (CheckWindow), для этого нужно вырезать часть окна, сохранить в picture.bmp и проверять его появление.<br />При нахождении оно закрывается и скрипт перезапускается с начала.<br />Если окна нет, происходит проверка пикселя (другого?), и щелчки ЛКМ по новым координатам. </p><div class="codebox"><pre><code>#NoEnv
CoordMode, Pixel
CoordMode, Mouse
SetWorkingDir , D:\img\buttons\ ; директория с изображениями кнопок
Step := 40
X0 := 340 ; X координата левого верхнего угла
Y0 := 330 ; Y координата левого верхнего угла
Pos := 0
KeysList := [&quot;Left&quot;, &quot;Right&quot;, &quot;Down&quot;, &quot;Up&quot;, &quot;K&quot;, &quot;J&quot;]
loop { ; основной внешний цикл

; ================================================================================
   loop {  ; ждем появления 1 пикселя, чтоб где-то покликать
      PixelGetColor, Color, 100, 200, RGB ; Поставить свои координаты Х и Y пикселя
      if (Color = 0xFFFFFF) ; найден нужный (белый) цвет - поставить свой
	  {
	     Click 0, 0 ; Клик по координатам на экране для запуска, подобрать из PrintScreen`a
		 click 0, 1 ; Другие координаты
		 ; Еще клики, по необходимости
		 break
	  }
	  sleep 1000
   }
; ================================================================================
   
   loop {
   loop 6 {
      ImageSearch,,, X0+step*Pos, Y0, X0+step*(Pos+1), Y0+Step, % &quot;*3 &quot; KeysList[A_index] &quot;.bmp&quot;
      if !ErrorLevel {
        Send % &quot;{&quot; KeysList[A_index] &quot;}&quot;
        sleep 1000
      }
    }
   Pos := Pos &lt; 6 ? Pos+1 : 0
   sleep 100

; ================================================================================
; Проверяем появление 2 пикселя, после нажатий на клавиши
   Gosub CheckWindow ; проверка на появление окна
   PixelGetColor, Color, 100, 200, RGB ; Поставить свои координаты Х и Y пикселя
   if (Color = 0xFFFFFF) ; найден нужный (белый) цвет - поставить свой
   {
	  Click 0, 0 ; Клик по координатам на экране для запуска, подобрать из PrintScreen`a
	  click 0, 1 ; Другие координаты
	  ; Еще клики, по необходимости
	  break
   }
   }
; ================================================================================
}

; ================================================================================
CheckWindow:
   ImageSearch,,, X0, Y0, X1, Y1, picture.bmp
   if !ErrorLevel ; Окно найдено
   {
      Click 900, 500 ; Кликнуть мышкой по кнопке закрытия окна - координаты подобрать свои
	  Reload ; перезапуск скрипта
   }
Return
; ================================================================================

#F12:: ExitApp ; Win+F12 - выход</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2012-11-19T15:55:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65823#p65823</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65816#p65816" />
			<content type="html"><![CDATA[<p><span style="color: #008800"><strong>Jimm24051983</strong>, не нужно бессмысленно цитировать предыдущий пост целиком. Пользуйся кнопкой &quot;Ответить&quot;.</span></p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2012-11-19T15:25:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65816#p65816</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65809#p65809" />
			<content type="html"><![CDATA[<p>В общем да, если появился пиксель на экране то надо закончить проверку клавиш в активном окне. И запустить скрипт запуска тоесть, этот скрипт это цикл в томже скрипте но там нужно по нескольким координатам двигать и кликать мышкой чтобы запустить процесс проверки клавиш. После того как цикл изображений клавиш заканчивается выскакивает окно которое нужно закрыть и опять вернутся к процессу проверки пикселя и запуска цикла движений и нажатии мышкой для запуска проверки. Начать цикл скрипта нужно тоже с проверки пикселя&nbsp; потом проверку клавиша, если появится окно с изображением в другой части экрана то закрыть это окно и вернутся в начало скрипта.</p>]]></content>
			<author>
				<name><![CDATA[Jimm24051983]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28774</uri>
			</author>
			<updated>2012-11-19T14:38:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65809#p65809</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65807#p65807" />
			<content type="html"><![CDATA[<p>Написал на почту, адрес netb?????@yandex.ru<br /></p><div class="quotebox"><blockquote><p>Еще как сделать так, чтобы проверка скрипта была,&nbsp; если в определенном месте экрана появится еще картинка то закрыть это окно и идти к процессу запуска скрипта то есть выполнить ряд движении и выделении мышкой</p></blockquote></div><p>Правильно я понял - работают 2 скрипта, и один из них по некоторому условию запускает другой? Скорее всего, можно обойтись одним скриптом, если они предназначены для одной задачи.<br />Если проверка идет в фоне во время основной работы цикла, то можно организовать проверку по таймеру. Непонятно, зачем &quot;выполнить ряд движении и выделении мышкой&quot;, если для запуска cуществуeт команда <strong>Run</strong><br /></p><div class="codebox"><pre><code>; Начало скрипта
SetTimer, CheckWindow, 1000 ; проверка с интервалом 1сек
; ...
; Основной код
; ...

CheckWindow:
   ImageSearch,,, X0, Y0, X1, Y1, picture.bmp
   if !ErrorLevel
   {
      Click 900, 500 ; Кликнуть мышкой по кнопке закрытия окна - координаты подобрать свои
      Run, МойСкрипт.ahk
      }
Return</code></pre></div><p>Если окно стандартное и Window Spy может определить его <em>уникальные</em> заголовок и класс, то процедура проверки будет примерно такой<br /></p><div class="codebox"><pre><code>; ...
CheckWindow:
   IfWinExist, ЗаголовокОкна ahk_class КлассОкна
   {
      WinClose
      Run, МойСкрипт.ahk
   }
Return</code></pre></div><div class="quotebox"><blockquote><p>Или написать так, если скрипт бездействует на протяжении минуты то запустить процесс запуска движения мышкой для запуска скрипта с проверкой на кнопки.</p></blockquote></div><p>Как понять &quot;бездействие скрипта&quot;? Определенные действия в нем все равно происходят, только если он не поставлен на паузу. <br />Также непонятно </p><div class="quotebox"><blockquote><p>процесс запуска скрипта должен примерно так выглядеть, если найден пиксель в определенном месте экрана то запустить процесс запуска скрипта</p></blockquote></div><p>То есть появилось окно - закрыли, проверили некий пиксель - запустили скрипт. А если не найден пиксель, просто ждать его появления? Или опять ждать окна и нужный пиксель?<br />Напиши подробней.</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2012-11-19T14:19:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65807#p65807</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65785#p65785" />
			<content type="html"><![CDATA[<p>Скрипт работает заскринил по новой все кнопки как ты написал нужен bmp формат оригинала, напиши мне на почту куда тебе закинуть $. Еще как сделать так, чтобы проверка скрипта была,&nbsp; если в определенном месте экрана появится еще картинка то закрыть это окно и идти к процессу запуска скрипта, процесс запуска скрипта должен примерно так выглядеть, если найден пиксель в определенном месте экрана то запустить процесс запуска скрипта то есть выполнить ряд движении и выделении мышкой чтобы опять вернутся к скрипту с проверкой&nbsp; кнопок. Или написать так, если скрипт бездействует на протяжении минуты то запустить процесс запуска движения мышкой для запуска скрипта с проверкой на кнопки.</p>]]></content>
			<author>
				<name><![CDATA[Jimm24051983]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28774</uri>
			</author>
			<updated>2012-11-19T08:16:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65785#p65785</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65709#p65709" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Вот эти координаты как вычислить</p></blockquote></div><p>В момент появления панели сделать PrintScreen, вставить в любой графический редактор и посмотреть координаты. Абсолютная точность не требуется, плюс-минус несколько точек не влияют. </p><div class="quotebox"><blockquote><p>панель достаточно быстро исчезает и нужно нажать все клавиши до исчезновения панели.</p></blockquote></div><p>Насколько быстро? Тогда зачем задержка в 1 секунду между нажатиями? Можно сделать и поменьше.</p><div class="quotebox"><blockquote><p>Можно ли задать координаты поиска по изображению в диапазоне от верхнего левого угла до нижнего правого угла?</p></blockquote></div><p>Уменьшение области поиска сделано как раз для ускорения работы скрипта - он не ищет изображение там, где его заведомо нет.</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2012-11-17T15:52:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65709#p65709</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65708#p65708" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Непонятно, почему клавиша J расположена на отдельной панели? Если есть еще одна панель, то для нее нужно добавить дополнительную проверку по имеющемуся образцу.<br />Если ImageSearch не будет находить нужных изображений, то возможны следующие причины:<br />- Координаты X0 и/или Y0 найдены неверно;<br />- сохраненные фрагменты изображений кнопок не соответствуют экранным. Это очень вероятно, так как в посте №1 изображение в формате JPG, и при его создании 100% точности с оригиналом не получится.<br />&nbsp; Для совпадения нужно с оригинального снимка экрана вырезать фрагменты 8x8 и сохранять их в формате BMP</p></blockquote></div><p>нет панелька одна просто клавища J отдельно потому что ее не было в 1 цикле нажатии.&nbsp; вопрос возникает <br />X0 := 340 ; X координата левого верхнего угла<br />Y0 := 330 ; Y координата левого верхнего угла</p><p>Вот эти координаты как вычислить поскольку панель достаточно быстро исчезает и нужно нажать все клавиши до исчезновения панели. при снимке с экрана както можно вычислить координаты панели или же непосредственно нужно делать в открытом окне в момент действия. Можно ли задать координаты поиска по изображению в диапазоне от верхнего левого угла до нижнего правого угла?<br />ImageSearch, Px, Py, 425, 744, 856, 746, KeysList[A_index], 0, Fast ;</p>]]></content>
			<author>
				<name><![CDATA[Jimm24051983]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28774</uri>
			</author>
			<updated>2012-11-17T15:34:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65708#p65708</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65707#p65707" />
			<content type="html"><![CDATA[<p>Вот скрипт, работающий с картинкой, взятой из поста №1<br />Он находит и нажимает 6 клавиш, изображения которых находятся на верхней панели. Координаты начала области для поиска (показано кружком) хранятся в переменных X0 и Y0, отсчитываются верхнего левого угла всего экрана.<br />Для поиска взяты участки изображения размером 8х8 пикселей, что более чем достаточно. Сохраненные фрагменты записаны в файлы Down.bmp, Up.bmp и т.д. для каждой клавиши.</p><div class="codebox"><pre><code>#NoEnv
CoordMode, Pixel
SetWorkingDir , D:\img\buttons\ ; директория с изображениями кнопок
Step := 40
X0 := 340 ; X координата левого верхнего угла
Y0 := 330 ; Y координата левого верхнего угла
Pos := 0
KeysList := [&quot;Left&quot;, &quot;Right&quot;, &quot;Down&quot;, &quot;Up&quot;, &quot;K&quot;, &quot;J&quot;]
loop {
   loop 6 {
      ImageSearch,,, X0+step*Pos, Y0, X0+step*(Pos+1), Y0+Step, % &quot;*3 &quot; KeysList[A_index] &quot;.bmp&quot;
	  if !ErrorLevel {
	    Send % &quot;{&quot; KeysList[A_index] &quot;}&quot;
		sleep 1000
      }
	}
   Pos := Pos &lt; 6 ? Pos+1 : 0
   sleep 100  	
}

#F12:: ExitApp ; Win+F12 - выход</code></pre></div><p>Фрагменты изображений:<br /><a href="http://zalil.ru/33970825">http://zalil.ru/33970825</a></p><p><a href="http://savepic.su/2925088.htm"><span class="postimg"><img src="http://savepic.su/2925088m.png" alt="http://savepic.su/2925088m.png" /></span></a></p><p>Непонятно, почему клавиша J расположена на отдельной панели? Если есть еще одна панель, то для нее нужно добавить дополнительную проверку по имеющемуся образцу.<br />Если ImageSearch не будет находить нужных изображений, то возможны следующие причины:<br />- Координаты X0 и/или Y0 найдены неверно;<br />- сохраненные фрагменты изображений кнопок не соответствуют экранным. Это очень вероятно, так как в посте №1 изображение в формате JPG, и при его создании 100% точности с оригиналом не получится.<br />&nbsp; Для совпадения нужно с оригинального снимка экрана вырезать фрагменты 8x8 и сохранять их в формате BMP</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2012-11-17T10:40:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65707#p65707</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65699#p65699" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Drugoy пишет:</cite><blockquote><p>1. Сделать скриншот каждой из кнопок (6 шт.)<br />2. Использовать ImageSearch. Он как раз работает слева направо.</p></blockquote></div><p>скрин ка я показал уже сделал кнопки то как он будет читать ? пример скрипта напиши я сути не особо улавливаю <br />ImageSearch как должна работать? мне нужно вырезать каждую кнопку в фотошопе чтобы сделать кнопки?<br />pixelsearch понимаю как работает, а с ImageSearch еще не писал скрипта.</p>]]></content>
			<author>
				<name><![CDATA[Jimm24051983]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28774</uri>
			</author>
			<updated>2012-11-17T03:26:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65699#p65699</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65697#p65697" />
			<content type="html"><![CDATA[<p>1. Сделать скриншот каждой из кнопок (6 шт.)<br />2. Использовать ImageSearch. Он как раз работает слева направо.</p>]]></content>
			<author>
				<name><![CDATA[Drugoy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27463</uri>
			</author>
			<updated>2012-11-16T23:23:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65697#p65697</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: последовательность нажатия клавиш по координатам с проверкой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65688#p65688" />
			<content type="html"><![CDATA[<p>Суть такова не знаю как реализовать попробую объяснить со скрином в общем, есть панель где показана последовательность нажатии клавиш <br />тоесть стрелки (влево, вверх, вниз, вправо, клавиша к и j) нужно чтобы скрипт нажимал строго в последовательности указанной в скрине. Проблема в том что клавиши не подсвечены разным цветом, а они при нажатии только изменяют цвет как привязать нажатии не могу додуматься<br />еще соответственно между нажатиями нужна пауза хотябы в секунду. За рабочий скрипт кину 300р.<br /><span class="postimg"><img src="http://s1.ipicture.ru/uploads/20121116/6YJ4tI1k.jpg" alt="http://s1.ipicture.ru/uploads/20121116/6YJ4tI1k.jpg" /></span><br /><span class="postimg"><img src="http://s1.ipicture.ru/uploads/20121116/1UP7SMbu.jpg" alt="http://s1.ipicture.ru/uploads/20121116/1UP7SMbu.jpg" /></span><br />нажатие клавиш всегда рандомное. то есть есть например 10 циклов и в них через разный интервал отображатся разные сочетания клавиш которые нужно нажимать по очередности.<br /></p><div class="quotebox"><blockquote><p><span class="postimg"><img src="http://s1.ipicture.ru/uploads/20121116/U41TUTp4.jpg" alt="http://s1.ipicture.ru/uploads/20121116/U41TUTp4.jpg" /></span><br />так выглядит уже нажатые клавиши кроме последней клавиши К</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[Jimm24051983]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28774</uri>
			</author>
			<updated>2012-11-16T19:43:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65688#p65688</id>
		</entry>
</feed>
