<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Вопрос по A_ScreenWidth]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15354&amp;type=atom" />
	<updated>2020-05-14T03:25:37Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=15354</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139510#p139510" />
			<content type="html"><![CDATA[<p><strong>KusochekDobra</strong><br /><strong>serzh82saratov</strong><br />Спасибо, друзья!<br />Все получилось, оказалось было все просто, нужно было сделать как <strong>serzh82saratov</strong> показал.</p>]]></content>
			<author>
				<name><![CDATA[efremov30ev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40687</uri>
			</author>
			<updated>2020-05-14T03:25:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139510#p139510</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139509#p139509" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
sc29::
	WinGetPos, , , W, H,% prog_window 
	switch W &quot;x&quot; H
	{
		case &quot;2560x1440&quot;: 
			Click 685, 580
			Click 685, 698
			
		case &quot;1920x1080&quot;: 
			Click 369, 415
			Click 369, 530
			
		Default:
			MsgBox нет такого разрешения
	}
	return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2020-05-13T23:14:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139509#p139509</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139508#p139508" />
			<content type="html"><![CDATA[<p>Тогда, возможно сделать всё даже проще. Сценарии AHK могут нажимать на кнопки программ, собранных из компонентов Windows. Примером такой программы может быть &quot;Калькулятор&quot;. Следующий пример запускает калькулятор и через две секунды, с интервалом в одну секунду, нажимает цифровые кнопки от 1 до 0:<br /></p><div class="codebox"><pre><code>
#NoEnv
#SingleInstance, Force
#Persistent

calc_class := &quot;ahk_class CalcFrame&quot;
button_number := 1
buttons := [7, 13, 18, 6, 12, 17, 5, 11, 16, 8]

RunWait, calc.exe

SetTimer, PressButton, -2000
Return

PressButton:
	ControlClick,% &quot;Button&quot; . buttons[ button_number++ ],% calc_class
	if ( button_number &lt;= buttons.Count() )
		SetTimer, PressButton, -1000
	else
		ExitApp
Return
</code></pre></div><p>Дело в том, что такие кнопки тоже считаются своего рода &quot;окнами&quot; и имеют стандартизированные идентификаторы, которые так же можно найти при помощи &quot;Window Spy&quot;. В случае примера выше, это идентификаторы состоящие из слова &quot;Button&quot; и следующей цифры, обозначающей порядковый номер, по счёту добавления в интерфейс. Например, цифра 1 на калькуляторе имеет идентификатор &quot;Button7&quot;, а 2 = &quot;Button13&quot;. Таким образом, <a href="https://www.autohotkey.com/docs/commands/ControlClick.htm">ControlClick</a> может отправлять событие клика таким элементам.</p><p>Проверьте свою программу. Возможно пляски с разрешением вообще не нужны.<br />Иначе, можно попробовать ещё сделать скрин нужного элемента и находить его автоматически при помощи <a href="https://www.autohotkey.com/docs/commands/ImageSearch.htm">ImageSearch</a>.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2020-05-13T21:14:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139508#p139508</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139501#p139501" />
			<content type="html"><![CDATA[<p>Что значит &quot;разрешение окна&quot;?</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2020-05-13T14:25:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139501#p139501</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139492#p139492" />
			<content type="html"><![CDATA[<p><strong>KusochekDobra</strong></p><p>Приветствую!<br />Да, цель макроса нажимать на один и тот же элемент в программе в зависимости от разрешения экрана в котором она запущена. К примеру у меня монитор 2560х1440, но иногда приходится менять разрешение в программе отчего она становится не во весь экран. Автоматически научить макрос реагировать на разрешение окна, к сожалению, так и не выходит.<br />Делал следующие попытки и все равно не помогло:</p><div class="codebox"><pre><code>Gui, Font, ,
Gui, Add, Button, x122 y30 w60 h25 gFunction, Функция
Gui, Show, w205 h170, Window
Gui, Color, 4682B4
return

prog_window := &quot;ahk_class prog&quot;

Function:
Gui, Submit, NoHide
if (WinExist(prog_window)) {
WinGetPos, , , 2560, 1440,% prog_window
z:=1
}
if (WinExist(prog_window)) {
WinGetPos, , , 1920, 1080,% prog_window
z:=2
}
y:=1
return

sc29::
if (y=1 and z=1)
Click 685, 580
Click 685, 698

if (y=1 and z=2)
Click 369, 415
Click 369, 530
return</code></pre></div><div class="codebox"><pre><code>Gui, Font, ,
Gui, Add, Button, x122 y30 w60 h25 gFunction, Функция
Gui, Show, w205 h170, Window
Gui, Color, 4682B4
return

Function:
Gui, Submit, NoHide
y:=1
return

sc29::
if (y=1)
if (WinExist(prog_window)) {
WinGetPos, , , 1920, 1080,% prog_window
Click 685, 580
Click 685, 698
}

if (y=1)
if (WinExist(prog_window)) {
WinGetPos, , , 1920, 1080,% prog_window
Click 369, 415
Click 369, 530
}
return

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[efremov30ev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40687</uri>
			</author>
			<updated>2020-05-13T06:25:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139492#p139492</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139471#p139471" />
			<content type="html"><![CDATA[<p>И Вам, здоровья!<br />В первом посте упоминается:<br /></p><div class="quotebox"><cite>efremov30ev пишет:</cite><blockquote><p>Можно ли как-то добавить проверку разрешения не монитора, а отдельного окна?</p></blockquote></div><p>В последнем примере нет ни намёка на взаимодействие с окном.</p><p>Чтобы не получилось так, что мы говорим о разных вещах, процитирую Вас, как я понял суть вопроса.</p><p>Есть некая программа, которая запускается на разных машинах, от чего окно её пользовательского интерфейса имеет разные размеры при разных разрешениях. Так же, программа может быть не развёрнута на весь экран и находиться в произвольной области рабочего стола. В этой связи возникает сложность взаимодействовать с элементами интерфейса скриптом.</p><p>Если всё так, то обсуждение должно называться иначе, так как название не совсем, или даже совсем не отражает то, с чем у Вас возникли трудности.<br />Или перефразируйте пожалуйста так, чтобы было понятно.</p><p>Если всё же мне не показалось, то для взаимодействия с окнами, всегда требуются их идентификаторы. Узнать идентификатор нужного окна можно кликнув правой кнопкой мыши по иконке(в трее) любого запущенного AHK-сценария и выбрать в контекстном меню &quot;Window Spy&quot;. Появится окошко, в верхней части которого, под &quot;Window Title, Class and Process:&quot; будет расположен блок, содержащий все идентификаторы активного окна. Кликните в любом месте нужного Вам окна и этот блок автоматически заполнится искомыми значениями в порядке:<br />- Заголовок окна.<br />- Класс окна.<br />- Процесс, которому принадлежит окно.<br />- Идентификатор процесса.</p><p>Выберите любую строчку с понравившимся идентификатором и поместите его в переменную сценария. Теперь, чтобы получить какие-либо данные о положении и размере окна, нужно передать имя этой переменной в качестве аргумента соответствующей встроенной функции AHK, работающей с окнами. Приведу пример с браузером Chrome:<br /></p><div class="codebox"><pre><code>#NoEnv
#SingleInstance, Force

chrome_window := &quot;ahk_class Chrome_WidgetWin_1&quot;

; Проверяем существование окна браузера Chrome
if (WinExist(chrome_window)) {
	; Окно найдено. Получаем его координаты и размер
	WinGetPos, x, y, w, h,% chrome_window
	MsgBox,Окно браузера найдено в координатах:`n`tx = %x%`n`ty = %y%`nЕго размеры составляют:`n`tширина = %w%`n`tвысота = %h%
} else {
	MsgBox,16,Ошибочка,Не удалось найти окно браузера Chrome.
}</code></pre></div><p>Попробуйте применить это в своей поделке и приходите вновь, если что-то будет непонятно.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2020-05-12T15:41:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139471#p139471</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139466#p139466" />
			<content type="html"><![CDATA[<p><strong>KusochekDobra</strong><br />Снова здравствуйте!<br />Вот данный код (максимально сократил и упростил для наглядности). Что только не пытался сделать, но все равно возвращаюсь к тому что нужно вручную выбирать параметр в ListBox&#039;e. Все никак не могу научить его самого определять какое разрешение имеет запущенное окно и выполнять в зависимоти от разрешения ту или иную функцию</p><div class="codebox"><pre><code>Gui, Font, ,
Gui, Add, ListBox, x20 y30 w75 h80 vList AltSubmit, 2560x1440|1920x1080
Gui, Add, Button, x122 y30 w60 h25 gFunction, Функция
Gui, Show, w205 h170, Window
Gui, Color, 4682B4
return

Function:
Gui, Submit, NoHide
if List=1
z:=1
if List=2
z:=2
y:=1
return

sc29::
if (y=1 and z=1)
Click 685, 580
sleep, 500
Click 685, 698

if (y=1 and z=2)
Click 369, 415
sleep, 500
Click 369, 530
return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[efremov30ev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40687</uri>
			</author>
			<updated>2020-05-12T12:10:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139466#p139466</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139460#p139460" />
			<content type="html"><![CDATA[<p>Какая у Вас логика &quot;логичная&quot;!<br />Вам приводят пример, bullit-in функционала с описанием из официальных источников, а Вы, не разобравшись, как он работает, делаете смелое предположение, что этого функционала нет, или он не умеет с Вами взаимодействовать.</p><p>Если хотите помощи, приведите пример кода. Как Вы пытались описать свою попытку.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2020-05-12T05:24:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139460#p139460</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139440#p139440" />
			<content type="html"><![CDATA[<p><strong>KusochekDobra</strong></p><p>Перечитал и ru и eng статьи так и не понял как сделать проверку на размер разрешения окна, чтобы запустить то или иное действие. Может быть Ahk не может это сделать?</p>]]></content>
			<author>
				<name><![CDATA[efremov30ev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40687</uri>
			</author>
			<updated>2020-05-11T08:07:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139440#p139440</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139438#p139438" />
			<content type="html"><![CDATA[<p>Если A_ScreenWidth, не вызывает трудностей, то и к названию обсуждения не имеет отношения.</p><p>Выполняйте проверку на <a href="https://www.autohotkey.com/docs/commands/WinExist.htm">существование окна</a> при запуске сценария и если оно существует получаете его <a href="https://www.autohotkey.com/docs/commands/WinGetPos.htm">позицию и размеры</a>, иначе, используете A_ScreenWidth, или вообще — завершаете сценарий с предупреждающим сообщением, что программа, для которой написан сценарий, не запущена и дальнейшая работа сценария не имеет смысла.</p>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2020-05-11T05:24:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139438#p139438</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Вопрос по A_ScreenWidth]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=139435#p139435" />
			<content type="html"><![CDATA[<p>Здравствуйте, форумчане!</p><p>Вопрос следующий:<br />Имею скрипт, который должен исполнять одни и те же действия только по разным координатам в зависимости от разрешения экрана.<br />Иногда приходится меня разрешение программы на меньшее чем разрешение моего монитора (от чего она не на весь экран), а как мы знаем A_ScreenWidth проверяет именно размер монитора.<br />Можно ли как-то добавить проверку разрешения не монитора, а отдельного окна?</p><p>Заранее благодарен за Вашу обратную связь!</p>]]></content>
			<author>
				<name><![CDATA[efremov30ev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40687</uri>
			</author>
			<updated>2020-05-11T02:05:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=139435#p139435</id>
		</entry>
</feed>
