<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: MouseClickDrag и позиционирование камеры]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11552&amp;type=atom" />
	<updated>2016-05-04T09:41:37Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11552</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103334#p103334" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>А размер системного шрифта везде одинаков?</p></blockquote></div><p>Ну, по крайней мере на моем ПК и в виртуальной машине одинаковый.</p><p>ПЫ.СЫ. Все, проблема решена. Остается, правда, загадкой, что это было. Понадобилось сменить разрешение в виртуальной машине. Сменил, и все заработало, смещение стало точно таким же. Вернул старое разрешение, и все равно все нормально работает. Уж не знаю, что это за глюк такой был. Остается только ноутбук у знакомого, где не работает так, как нужно, но это уже, по всей видимости, заскоки его машины. Ибо у других все нормально.<br />Большое спасибо. Благодаря Вам не только все заработало, но и стал лучше понимать, что к чему :-)</p>]]></content>
			<author>
				<name><![CDATA[vospa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30538</uri>
			</author>
			<updated>2016-05-04T09:41:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103334#p103334</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103333#p103333" />
			<content type="html"><![CDATA[<p>А размер системного шрифта везде одинаков?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-05-04T09:08:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103333#p103333</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103332#p103332" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Думаю кнопку правую надо чуть погодя отпускать.</p></blockquote></div><p>Да, спасибо большое. Действительно разброс, который в моем варианте наблюдался на некоторых ПК, был из-за этого. Так же, действительно, dpi никак не влияет на величину смещения.<br />Но... целиком справиться с проблемой все равно не получается. По крайней мере на одном ноутбуке (не моем) смещение без разброса, но другое. А еще попробовал в виртуальной машине. Там то же самое. Все работает, разброса нет, но смещение другое. В чем тут дело, пока непонятно. Но скрипт тут уже, скорее всего, ни при чем. Буду, все таки, пытаться пробовать с виртуальной мышью ОС.</p>]]></content>
			<author>
				<name><![CDATA[vospa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30538</uri>
			</author>
			<updated>2016-05-04T08:59:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103332#p103332</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103309#p103309" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>	Sleep 50		; устраняет инертную прокрутку, возможно следует увеличить
	Click Right U</code></pre></div><p>Думаю кнопку правую надо чуть погодя отпускать.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-05-03T18:10:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103309#p103309</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103308#p103308" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>И что мешает использовать мой вариант?</p></blockquote></div><p>Ничто не мешает, спасибо :-) Просто хочу понять, почему мой вариант не срабатывает.</p>]]></content>
			<author>
				<name><![CDATA[vospa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30538</uri>
			</author>
			<updated>2016-05-03T18:05:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103308#p103308</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103307#p103307" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>vospa пишет:</cite><blockquote><p>Я в конец запутался... Ваш вариант, действительно, вообще никаким боком не зависит от dpi</p></blockquote></div><p>И что мешает использовать мой вариант?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-05-03T18:03:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103307#p103307</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103305#p103305" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />Ну, я еще раз попробовал в разных вариациях и на разных ПК. Меняю dpi, меняется и сдвиг. Причем, пропорционально меняется. Я тогда уже и не знаю, в чем тут дело. А с виртуальной мышью я хотел попробовать потому, что она у всех одинаковая, в отличии от физической.<br />Попробовал Ваш код на 2ГИС, что-то не работает. Видно, что на клавиши реагирует, но он сразу менюшку правого клика открывает и карту никуда не желает двигать.<br />ПЫ.СЫ. А, не, это я дурак. Работает. Пошел экспериментировать на разных ПК.<br />ПЫ.ПЫ.СЫ. Я в конец запутался... Ваш вариант, действительно, вообще никаким боком не зависит от dpi. Мой вариант еще как зависит... Причем, именно от dpi, а не от скорости курсора установленной в настройках ОС.</p>]]></content>
			<author>
				<name><![CDATA[vospa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30538</uri>
			</author>
			<updated>2016-05-03T16:33:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103305#p103305</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103299#p103299" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>vospa пишет:</cite><blockquote><p>Но dpi же должно влиять.</p></blockquote></div><p>Например из этой <a href="http://mousingame.blogspot.ru/2014/06/dpi-cpi.html">статьи</a> я такого вывода не сделал.<br /></p><div class="quotebox"><cite>vospa пишет:</cite><blockquote><p>Просто задать некоторую величину смещения относительно пола.<br />И вот тут я и столкнулся с проблемами.&nbsp; Смещение зависит от dpi</p></blockquote></div><p>Мало вероятно, но может от смены dpi, в программе меняется инертная прокрутка, в коде есть комментарий.<br />Я так понял при смещениях на 1 пиксель, dpi ни на что не вляет.<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>2016-05-03T14:13:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103299#p103299</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103297#p103297" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>А почему это понятно?<br />Проверил, dpi мышки никак не влияет на смещение, ведь оно задаётся от точки до точки.</p></blockquote></div><p>Хмм... скорость курсора, да, действительно никак не влияет. Но dpi же должно влиять. Так как расстояние то одинаковое, а вот количество точек на этом отрезке разное. Более того. Я менял dpi мыши (благо на ней 3 разных переключаемых dpi) при использовании описанной мной выше конструкции. И таки смещение было разным.</p><p>Спасибо за пример. Надо переварить и попробовать. Но, боюсь, что на разных dpi тоже смещение может оказаться разным. Хотя, может, я чего-то и недопонимаю. А я пока, как альтернативный вариант, все никак не могу совладать с виртуальной мышкой. Что я делаю не так? Почему виртуальная мышь не видит нажатий клавиш нумлока с использованием Send в скрипте?</p>]]></content>
			<author>
				<name><![CDATA[vospa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30538</uri>
			</author>
			<updated>2016-05-03T13:55:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103297#p103297</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103294#p103294" />
			<content type="html"><![CDATA[<p>Не знаю понял ли я в чём вопрос, в 2ГИС так срабатывает точно, смещает карту ровно наполовину видимой области (3D конечно отключить, для наглядности).<br /></p><div class="codebox"><pre><code>
CoordMode, Mouse

Up::
Down::
Left::
Right::
	BlockInput, MouseMove
	ControlGet, hWnd, HWND, , Grym_MapView1, ahk_exe grym.exe
	WinGetPos, WinX, WinY, WinWidth, WinHeight, ahk_id %hWnd%
	MouseMove, WinX + WinWidth // 2, WinY + WinHeight // 2
	Point := A_ThisHotkey = &quot;Up&quot; ? &quot;0 &quot; -WinHeight // 2
			: A_ThisHotkey = &quot;Down&quot; ? &quot;0 &quot; WinHeight // 2
			: A_ThisHotkey = &quot;Left&quot; ? -WinWidth // 2 &quot; 0&quot;
			: A_ThisHotkey = &quot;Right&quot; ? WinWidth // 2 &quot; 0&quot; : &quot;0 0&quot; 
	SendPlay {Click 0 0 Right D Rel}{Click %Point% Rel}
	Sleep 50		; устраняет инертную прокрутку, возможно следует увеличить
	Click Right U
	MouseMove, WinX + WinWidth // 2, WinY + WinHeight // 2
	BlockInput, MouseMoveOff
	Return
</code></pre></div><div class="quotebox"><cite>vospa пишет:</cite><blockquote><p>Смещение зависит от dpi мышки, это понятно.</p></blockquote></div><p>А почему это понятно?<br />Проверил, dpi мышки никак не влияет на смещение, ведь оно задаётся от точки до точки.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2016-05-03T12:54:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103294#p103294</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: MouseClickDrag и позиционирование камеры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=103292#p103292" />
			<content type="html"><![CDATA[<p>Доброго времени суток всем!<br />Столкнулся я еще с одной проблемой. Даже не знаю, как грамотно изложить суть проблемы. Поэтому попытаюсь &quot;на пальцах&quot;.<br />В некоторых приложениях (играх, к примеру) зажав правую кнопку мыши и двигая ее, можно менять ориентацию камеры. То же самое происходит и в виртуальных 360-панорамах. Моя задача состоит в том, чтобы скрипт автоматически точно сориентировал камеру нужным образом по маркеру в панораме. Я это решил таким образом:</p><div class="codebox"><pre><code>MouseMove, X/2, Y/2  ;Перемещение курсора в центр окна
sleep, 500
MouseClickDrag, Right, X/2, Y/2, X/2, Y/2+200, 100  ;Смещение камеры до упора вниз
sleep, 500
	Loop, 600  ;Цикл дискретного смещения камеры по вертикали
	{
		MouseMove, X/2, Y/2  ;Перемещение курсора в центр окна
		MouseClickDrag, Right, X/2, Y/2, X/2, Y/2-1, 0  ;Дискретное смещение камеры по вертикали вверх
	}
sleep, 500
	Loop, 960  ;Цикл дискретного смещения камеры по горизонтали
	{
		MouseMove, X/2, Y/2  ;Перемещение курсора в центр окна
		MouseClickDrag, Right, X/2, Y/2, X/2+3, Y/2, 0 ;Дискретное смещение камеры по горизонтали вправо
		PixelSearch, MX, MY, X/2-20, 0,  X/2+20, Y/24, %CF%, 2, Fast  ;Поиск точки заданного цвета в заданной области
			if ErrorLevel = 0
				Goto, Block010  ;Переход к блоку зуммирования
	}		</code></pre></div><p>В целях экономии времени и чтобы зрителю не приходилось видеть вращение камеры упертой в пол, или небо, я решил попробовать позиционировать камеру по вертикали без поиска маркера. Просто задать некоторую величину смещения относительно пола.<br />И вот тут я и столкнулся с проблемами.&nbsp; Смещение зависит от dpi мышки, это понятно. Непонятно поведение команды MouseClickDrag, если я пытаюсь смещать камеру не дискретно, а сразу на заданный угол. Скажем, такая команда</p><div class="codebox"><pre><code>MouseClickDrag, Right, X/2, Y/2, X/2, Y/2-600, 0</code></pre></div><p>совсем не эквивалентна такому циклу:</p><div class="codebox"><pre><code>Loop, 600  ;Цикл дискретного смещения камеры по вертикали
	{
		MouseMove, X/2, Y/2  ;Перемещение курсора в центр окна
		MouseClickDrag, Right, X/2, Y/2, X/2, Y/2-1, 0  ;Дискретное смещение камеры по вертикали вверх
	}</code></pre></div><p>Если цикл постоянно точно выводит камеру на нужный угол, то разовое смещение дает непредсказуемый результат. Один раз повернет на один угол, в другой раз на другой.<br />Но так как смещение зависит еще и от dpi мышки, даже работающая на моем ПК конструкция не у каждого пользователя станет работать (хотя у многих и работает). В связи с этим вопрос. Возможно ли осуществить подобные манипуляции как нибудь еще? <br />Я решил попробовать с вируальной мышкой, из центра специальных возможностей в Winows, но напоролся на то, что моих знаний, судя по всему, катастрофически не хватает. Я даже не смог скриптом вызвать этот режим. Плюс, даже вызвав его вручную, виртуальная мышь все равно &quot;не видит&quot; нажатий клавиш нумлока скриптом. Она не переходит в заданные режимы и не перемещает курсор. Я пытался использовать команду send. Но, видимо, тут нужно иначе поступать. А как, не хватает знаний.</p>]]></content>
			<author>
				<name><![CDATA[vospa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30538</uri>
			</author>
			<updated>2016-05-03T12:11:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=103292#p103292</id>
		</entry>
</feed>
