<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: определение завершения набора текста командой SendInput]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=13943</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13943&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: определение завершения набора текста командой SendInput».]]></description>
		<lastBuildDate>Sun, 15 Jul 2018 16:16:34 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: определение завершения набора текста командой SendInput]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=127089#p127089</link>
			<description><![CDATA[<div class="quotebox"><cite>Mik пишет:</cite><blockquote><p>может ли так случиться, что после Send&#039;а BlockInput не отключится?</p></blockquote></div><p>Не знаю, не помню чтобы вообще пользовался.<br /></p><div class="quotebox"><cite>Mik пишет:</cite><blockquote><p>(как вариант &quot;костыля&quot;).</p></blockquote></div><p>Я так делал, а как ещё убедится в правильности ввода. Если инфо извлекается, то это самое надёжное.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 15 Jul 2018 16:16:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=127089#p127089</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: определение завершения набора текста командой SendInput]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=127083#p127083</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong><br />Хм, действительно, остальные команды ждут окончания выполнения простого Send&#039;а. <br />Но при этом, если использовать: </p><div class="codebox"><pre><code>SetKeyDelay, 0</code></pre></div><p>то MsgBox также появляется раньше завершения набора...<br />P.S.: на самом деле использование Send/SendInput продиктовано только тем, что вставка в рабочее окно программы комбинацией Ctrl+V заблокирована на программном уровне - как обойти блокировку без имитации набора не знаю...</p><p>Также минусом Send является необходимость использования команды:<br /></p><div class="codebox"><pre><code>BlockInput, Send</code></pre></div><p>В связи с этим вопрос: может ли так случиться, что после Send&#039;а BlockInput не отключится? (Ведь тогда придется использовать кнопку reset на компе - а это весьма чревато...).</p><div class="quotebox"><blockquote><p>Пробуйте извлечь текст из окна и сравнивать с буфером.</p></blockquote></div><p>Написать функцию, которая будет, допустим, каждые 50 мс сверять количество набранных знаков в окне с количеством знаков в буфере - идея весьма хорошая (как вариант &quot;костыля&quot;). Нужно только подумать теперь как ее реализовать... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Sun, 15 Jul 2018 13:55:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=127083#p127083</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: определение завершения набора текста командой SendInput]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=127077#p127077</link>
			<description><![CDATA[<p>Не знаю, у меня в блокноте MsgBox появляется только после ввода.<br /></p><div class="codebox"><pre><code>1::
	Send {Raw}%clipboard%
	MsgBox 
	return</code></pre></div><p>Пробуйте извлечь текст из окна и сравнивать с буфером.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 15 Jul 2018 12:20:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=127077#p127077</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: определение завершения набора текста командой SendInput]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=127075#p127075</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, вставка SendInput происходит заметно быстрее, поэтому использую его.<br />Замена SendInput на Send описанную проблему не исправляет.</p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Sun, 15 Jul 2018 12:00:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=127075#p127075</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: определение завершения набора текста командой SendInput]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=127072#p127072</link>
			<description><![CDATA[<p>А почему именно SendInput а не Send?<br />Тем более что Send больше похож на имитацию набора.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sun, 15 Jul 2018 11:36:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=127072#p127072</guid>
		</item>
		<item>
			<title><![CDATA[AHK: определение завершения набора текста командой SendInput]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=127063#p127063</link>
			<description><![CDATA[<p>Доброго времени суток!<br />Столкнулся с одной проблемой, которую никак не могу решить (в AHK новичок) - требуется помощь мастеров AHK.<br />В общем, требуется регулярная вставка текста, который содержится в буфере обмена. Причем не простая вставка, а именно имитация набора (для чего использую команду SendInput). <br />Текст может состоять из русских и английских символов различной длины. <br />Программа, в которую вставляется текст из буфера обмена, корректно распознает вставляемые символы <span class="bbu"><strong>только</strong> если раскладка окна переключена на английский язык</span>. При этом 99% времени приходится работать в программе на русской раскладке. В связи с этим переключать окно на английский перед вставкой, а потом обратно, &quot;руками&quot; неудобно. <br />Для решения проблемы использую следующий код:</p><div class="codebox"><pre><code>Home::
SendMessage, 0x50,, 0x4090409,, A ; перед вставкой переключаю активное окно на английский
cpbd = %clipboard%
TimeSleep := (StrLen(cpbd) * 3) ; &quot;костыль&quot; для расчета времени Sleep в зависимости от числа символов в буфере
if TimeSleep &lt;= 50
{
	SendInput {Raw}%clipboard%
	Sleep, 50
} 
else 
{
	SendInput {Raw}%clipboard%
	Sleep, %TimeSleep%
}
SendMessage, 0x50,, 0x4190419,, A ; возвращаю активному окну русский язык
return
</code></pre></div><p>И всё было бы хорошо, если бы не один серьёзный минус: перед отработкой команды, которая возвращает окну русский язык, используется &quot;костыль&quot; в виде команды Sleep.<br />Дело в том, что если в программе работать из локальной сети, то всё ОК, но в последнее время всё чаще приходится работать удаленно - в результате прога регулярно подвисает. И как следствие этого, времени в Sleep&#039;е просто не хватает и на русский окно переключается раньше времени, что приводит к некорректной вставке знаков и английских символов.<br />Увеличивать время в Sleep&#039;е нерационально.</p><p>В связи с этим, возник вопрос: как можно определить, что вставка текста командой SendInput в окно программы закончена (т.е. текст точно полностью успел напечататься)?</p>]]></description>
			<author><![CDATA[null@example.com (Mik)]]></author>
			<pubDate>Sat, 14 Jul 2018 18:21:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=127063#p127063</guid>
		</item>
	</channel>
</rss>
