<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Вопрос по A_ScreenWidth]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=15354</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15354&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Вопрос по A_ScreenWidth».]]></description>
		<lastBuildDate>Thu, 14 May 2020 03:25:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139510#p139510</link>
			<description><![CDATA[<p><strong>KusochekDobra</strong><br /><strong>serzh82saratov</strong><br />Спасибо, друзья!<br />Все получилось, оказалось было все просто, нужно было сделать как <strong>serzh82saratov</strong> показал.</p>]]></description>
			<author><![CDATA[null@example.com (efremov30ev)]]></author>
			<pubDate>Thu, 14 May 2020 03:25:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139510#p139510</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139509#p139509</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 13 May 2020 23:14:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139509#p139509</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139508#p139508</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 13 May 2020 21:14:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139508#p139508</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139501#p139501</link>
			<description><![CDATA[<p>Что значит &quot;разрешение окна&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Wed, 13 May 2020 14:25:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139501#p139501</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139492#p139492</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (efremov30ev)]]></author>
			<pubDate>Wed, 13 May 2020 06:25:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139492#p139492</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139471#p139471</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Tue, 12 May 2020 15:41:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139471#p139471</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139466#p139466</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (efremov30ev)]]></author>
			<pubDate>Tue, 12 May 2020 12:10:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139466#p139466</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139460#p139460</link>
			<description><![CDATA[<p>Какая у Вас логика &quot;логичная&quot;!<br />Вам приводят пример, bullit-in функционала с описанием из официальных источников, а Вы, не разобравшись, как он работает, делаете смелое предположение, что этого функционала нет, или он не умеет с Вами взаимодействовать.</p><p>Если хотите помощи, приведите пример кода. Как Вы пытались описать свою попытку.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Tue, 12 May 2020 05:24:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139460#p139460</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139440#p139440</link>
			<description><![CDATA[<p><strong>KusochekDobra</strong></p><p>Перечитал и ru и eng статьи так и не понял как сделать проверку на размер разрешения окна, чтобы запустить то или иное действие. Может быть Ahk не может это сделать?</p>]]></description>
			<author><![CDATA[null@example.com (efremov30ev)]]></author>
			<pubDate>Mon, 11 May 2020 08:07:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139440#p139440</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139438#p139438</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Mon, 11 May 2020 05:24:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139438#p139438</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Вопрос по A_ScreenWidth]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=139435#p139435</link>
			<description><![CDATA[<p>Здравствуйте, форумчане!</p><p>Вопрос следующий:<br />Имею скрипт, который должен исполнять одни и те же действия только по разным координатам в зависимости от разрешения экрана.<br />Иногда приходится меня разрешение программы на меньшее чем разрешение моего монитора (от чего она не на весь экран), а как мы знаем A_ScreenWidth проверяет именно размер монитора.<br />Можно ли как-то добавить проверку разрешения не монитора, а отдельного окна?</p><p>Заранее благодарен за Вашу обратную связь!</p>]]></description>
			<author><![CDATA[null@example.com (efremov30ev)]]></author>
			<pubDate>Mon, 11 May 2020 02:05:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=139435#p139435</guid>
		</item>
	</channel>
</rss>
