<?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=13398&amp;type=atom" />
	<updated>2018-01-26T17:35:20Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13398</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123405#p123405" />
			<content type="html"><![CDATA[<p>А зачем пользователю вручную после вашего скрипта что-то изменять?<br />Пусть ваш скрипт этим и занимается.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2018-01-26T17:35:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123405#p123405</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123394#p123394" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-26T14:39:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123394#p123394</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123386#p123386" />
			<content type="html"><![CDATA[<p><strong>Странникх</strong>, я же вам ссылку привёл.<br />Не вижу, чтоб вы с ней ознакомились.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2018-01-26T07:52:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123386#p123386</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123385#p123385" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-26T00:26:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123385#p123385</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123378#p123378" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Если даже так, надо спрашивать у вашей игры, как она округляет координаты</p></blockquote></div><p>К сожалению, игра действительно не предсказуемо округляет, вывести точную формулу не получится. Придется через реестр менять всем в 100%, так зато надежнее.</p>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T20:47:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123378#p123378</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123375#p123375" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>Что есть истина и как ее проверить? В любом случае переходите на клиентские координаты, если окно не полноэкранное, удачи</p></blockquote></div><p>Истина - позиция координаты взятая из масштаба 100% без дробного вида в другой опции масштаба. Помогите, подтолкните на решение с дробной координатой )</p><p>Вот поэтому всем пользователям проще установить масштаб в 100%, поскольку нельзя конвертировать формулой координату из 100% масштаба в 125%, появляется дробь.</p>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T20:06:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123375#p123375</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123373#p123373" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T19:51:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123373#p123373</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123371#p123371" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T19:46:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123371#p123371</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123369#p123369" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T19:38:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123369#p123369</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123367#p123367" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T19:29:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123367#p123367</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123361#p123361" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T17:22:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123361#p123361</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123359#p123359" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2018-01-25T17:03:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123359#p123359</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123358#p123358" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T17:00:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123358#p123358</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123348#p123348" />
			<content type="html"><![CDATA[<p>Масштаб и разметка* не правильно я написал в первом посте.</p><p><strong>stealzy</strong>, Вы такой странный, конечно, как Вы настроите под других если элементы игры не пропорционально увеличению растягиваются по экрану в зависимости от разрешения?</p>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-25T11:11:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123348#p123348</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Проверка и изменение масштаба и разверстки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123319#p123319" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Странникх]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30605</uri>
			</author>
			<updated>2018-01-23T15:04:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123319#p123319</id>
		</entry>
</feed>
