<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: проблемы с кодировкой при SendKeys]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6645&amp;type=atom" />
	<updated>2012-01-06T10:33:07Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6645</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: проблемы с кодировкой при SendKeys]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=55341#p55341" />
			<content type="html"><![CDATA[<p>да, все именно так, камень оказался именно в раскладках. при этом, как правильно сказал <strong>YMP</strong>, важно знать в какой раскладке целевое окно. важно заметить, что винда может хранить одно окно в одной раскладке, а другое - во второй.<br />скрипт выполняется в раскладке по умолчанию.<br />проблема решилась привязкой смены раскладки заданной комбинацией клавиш (в моем случае русская сменялась ctrl+1, а английская ctrl+0). таким образом, в какой бы раскладке не находилось целевое окно, мы установим нужную нам раскладку.<br />хорошим толчком была статья td4_robot (ЖЖ), на которую я случайно наткнулся.<br />http://td4-robot.livejournal.com/11584.html</p><p>всем спасибо, тема может быть закрыта.</p>]]></content>
			<author>
				<name><![CDATA[rg81]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27479</uri>
			</author>
			<updated>2012-01-06T10:33:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=55341#p55341</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: проблемы с кодировкой при SendKeys]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=55339#p55339" />
			<content type="html"><![CDATA[<p>Тут играют роль две раскладки: самого скрипта и целевого окна. Скрипт запускается с раскладкой по умолчанию, и, видимо, SendKeys использует её для преобразования букв в нажатия клавиш. Поскольку русских букв нет в английской раскладке, а английских в русской, отсюда и странный результат. Некоторую логику уловить можно — например, буквы типа &amp;#205;, &amp;#221;, &amp;#201;, которых в английской раскладке тоже нет, преобразуются в нажатия клавиш I, Y, E. Что с русскими происходит, не совсем понятно.</p><p>Кроме того, посылаются именно нажатия клавиш, а не буквы, поэтому нажатие клавиши А/Ф отобразится в целевом окне либо как английская буква А, либо как русская Ф, в зависимости от того, на какой язык ввода переключено окно.</p><p>По идее, первую проблему можно обойти, заменяя русские буквы на английские, которые стоят с ними на одной клавише (или английские на русские по той же логике). Но тут надо как-то узнать, какие на какие заменять, т.е. в какой раскладке запустился скрипт. И ещё остаётся вторая проблема — язык ввода целевого окна. Его нужно будет переключать туда-сюда, чтобы он соответствовал языку посылаемого в данный момент текста. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2012-01-06T08:24:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=55339#p55339</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: проблемы с кодировкой при SendKeys]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=55337#p55337" />
			<content type="html"><![CDATA[<p>В смысле проблема в том, что SendKeys некорректно отправляет английские символы, если текущая раскладка клавиатуры русская и наоборот?</p>]]></content>
			<author>
				<name><![CDATA[dsb]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24622</uri>
			</author>
			<updated>2012-01-06T05:43:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=55337#p55337</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: проблемы с кодировкой при SendKeys]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=55334#p55334" />
			<content type="html"><![CDATA[<p><strong>rg81</strong>, проблема старая, известная и, в общем случае, средствами VBScript не очень решаемая. Ваш вывод про раскладки — верен.</p><p>Рекомендую для данных целей перейти на использование AutoIt (если нужна прозрачная работа с Automation), либо на AHK.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-01-05T22:00:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=55334#p55334</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: проблемы с кодировкой при SendKeys]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=55333#p55333" />
			<content type="html"><![CDATA[<p>сейчас исходный файл в 1251.<br />нет привязки к конкретной кодировке : в какой нужно -- в такой и будет.<br />я в прямом смысле слова перебрал все комбинации открытия файла(имеется ввиду 4-й параметр) и русские кодировки.</p><p>есть некий прогресс:<br />скрипт запущен на другом компьютере(ОС win7 на обеих), и нормально работает с русскими символами. НО! когда приходится отправлять латинские -- мы терпим поражение...<br />я связываю это с тем, что на другом компе по умолчанию стоит русская раскладка. <br />у меня же -- английская.</p>]]></content>
			<author>
				<name><![CDATA[rg81]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27479</uri>
			</author>
			<updated>2012-01-05T21:42:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=55333#p55333</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: проблемы с кодировкой при SendKeys]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=55329#p55329" />
			<content type="html"><![CDATA[<p>Так в какой кодировке исходный файл вы знаете?</p>]]></content>
			<author>
				<name><![CDATA[dsb]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24622</uri>
			</author>
			<updated>2012-01-05T20:00:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=55329#p55329</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: проблемы с кодировкой при SendKeys]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=55321#p55321" />
			<content type="html"><![CDATA[<p>доброго времени суток уважаемым знатокам! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>задача следующего рода : <br />1. открыть файл для чтения.<br />2. считать произвольную строку.<br />3. отредактировать строку.<br />4 передать как нажатие клавиш (sendKeys)</p><p>проблема : <br />1. при передаче переменной, вместо текста получаются крякозяблы.</p><p>попытка решения:<br /></p><div class="codebox"><pre><code>Set WshShell = CreateObject(&quot;WScript.Shell&quot;)
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set file = FSO.OpenTextFile(&quot;names.txt&quot;, 1,false,0)

Dim tmp,name,surname

&#039;...

tmp = &quot;&quot;
name = &quot;&quot;
surname = &quot;&quot;
Randomize
for i = 0 to int(9999*rnd)+3 
    file.SkipLine()
next
tmp = file.ReadLine()
name = mid(tmp,1,instr(tmp,&quot;_&quot;)-1)
surname = mid(tmp,instr(tmp,&quot;_&quot;)+1,20)
tmp = &quot;&quot;

msgbox(name &amp; &quot;_!_&quot; &amp; surname) &#039;в сообщении явно показано, что строка считалась, и разделилась как мне нужно.

WScript.Sleep (2000)
WSHShell.SendKeys(name) &#039;в лучших фантазиях получаем просто &quot;00&quot; или &quot;/&quot;. в худших - бред :(
&#039;...</code></pre></div><p>p.s. всяческие извращения с преобразованием кодировки исходного текстового файла, а также переменной не принесли успеха.</p>]]></content>
			<author>
				<name><![CDATA[rg81]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27479</uri>
			</author>
			<updated>2012-01-05T14:30:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=55321#p55321</id>
		</entry>
</feed>
