<?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=8322&amp;type=atom" />
	<updated>2013-11-16T22:08:32Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8322</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=77371#p77371" />
			<content type="html"><![CDATA[<p>Помогите мне с подобным скриптом.<br />Есть - program.exe<br />Address - main.dll+0x111111<br />значение float - 2,5</p><p>нужен скрипт, который бы переписывал значение по этому адресу <br />обратно на 2,5 если вдруг оно изменилось</p>]]></content>
			<author>
				<name><![CDATA[kozz]]></name>
			</author>
			<updated>2013-11-16T22:08:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=77371#p77371</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72327#p72327" />
			<content type="html"><![CDATA[<div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;OFF</div><div class="fancy_spoiler"><p>Вы при каждой проверке назначаете стартовую позицию &quot;sPos := 1&quot;<br />И потом удивляетесь что: </p><div class="quotebox"><blockquote><p>Он повторяет это действие постоянно, ибо находит</p></blockquote></div><p> туже строку.<br />Эти переменные нужно вынести в автовыполнение:<br /></p><div class="codebox"><pre><code> LogFile = %A_MyDocuments%\chatlog.txt 
 Pattern := &quot;S)(\[\d+:\d+:\d+]) You win!(\R|$)&quot; , sPos := 1
</code></pre></div><p>и ненадо никого удалять. </p><p>Если непоняли про что я, то просто запустите только этот код из ссылки:<br /></p><div class="codebox"><pre><code>
LogFile = d:\chatlog.txt 
Pattern := &quot;S).*(\[\d+:\d+:\d+]) You win!(\R|$)&quot; , sPos := 1

Loop {
    FileRead, Log, *t %LogFile%
    If RegExMatch(Log, Pattern, Match, sPos)
    {
        MsgBox Появилась нужная строка в лог файле.`n`nПоследний тэг: %Match1%
    }
    sPos := StrLen(Log), (sPos = 0) ? sPos := 1 
    Sleep 150
}
</code></pre></div><p>MsgBox появится только при появлении <strong>нового</strong> совпадения в логе.</p></div></div><p>Если у вас есть вопросы по файлу лога задавайте его в соответствующей теме. К адресу памяти лог файл не имеет отношения.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-05-21T18:57:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72327#p72327</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72326#p72326" />
			<content type="html"><![CDATA[<p>Имеется GUI с возможность установки галочки (Check1) и значения времени (Time1). <br />Вот этот &quot;огрызок&quot; когда применяется при установке галочки Check1. При условии, что окно Test есть в процессах + он активен. Делать AND к условиям я не стал, ибо так мне более понятно что куда и откуда.</p>]]></content>
			<author>
				<name><![CDATA[Pr1mera]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30151</uri>
			</author>
			<updated>2013-05-21T18:37:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72326#p72326</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72325#p72325" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Уже решил проблему удалением этого файла после завершения действий.</p></blockquote></div><p>Творческий подход...<br /></p><div class="quotebox"><blockquote><p>А так, выглядело вот так:</p></blockquote></div><p>Совершенно непонятный огрызок кода.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-05-21T18:19:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72325#p72325</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72324#p72324" />
			<content type="html"><![CDATA[<p>Уже решил проблему удалением этого файла после завершения действий. <br />А так, выглядело вот так:<br /></p><div class="codebox"><pre><code>    IfWinExist, Test
    {
        Sleep, 5000
        repeat    ;
            Gui, Submit, NoHide
            Sleep, Time1 * 60 * 1000
            If Check1 = 1
            {
                IfWinActive, Test
                {
                    LogFile = %A_MyDocuments%\chatlog.txt 
                    Pattern := &quot;S)(\[\d+:\d+:\d+]) You win!(\R|$)&quot; , sPos := 1
                    FileRead, Log, *t %LogFile%
                    If RegExMatch(Log, Pattern, Match, sPos)
                    {
                        Действия, действия, действия
                    }
                    sPos := StrLen(Log), (sPos = 0) ? sPos := 1 
                    Sleep 150
                }
                else
                {
                
                }
            }
            else
            {
            
            }
        }
        return
    }
    else
    {
        MsgBox, 16, WARNING, Test.exe Не запущен!, 3
        return
    }</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Pr1mera]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30151</uri>
			</author>
			<updated>2013-05-21T18:09:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72324#p72324</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72320#p72320" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Он повторяет это действие постоянно, ибо находит строку &quot; - Test: You win!&quot;, хотя она находится в самом начале лог-файла. Возможно ли сделать, чтобы скрипт брал в расчет только 10 последних строк (допустим) в файле? Или в следующий раз при проверке начинал после этой строки?</p></blockquote></div><p>Код по ссылке именно так и работает. В каждом цикле проверка начинается с того места где была завершена до этого. Привидите код так как вы его используете.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-05-21T16:56:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72320#p72320</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72319#p72319" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>LogFile = d:\chatlog.txt 
loop {
   If InStr(GetNewLine(LogFile), &quot;Test: You win&quot;)
      MsgBox Совпадение
}

