<?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>http://forum.script-coding.com/viewtopic.php?id=12900</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12900&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Чтение строки из памяти».]]></description>
		<lastBuildDate>Sat, 12 Aug 2017 14:55:41 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Чтение строки из памяти]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118175#p118175</link>
			<description><![CDATA[<p><strong>belyankin12</strong>, третий аргумент - количество символов в строке, но не суть. Мне нужно не эту функцию использовать, а получить dwAddress так, чтобы это работало.</p>]]></description>
			<author><![CDATA[null@example.com (Drygok)]]></author>
			<pubDate>Sat, 12 Aug 2017 14:55:41 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118175#p118175</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Чтение строки из памяти]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118162#p118162</link>
			<description><![CDATA[<p>А.. вот в чем дело. Скорее всего у тебя будет так: readString(hGTA, dwAddress + 122EF8, какое-то число). Я не представляю просто что нужно указывать третьим аргументом..</p>]]></description>
			<author><![CDATA[null@example.com (belyankin12)]]></author>
			<pubDate>Fri, 11 Aug 2017 18:55:02 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118162#p118162</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Чтение строки из памяти]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118153#p118153</link>
			<description><![CDATA[<div class="quotebox"><cite>belyankin12 пишет:</cite><blockquote><p>Какую строку тебе необходимо получить? Сейчас есть функции для почти всех возможных диалогов. В твоем же UDF они есть наверняка.</p></blockquote></div><p>Последняя введенная игроком команда. В том то и дело, что это не SAMP, a CRMP, и тут не работают никакие функции, использующие модуль san_andreas_multiplayer.dll (samp.dll из samp). Чтобы работали хотя бы функции, связанные с самой ГТА помучаться пришлось, а тут вообще.</p>]]></description>
			<author><![CDATA[null@example.com (Drygok)]]></author>
			<pubDate>Fri, 11 Aug 2017 17:26:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118153#p118153</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Чтение строки из памяти]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118130#p118130</link>
			<description><![CDATA[<p>Какую строку тебе необходимо получить? Сейчас есть функции для почти всех возможных диалогов. В твоем же UDF они есть наверняка.</p>]]></description>
			<author><![CDATA[null@example.com (belyankin12)]]></author>
			<pubDate>Fri, 11 Aug 2017 13:09:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118130#p118130</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Чтение строки из памяти]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118129#p118129</link>
			<description><![CDATA[<p>Здравствуйте! Опять мне нужна помощь (да-да). В чем дело: есть у меня процесс (grand_theft_auto_san_andreas.dll) - сама игра. Она же использует файл (san_andreas_multiplayer.dll). В диспетчере только процесс. Используя CheatEngine, я нашел статический адрес строки (san_andreas_multiplayer.dll+122EF8), но вот как прочитать это из процесса? Или файл - и есть адрес, а 122EF8 -- указатель?</p><p>В общем, ничего не понятно. Если читать прямо так строку через AHK -- возвращает ошибку, естественно. Буду благодарен за готовый код.</p><p>Читаю строку так.</p><div class="codebox"><pre><code>readString(hProcess, dwAddress, dwLen) {
    if(!hProcess) {
        ErrorLevel := ERROR_INVALID_HANDLE
        return 0
    }
    
    VarSetCapacity(sRead, dwLen)
    dwRet := DllCall(    &quot;ReadProcessMemory&quot;
                        , &quot;UInt&quot;, hProcess
                        , &quot;UInt&quot;, dwAddress
                        , &quot;Str&quot;, sRead
                        , &quot;UInt&quot;, dwLen
                        , &quot;UInt*&quot;, 0
                        , &quot;UInt&quot;)
    if(dwRet == 0) {
        ErrorLevel := ERROR_READ_MEMORY
        return 0
    }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Drygok)]]></author>
			<pubDate>Fri, 11 Aug 2017 11:53:57 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118129#p118129</guid>
		</item>
	</channel>
</rss>
