<?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>https://forum.script-coding.com/viewtopic.php?id=13398</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13398&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Проверка и изменение масштаба и разверстки».]]></description>
		<lastBuildDate>Fri, 26 Jan 2018 17:35:20 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123405#p123405</link>
			<description><![CDATA[<p>А зачем пользователю вручную после вашего скрипта что-то изменять?<br />Пусть ваш скрипт этим и занимается.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 26 Jan 2018 17:35:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123405#p123405</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123394#p123394</link>
			<description><![CDATA[<p><strong>Malcev</strong>, в принципе разобрался, нужно было отметить флажок Win8DpiScaling разрешающий установить пользовательское масштабирование.<br /></p><div class="codebox"><pre><code>SetWindowsSettings()
SetWindowsSettings() {
	RegRead, DPI_value, HKEY_CURRENT_USER, Control Panel\Desktop\WindowMetrics, AppliedDPI
	If (DPI_value != &quot;120&quot;) {
		MsgBox 0x40024, % &quot;Change Windows Scale?&quot;, % &quot;Your current Windows UI Scale is &quot; DPI_value//24*25 &quot;. If you do not change it to 125`% scripts will not work. Do you want me to do this for you now?&quot;
		IfMsgBox Yes, {
			RegWrite, REG_DWORD, HKEY_CURRENT_USER\Control Panel\Desktop, Win8DpiScaling, 1
			RegWrite, REG_DWORD, HKEY_CURRENT_USER\Control Panel\Desktop, LogPixels, 120
			RegWrite, REG_DWORD, HKEY_CURRENT_USER, Control Panel\Desktop\WindowMetrics, AppliedDPI, 120
			DllCall(&quot;ExitWindowsEx&quot;)
			Reload
		} Else IfMsgBox No, {
			ExitApp
		}	
	}
}</code></pre></div><p>Но возникает следующая проблема <a href="http://prntscr.com/i5xjik">http://prntscr.com/i5xjik</a>. Скрипт этим флажком пользователю потом вручную не дает менять из выпадающего списка масштабирование, только ручной ввод. Если после всех изменений записать в реестр Win8DpiScaling в 0, то все настройки слетают <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> Это можно как-то убрать?</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Fri, 26 Jan 2018 14:39:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123394#p123394</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123386#p123386</link>
			<description><![CDATA[<p><strong>Странникх</strong>, я же вам ссылку привёл.<br />Не вижу, чтоб вы с ней ознакомились.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 26 Jan 2018 07:52:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123386#p123386</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123385#p123385</link>
			<description><![CDATA[<div class="codebox"><pre><code>SetWindowsSettings()
SetWindowsSettings() {
	RegRead, DPI_value, HKEY_CURRENT_USER, Control Panel\Desktop\WindowMetrics, AppliedDPI
	If (DPI_value != &quot;120&quot;) {
		MsgBox 0x40024, % &quot;Change Windows Scale?&quot;, % &quot;Your current Windows UI Scale is &quot; DPI_value//24*25 &quot;. If you do not change it to 125`% scripts will not work. Do you want me to do this for you now?&quot;
		IfMsgBox Yes, {
			RegWrite, REG_SZ, HKEY_CURRENT_USER, Control Panel\Desktop\WindowMetrics, AppliedDPI, 120
			DllCall(&quot;ExitWindowsEx&quot;)
			Reload
		} Else IfMsgBox No, {
			ExitApp
		}	
	}
}</code></pre></div><p>Написал код, который должен менять &quot;Масштаб и разметку&quot; в 125% и затем делать выход из системы для применения. Я вижу, что раздел в реестре меняется, но фактического эффекта нет. Что не так? Подскажите умные люди <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Fri, 26 Jan 2018 00:26:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123385#p123385</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123378#p123378</link>
			<description><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Если даже так, надо спрашивать у вашей игры, как она округляет координаты</p></blockquote></div><p>К сожалению, игра действительно не предсказуемо округляет, вывести точную формулу не получится. Придется через реестр менять всем в 100%, так зато надежнее.</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 20:47:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123378#p123378</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123375#p123375</link>
			<description><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Что есть истина и как ее проверить? В любом случае переходите на клиентские координаты, если окно не полноэкранное, удачи</p></blockquote></div><p>Истина - позиция координаты взятая из масштаба 100% без дробного вида в другой опции масштаба. Помогите, подтолкните на решение с дробной координатой )</p><p>Вот поэтому всем пользователям проще установить масштаб в 100%, поскольку нельзя конвертировать формулой координату из 100% масштаба в 125%, появляется дробь.</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 20:06:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123375#p123375</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123373#p123373</link>
			<description><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Как вы себе представляете пиксель по дробной координате?</p></blockquote></div><p>Вот именно что никак, как тогда быть? Я получаю соотношение 1.25 , во столько раз оно больше, и даже на него умножая 10, все равно получается дробное число.</p><p>Есть координаты записанные при настройках &quot;Масштаба и разметки&quot; в 100%, как их конвертировать при другом масштабе?</p><div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>есть в справке по операторам, можете заменить на округление, если вам оно лучше подходит.</p></blockquote></div><p>Я не знаю даст мне округление истинное значение или нет.</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 19:51:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123373#p123373</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123371#p123371</link>
			<description><![CDATA[<div class="codebox"><pre><code>x := 10
MsgBox, % Convert(x)

Convert(coordinate) {
	RegRead, DPI_value, HKEY_CURRENT_USER, Control Panel\Desktop\WindowMetrics, AppliedDPI
	;~ DPI_value = 120
	Return coordinate * DPI_value // 96
}</code></pre></div><p>Как-то странно, если координата у нас 10, то прибавив +25% (если вместо 100%, стоит 125% в &quot;Масштаб и разметка&quot;) получится 12,5, а не 12, или в масштабируемости округление идет с остатка больше 5 ?</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 19:46:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123371#p123371</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123369#p123369</link>
			<description><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>x := b*DisplayScalingRatio + c*WindowClientWidth, если положение не зависит от ширину окна c = 0, если не зависит от масштаба b = 0.</p></blockquote></div><p>Там в процентном соотношении разница. 120 от 96, это +20% а не 25%, если сравнивать между 100% и 125% выбранными значениями. Значит нужно b брать как координату и к ней плюсовать появившийся процент, предварительно его &quot;отформатировав&quot;, то есть если переменная DisplayScalingRatio = 120, то выставить вместо нее 25% процент при условии, что b координата взята из 100%/</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 19:38:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123369#p123369</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123367#p123367</link>
			<description><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Т.е. масштаб в Win 10 изменяется сразу, без завершения сеанса пользователя (перезагрузки)?</p></blockquote></div><p>Точнее с выходом из системы, перезагружать полностью не нужно. Формулу подправлю, сейчас буду дорабатывать.</p><div class="codebox"><pre><code>RegRead, DPI_value, HKEY_LOCAL_MACHINE, Config\0001\Display\Settings, DPILogicalX ; вообще пусто</code></pre></div><p>Только это возвращает пустое значение.</p><div class="codebox"><pre><code>RegRead, DPI_value, HKEY_CURRENT_USER, Control Panel\Desktop\WindowMetrics, AppliedDPI</code></pre></div><p>Вот тут воткнул 125%, вышел и зашел в систему, показал результат 120.</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 19:29:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123367#p123367</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123361#p123361</link>
			<description><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>В случае адаптивного дизайна, когда при смене разрешения/отношения сторон расположение элементов резко изменяется относительно друг друга, координаты будут описываться разными формулами в зависимости от условий.<br />Сюда же относятся минимальные размеры элементов.</p></blockquote></div><p>Да да верно) Вот только можно все упростить, если наши пиксели находятся в левом верхнем углу, от 0,0. В таком случае они меняются только от увеличения &quot;Масштаба и разметки&quot;.<br /></p><div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>x := a + b*DPI_Scale + c*Width, где a, b — целые, а c — действительное число.</p></blockquote></div><div class="codebox"><pre><code>x := x + (DPI_Scale-96) </code></pre></div><p>Тогда код получается такой. Вычитаем 96 поскольку координаты задавались из параметра 100% в &quot;Масштабе и разметки&quot; и плюсуем уже то на сколько сместился увеличением пиксель.<br /></p><div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>За Win 10 точно не скажу, там ввели еще один новый способ масштабирования, проверьте что показывают другие способы определения DPI.</p></blockquote></div><div class="codebox"><pre><code>RegRead, LogPixels, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontDPI, LogPixels ; Одно и то же
RegRead, DPI_value, HKEY_LOCAL_MACHINE, Config\0001\Display\Settings, DPILogicalX ; вообще пусто
</code></pre></div><p>Да, для изменений в реестре данного параметра в Win10 придется выполнить перезагрузку.</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 17:22:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123361#p123361</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123359#p123359</link>
			<description><![CDATA[<p>А вы что хотите еще свое разрешение экрана установить пользователям <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />?<br />Я такую задачу решал один раз, координаты любой точки можно описать формулой:<br />x := a + b*DisplayScalingRatio + c*WindowClientWidth, где a, b — целые, а c — действительное число. Если положение не зависит от ширины окна c = 0, если не зависит от масштаба b = 0.<br />В случае адаптивного дизайна, когда при смене разрешения/отношения сторон расположение элементов резко изменяется относительно друг друга, координаты будут описываться разными формулами в зависимости от условий.<br />Сюда же относятся минимальные размеры элементов.</p>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Thu, 25 Jan 2018 17:03:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123359#p123359</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123358#p123358</link>
			<description><![CDATA[<div class="codebox"><pre><code>RegRead, DPI_value, HKEY_CURRENT_USER, Control Panel\Desktop\WindowMetrics, AppliedDPI</code></pre></div><p>Я так понял из реестра это значение отвечает за &quot;Масштаб и разметку&quot;, но почему-то когда я его меняю все равно показывает значение 96.</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 17:00:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123358#p123358</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123348#p123348</link>
			<description><![CDATA[<p>Масштаб и разметка* не правильно я написал в первом посте.</p><p><strong>stealzy</strong>, Вы такой странный, конечно, как Вы настроите под других если элементы игры не пропорционально увеличению растягиваются по экрану в зависимости от разрешения?</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Thu, 25 Jan 2018 11:11:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123348#p123348</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=123319#p123319</link>
			<description><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Насчет поменять я уже ответил выше.</p></blockquote></div><p>Чтобы менять сначала нужно понять, что у пользователя установлен масштаб и разметка не в 100%.<br /></p><div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Кстати, причем тут разверстка?</p></blockquote></div><p>Не при чем, разверстка не нужна. Мне нужно получить значение вот отсюда <a href="http://prntscr.com/i3z7z9">http://prntscr.com/i3z7z9</a>. А как еще сделать если не из текста, так сразу понятно что требуется.<br /></p><div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Зачем менять системный масштаб из ahk?</p></blockquote></div><p>Если &quot;Изменение размера текста, приложений и других элементов&quot; не такое же как 100% у меня, то у других пользователей (у которых 125%, 150% и т.д.) размеры элементов управления больше и пиксель соответственно не находится поскольку элементы сдвигаются, они по сути становятся в разы больше.</p>]]></description>
			<author><![CDATA[null@example.com (Странникх)]]></author>
			<pubDate>Tue, 23 Jan 2018 15:04:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=123319#p123319</guid>
		</item>
	</channel>
</rss>