GetNewLine(filename)
{
   static old
   static new
   if !old
   {
      FileGetSize, old, %filename%
      new := old
   }
   while old = new
   {
      sleep 100
      FileGetSize, new, %filename%
   }
   old := new
   Loop, read, %filename%
      if A_LoopReadLine
         last := A_LoopReadLine
   return last
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2013-05-21T16:35:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72319#p72319</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72310#p72310" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Внутри он имеет формат (как пример): <br />[23:51:53] - Test: You win!</p></blockquote></div><p>Полностью готовое решение в данный момент есть и на первой странице, даже поиск ненужен:<br /><a href="http://forum.script-coding.com/viewtopic.php?pid=72144#p72144">AHK: Чтение из лога и вывод сообщения</a><br />Переменную &quot;Pattern&quot;: <br />Pattern := &quot;S).*(\[\d+:\d+:\d+]) Ты продал(\R|$)&quot;<br />Заменить на:<br />Pattern := &quot;S).*(\[\d+:\d+:\d+]) - Test: You win!(\R|$)&quot;<br />и готово.</p></blockquote></div><p>Да, спасибо! Но тут есть проблема. Он повторяет это действие постоянно, ибо находит строку &quot; - Test: You win!&quot;, хотя она находится в самом начале лог-файла. Возможно ли сделать, чтобы скрипт брал в расчет только 10 последних строк (допустим) в файле? Или в следующий раз при проверке начинал после этой строки?</p>]]></content>
			<author>
				<name><![CDATA[Pr1mera]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30151</uri>
			</author>
			<updated>2013-05-21T13:20:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72310#p72310</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72301#p72301" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Внутри он имеет формат (как пример): <br />[23:51:53] - Test: You win!</p></blockquote></div><p>Полностью готовое решение в данный момент есть и на первой странице, даже поиск ненужен:<br /><a href="http://forum.script-coding.com/viewtopic.php?pid=72144#p72144">AHK: Чтение из лога и вывод сообщения</a><br />Переменную &quot;Pattern&quot;: <br />Pattern := &quot;S).*(\[\d+:\d+:\d+]) Ты продал(\R|$)&quot;<br />Заменить на:<br />Pattern := &quot;S).*(\[\d+:\d+:\d+]) - Test: You win!(\R|$)&quot;<br />и готово.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-05-20T22:44:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72301#p72301</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72300#p72300" />
			<content type="html"><![CDATA[<p>Темы с чтением лог-файлов по популярности уступают лишь, пожалуй, автокликерам - поиск тебе в помощь. Например, в <a href="http://forum.script-coding.com/viewtopic.php?id=7477">этой теме</a> пост #13 содержит практически готовое решение.</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2013-05-20T22:35:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72300#p72300</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72299#p72299" />
			<content type="html"><![CDATA[<p>На мое удивление, я полный идиот. Оказывается имеется лог-файл, куда сохраняются все изменения в нужном адресе. <br />И так. Теперь вопрос такой. <br />Имеется файл в &quot;Документах&quot;, пользователи сами будут указывать его адрес в GUI скрипта. <br />Внутри он имеет формат (как пример): </p><div class="codebox"><pre><code>[23:51:53] - Test: You win!</code></pre></div><p>Необходимо сделать считывание текста из этого файла (а его размер и кол-во строк растет со временем работы программы), и выполнение условия: если там имеется фраза &quot;You are lose&quot; то последует опр. действие. Так же проблема в том, что история (сам файл) не перезаписывается, следовательно скрипт будет выполнять действие как только найдет эту фразу в файле (даже если она находится в самом начале). Как сделать действие(условие) скрипта именно на последнюю строку в файле? Может можно сделать проверку последней строки при изменении размера файла?<br />п.с. Между строками в этом лог-файле по пустой строке, после последней существенной строки так же пустая строка (обычный перенос).</p>]]></content>
			<author>
				<name><![CDATA[Pr1mera]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30151</uri>
			</author>
			<updated>2013-05-20T20:23:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72299#p72299</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72290#p72290" />
			<content type="html"><![CDATA[<p>Да нет. Мне тоже надо учиться, поэтому и спросил. Ладно, сейчас буду пытать дальше.</p>]]></content>
			<author>
				<name><![CDATA[Pr1mera]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30151</uri>
			</author>
			<updated>2013-05-20T15:29:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72290#p72290</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72288#p72288" />
			<content type="html"><![CDATA[<p>Понимаю, предлагаете мне разобраться с CE, выяснить что означает такой тип записи и не задавать глупых вопросов <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Это произойдёт, рано или поздно.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2013-05-20T15:11:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72288#p72288</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72287#p72287" />
			<content type="html"><![CDATA[<p>Это взято из CE. Именно по этому адресу находится текст &quot;You are lose&quot;. Как в этом случае получить базовый адрес?</p>]]></content>
			<author>
				<name><![CDATA[Pr1mera]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30151</uri>
			</author>
			<updated>2013-05-20T15:04:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72287#p72287</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Условие по значению адреса в памяти]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=72286#p72286" />
			<content type="html"><![CDATA[<p>Как, по-вашему, следует интерпретировать строку <em>&quot;test1.dll&quot;+00212A24 + 62c8</em>?<br />(Базовый адрес модуля + число = указатель на указатель) + смещение = начало строки?<br />Если так, то базовый адрес dll можно получить с помощью <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms683201%28v=vs.85%29.aspx">GetModuleInformation</a>.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2013-05-20T14:56:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=72286#p72286</id>
		</entry>
</feed>
