<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Не разрывается цикл]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10844</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10844&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Не разрывается цикл».]]></description>
		<lastBuildDate>Wed, 05 Aug 2015 17:41:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96267#p96267</link>
			<description><![CDATA[<p><strong>teadrinker</strong>, на будущее учту.</p>]]></description>
			<author><![CDATA[null@example.com (NektoN95)]]></author>
			<pubDate>Wed, 05 Aug 2015 17:41:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96267#p96267</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96266#p96266</link>
			<description><![CDATA[<div class="quotebox"><cite>NektoN95 пишет:</cite><blockquote><p>Ээ..., а какая функция GDI делает снимок?</p></blockquote></div><p>Ээ..., а как этот вопрос связан с названием данной темы? <strong>NektoN95</strong>, одна тема — один вопрос, если возникли другие — создавайте новую.<br /><span style="color: green">Всем читать <a href="http://forum.script-coding.com/rules.html#3.11.">правила</a>.</span></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 05 Aug 2015 12:14:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96266#p96266</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96265#p96265</link>
			<description><![CDATA[<p>Простой пример. <a href="http://forum.script-coding.com/viewtopic.php?id=7741">Как обмениватся сообщениями между скриптами</a>.<br />Более продвинутый вариант.<a href="http://forum.script-coding.com/viewtopic.php?id=10765">Асинхронный запуск скриптов</a>.</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Wed, 05 Aug 2015 11:58:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96265#p96265</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96263#p96263</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Сделай вход-выход, основу скрипта</p></blockquote></div><p>Это безусловно. Собственно, этим я сейчас и занимаюсь)<br /></p><div class="quotebox"><blockquote><p>На форуме были подобные темы, teadrinker недавно выкладывал вариант взаимодействия нескольких скриптов одновременно.</p></blockquote></div><p>А можно ссылочку? Пробовал искать через google (site:script-coding.com/forum/ взаимодействие скриптов), но чёт без толку. Хотя, возможно у меня шаролупие))</p>]]></description>
			<author><![CDATA[null@example.com (NektoN95)]]></author>
			<pubDate>Wed, 05 Aug 2015 11:21:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96263#p96263</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96262#p96262</link>
			<description><![CDATA[<div class="quotebox"><cite>NektoN95 пишет:</cite><blockquote><p>Ээ..., а какая функция GDI делает снимок?</p></blockquote></div><p>GDIP_BitmapFromScreen()<br />Если есть какие-то вопросы по работе с библиотекой, имеется англоязычная <a href="http://winningtank.com/ahk/GDI+_Manual.chm">справка</a> с примерами.<br /></p><div class="quotebox"><blockquote><p>В конце концов, это далеко не окончательная версия скрипта.</p></blockquote></div><p>Это не повод уделять внимание мелочам реализации, оставляя основное &quot;на потом&quot;. Сделай вход-выход, основу скрипта, пока не нагромоздил всяких плюшек, а то потом начинаются вопросы про умирание скрипта через несколько минут работы, утечки памяти и пр.<br /></p><div class="quotebox"><blockquote><p>А кстати, как удалить массив из памяти?</p></blockquote></div><p>Массив удаляется, когда удаляется последняя ссылка на него. (Как обычная переменная).<br /></p><div class="codebox"><pre><code>Имя_массива := &quot;&quot;</code></pre></div><div class="quotebox"><blockquote><p>И да, кстати мне вот тут понадобилось организовать связь между двумя скриптами</p></blockquote></div><p>На форуме были подобные темы, <strong>teadrinker</strong> недавно выкладывал вариант взаимодействия нескольких скриптов одновременно.</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Wed, 05 Aug 2015 11:01:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96262#p96262</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96261#p96261</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Мне тоже так кажется, даже наоборот - цикл с GDIP_GetPixel проиграет, поскольку крутиться он будет силами интерпретатора АНК, в отличие от написанной на С PixelSearch. Впрочем, никто же не мешает ускорить поиск точки в Bitmap при помощи машинных кодов. в <em>Gdip.Ahk</em> есть функция <em>Gdip_PixelateBitmap</em>, там как раз такой подход. Кмк, для поиска точки код будет относительно проще. (Для того, кто пишет на Asm&#039;е).</p></blockquote></div><p>Тут наверное только один <strong>YMP</strong> <a href="http://forum.script-coding.com/viewtopic.php?pid=26592#p26592">пишет</a>. Да и алгоритм наверное проще не придумаешь.</p><p>Как оказалось <a href="http://www.autohotkey.com/board/topic/118284-imagesearch-alternative/">Imagesearch есть</a>, так понял что в функции Gdip_LockedBitsSearch используется машинный код. Аналог PixelSearch не нашёл.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 05 Aug 2015 09:54:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96261#p96261</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96260#p96260</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Причина в том, что с таким названием массива возвращает пустое значение.</p></blockquote></div><p>Вон оно как... Спасибо.<br /></p><div class="quotebox"><blockquote><p>во всех примерах по библиотеке Gdip уборка мусора остается на совести скриптописателя</p></blockquote></div><p>Ну, я как-бе в курсе. В конце концов, это далеко не окончательная версия скрипта.<br /></p><div class="quotebox"><blockquote><p>идея создавать в вызываемой процедуре глобальный массив попахивает авантюрой.</p></blockquote></div><p>Ну, предпологается сравнительно простенький скрипт распознавания текста, который будет следить за игровым чатом. Предпологается что эта функция при появлении нового сообщения будет делать своеобразный снимок фрагмента изображения с новым сообщением (в тот самый массив) . Далее будет происходить его обработка, а после он будет удаляться.&nbsp; Соответственно удобнее создавать его прямо в теле функции. А кстати, как удалить массив из памяти?<br /></p><div class="quotebox"><blockquote><p>снимок экрана делается один раз, дальше обращений к экрану нет.</p></blockquote></div><p>Ээ..., а какая функция GDI делает снимок?</p><p>И да, кстати мне вот тут понадобилось организовать связь между двумя скриптами (к сожалению стабильно они работают только по отдельности). Думаю сделать это через Send\OnMessage, в связи с этим вопрос, как получить идентификатор скрипта, если у него нет окна?</p>]]></description>
			<author><![CDATA[null@example.com (NektoN95)]]></author>
			<pubDate>Wed, 05 Aug 2015 09:21:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96260#p96260</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96253#p96253</link>
			<description><![CDATA[<p>Мне тоже так кажется, даже наоборот - цикл с GDIP_GetPixel проиграет, поскольку крутиться он будет силами интерпретатора АНК, в отличие от написанной на С PixelSearch. Впрочем, никто же не мешает ускорить поиск точки в Bitmap при помощи машинных кодов. в <em>Gdip.Ahk</em> есть функция <em>Gdip_PixelateBitmap</em>, там как раз такой подход. Кмк, для поиска точки код будет относительно проще. (Для того, кто пишет на Asm&#039;е).</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Wed, 05 Aug 2015 00:10:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96253#p96253</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96249#p96249</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>если брать для одиночной точки, то разницы практически не будет</p></blockquote></div><p>А как думаешь, будет прирост скорости если заменить PixelSearch на цикл с GDIP_GetPixel? Предположу что нет, ведь логика и методы наверняка те же.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 04 Aug 2015 23:20:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96249#p96249</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96248#p96248</link>
			<description><![CDATA[<p>Не скажу точную цифру, на офф.форуме фигурировал показатель 3x прироста скорости. Наверное, зависит от способа использования, если брать для одиночной точки, то разницы практически не будет, а если нужно определенную часть экрана занести в массив, тут <em>PixelGetColor</em> безнадежно проиграет.</p><p>Насчет правильности кода из #18 большие сомнения.</p><p>Во-первых, сама идея создавать в вызываемой процедуре глобальный массив попахивает авантюрой. ))<br />Если так уж надо, можно сделать массив в основном коде, все равно по факту в процедуру передается указатель (адрес).</p><p>Во-вторых, не знаю откуда ТС позаимствовал пример, но во всех примерах по библиотеке Gdip уборка мусора остается на совести скриптописателя:<br /></p><div class="codebox"><pre><code>Exit:
GDIP_DisposeImage(pBitMap)
Gdip_Shutdown(pToken)
ExitApp</code></pre></div><p>Но что-то там всё же извлекается, можно проверить на простом примере. Цвета под курсором соответствуют полученным при помощи PixelGetColor, причем на момент запуска скрипта - снимок экрана делается один раз, дальше обращений к экрану нет.<br /></p><div class="codebox"><pre><code>;#include Gdip_All.ahk
CoordMode, Mouse
OnExit, Exit
pToken := GDIP_StartUp()
pBitMap := GDIP_BitmapFromScreen()
Loop {
   MouseGetPos, x, y
   ToolTip % Format(&quot;{:#x}&quot;, GDIP_GetPixel(pbitmap, x, y) &amp; 0xFFFFFF)
   Sleep 10
}
Esc::
Exit:
GDIP_DisposeImage(pBitMap)
Gdip_Shutdown(pToken)
ExitApp
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Tue, 04 Aug 2015 23:02:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96248#p96248</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96243#p96243</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>По большому счету, для больших площадей <em>PixelGetColor</em> мало подходит ввиду очень медленной работы, рекомендую обратить взор в сторону бибилиотеки <em>Gdip</em>.</p></blockquote></div><p>А насколько примерно быстрее, и в 18 посте на этот счёт всё правильно?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 04 Aug 2015 21:28:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96243#p96243</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96236#p96236</link>
			<description><![CDATA[<p>Причина в том, что с <span class="bbu">таким</span> названием массива возвращает пустое значение. Некорректно принимает AHK числовое название объекта, пусть и начинается на &quot;0x..&quot;. Добавь литеры вначале, так работает:<br /></p><div class="codebox"><pre><code>MsgBox % Arr0xff0000[1].MaxIndex()</code></pre></div><p>И в функции везде смени<em>&nbsp; %FndClr%</em> на <em>Arr%FndClr%</em>.<br />Можно просто любой незначащий символ, например <em>$0xff0000[1]</em> или <em>_0xff0000[1]</em>.</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Tue, 04 Aug 2015 18:52:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96236#p96236</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96222#p96222</link>
			<description><![CDATA[<p>Уф, наворотили сорок бочек арестантов. Вам бы попроще что-нибудь написать для начала. Попозже посмотрю.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 04 Aug 2015 14:13:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96222#p96222</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96221#p96221</link>
			<description><![CDATA[<p>Спасибо. Нусс... на этом всё, тему закрывать можно.</p><p>Update: Хотя не, потропился: применял её к массиву - возвращает пустое значение. Вот код:<br /></p><div class="codebox"><pre><code>#NoEnv
#include Gdip_All.ahk
Process Priority,,High 
SetBatchLines -1
pToken := GDIP_StartUp()

RcrdInMssv(23,30,236,37,0xff0000)
MsgBox % 0xff0000[1].MaxIndex()
return

RcrdInMssv(x1,y1,x2,y2,FndClr){
   local x, y, clr
   pBitMap := GDIP_BitmapFromScreen()
   x1--, y1--
   %FndClr% := Object(), y:=y2-y1
   while y {
      x:=x2-x1
      while x {
         clr := GDIP_GetPixel(pbitmap, x1+x, y1+y)
         clr := Format(&quot;{:#x}&quot;, clr &amp; 0xFFFFFF)
         %FndClr%[x, y] := (FndClr = clr), x--
      } y--
   }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (NektoN95)]]></author>
			<pubDate>Tue, 04 Aug 2015 13:18:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96221#p96221</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не разрывается цикл]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96213#p96213</link>
			<description><![CDATA[<div class="codebox"><pre><code>%MssvNm%[1].MaxIndex()</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 04 Aug 2015 10:01:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96213#p96213</guid>
		</item>
	</channel>
</rss>
