<?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=8213&amp;type=atom" />
	<updated>2013-04-06T17:18:23Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8213</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определенное выполнение действий при зажатой клавише]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=71117#p71117" />
			<content type="html"><![CDATA[<p>Спасибо огромное работает <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Dworkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27052</uri>
			</author>
			<updated>2013-04-06T17:18:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=71117#p71117</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определенное выполнение действий при зажатой клавише]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=71116#p71116" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>processName := &quot;процес.exe&quot;
Address := 0xB6EC2E

vk58::
    ProcessWriteMemory(0, Address, processName, &quot;Char&quot;) ; включено
    KeyWait vk58
    ProcessWriteMemory(1, Address, processName, &quot;Char&quot;) ; выключено
    return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2013-04-06T15:22:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=71116#p71116</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определенное выполнение действий при зажатой клавише]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=71115#p71115" />
			<content type="html"><![CDATA[<p>Лучше KeyWait использовать, т.е. ожидать отпускания клавиши.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2013-04-06T13:52:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=71115#p71115</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Определенное выполнение действий при зажатой клавише]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=71114#p71114" />
			<content type="html"><![CDATA[<p>Здравствуйте. Пытаюсь сделать скрипт что бы при зажатой клавише например vk58 (X) в адресе памяти записывался 0 байт то есть включено, а при отжатой X в адресе памяти записывалось значение = 1 байт то есть выключено.<br />Адрес куда вписывать значение = 0xB6EC2E.<br />Значение вписывать в byte то есть Char 1 - выкл, 0 - вкл.</p><div class="codebox"><pre><code>processName := &quot;процес.exe&quot;
Address := 0xB6EC2E

vk58::
    Loop {
        ProcessWriteMemory(0, baseAddressPointer, processName, &quot;Char&quot;) ; включено
        If(GetKeyState(&quot;vk58&quot;, &quot;P&quot;)=0)
            ProcessWriteMemory(1, baseAddressPointer, processName, &quot;Char&quot;) ; выключено
    }

ProcessWriteMemory(data, address, processIDorName, type := &quot;Int&quot;, numBytes := 4) {
    VarSetCapacity(buf, numBytes, 0)
    NumPut(data, buf, 0, type)

    Process Exist, %processIDorName%
    if !processID := ErrorLevel
        throw Exception(&quot;Invalid process name or process ID:`n`n&quot;&quot;&quot; . processIDorName . 

&quot;&quot;&quot;&quot;)

    if !processHandle := DllCall(&quot;OpenProcess&quot;, &quot;Int&quot;, 40, &quot;UInt&quot;, 0, &quot;UInt&quot;, processID, 

&quot;Ptr&quot;)
        throw Exception(&quot;Failed to open process.`n`nError code:`t&quot; . A_LastError)

    result := DllCall(&quot;WriteProcessMemory&quot;, &quot;Ptr&quot;, processHandle, &quot;Ptr&quot;, address, &quot;Ptr&quot;, 

&amp;buf, &quot;Ptr&quot;, numBytes, &quot;UInt&quot;, 0, &quot;UInt&quot;)

    if !DllCall(&quot;CloseHandle&quot;, &quot;Ptr&quot;, processHandle, &quot;UInt&quot;) &amp;&amp; !result
        throw Exception(&quot;Failed to close process handle.`n`nError code:`t&quot; . A_LastError)

    if !result
        throw Exception(&quot;Failed to write process memory.`n`nError code:`t&quot; . A_LastError)

    return result
}</code></pre></div><p>Когда зажимаю X то нормально работает, но когда я отжимаю X то видно что оно то врубается то вырубается.<br />Можно как-то сделать что бы, когда я зажал клавишу X он вписал в память 1 раз 0 байт - включено, а когда я отжал X - вписал 1 байт - выключено?</p>]]></content>
			<author>
				<name><![CDATA[Dworkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27052</uri>
			</author>
			<updated>2013-04-06T13:47:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=71114#p71114</id>
		</entry>
</feed>
