<?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=13571</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13571&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Назначение комбинаций клавишам нампада.».]]></description>
		<lastBuildDate>Sun, 25 Mar 2018 18:19:59 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Назначение комбинаций клавишам нампада.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=124236#p124236</link>
			<description><![CDATA[<p>Доброго здоровья!<br />Переименуйте пожалуйста название обсуждения, добавив в его начало &quot;AHK:&quot;, по примеру остальных.</p><p>Разделите список хоткеев директивами <a href="https://autohotkey.com/docs/commands/_IfWinActive.htm"><em>#IfWinActive</em></a>, например:<br /></p><div class="codebox"><pre><code>
#IfWinActive, ahk_exe XXX.exe
NumpadIns::^DOWN
Numpad0::^DOWN
...
#IfWinActive, ahk_exe YYY.exe
NumpadIns::
Numpad0::
...
</code></pre></div><p>Тогда разным окнам будут назначены разные указания, привязанные к одинаковым клавишам, как это описано в справке.<br />Описания Help-подсказки опишите в секции автовыполнения сценария, например, так:<br /></p><div class="codebox"><pre><code>
xxxHelp :=
	(LTrim Join`n
	&quot;Активное окно &quot;&quot;XXX.exe&quot;&quot;
	
	NumpadIns::^DOWN
	Numpad0::^DOWN
	NumpadEnd::^!DOWN
	Numpad1::^!DOWN&quot;
	)
</code></pre></div><p>И вызов &quot;Help&quot; по хоткеям можно так же описать в каждом блоке, привязав его к одинаковой комбинации, например:<br /></p><div class="codebox"><pre><code>
; Ctrl+H
^sc23:: MsgBox % xxxHelp
</code></pre></div><p>В итоге, должно получиться примерно так:<br /></p><div class="codebox"><pre><code>
#SingleInstance, Force
#NoEnv
SetTitleMatchMode, 2

xxxHelp :=
	(LTrim Join`n
	&quot;Активное окно &quot;&quot;XXX.exe&quot;&quot;
	
	NumpadIns::^DOWN
	Numpad0::^DOWN
	NumpadEnd::^!DOWN
	Numpad1::^!DOWN&quot;
	)
yyyHelp :=
	(LTrim Join`n
	&quot;Активное окно &quot;&quot;YYY.exe&quot;&quot;
	
	NumpadIns::
	Numpad0::
	NumpadEnd::
	Numpad1::&quot;
	)
#IfWinActive, ahk_exe XXX.exe
NumpadIns::^DOWN
Numpad0::^DOWN
...
; Ctrl+H
^sc23:: MsgBox % xxxHelp
#IfWinActive, ahk_exe YYY.exe
NumpadIns::
Numpad0::
...
; Ctrl+H
^sc23:: MsgBox % yyyHelp
</code></pre></div><p><strong>UPD:</strong><br />Пожалуй, тоже буду дополнять этот пост своими наблюдениями, следуя выбранному стилю общения ТС, правда с разницей в том, что все новые предположения буду излагать ниже, чтобы всегда была видна нить рассуждения и не вводить читателя в заблуждение текстом, исходник которого уже не прочесть и не понять, на что именно был дан ответ.</p><p>Итак, на этом моменте, стоит уточнить, Вам нужен инструмент для расширения своих функциональных задач, или Вы собираетесь описать универсальную приспособу, годную для всех случаев жизни, оформленную всякими там визуальными красивостями, анимациями и спецэффектами?</p><p>Если первое, то, по моему скромному мнению, нет никакой нужды мониторить активируемые окна, только для того, чтобы в трее выразить сообщение с текстом о предназначении горячих клавиш этому окну. Если Вы описываете сценарий для себя - Вы знаете, для чего собираетесь нажимать кнопки. В таком случае, иногда напоминать себе Help-текстом их назначения осталось бы удобным только по случаю, когда в этом есть необходимость. Использовать для этого диалоговые окна, сообщения в трее, тултипы, или какие-либо другие варианты - на Ваше усмотрение. Предложенный выше, в этом сообщении способ, описывает нужное Вам поведение. Новые <em>клиенты-окна</em>, с требуемым поведением для горячих клавиш описываются этим же способом.</p><p>Если второе, то описанный приём будет хорошим стартом для того, чтобы точнее понять, насколько точно и что конкретно необходимо. Попробуйте описать так, чтобы хоть как-то заработало, после чего добавите новый функционал.</p><p>Если считаете, что Ваши изыскания смогут оказаться полезны любому другому человеку, попавшему в Ваше положение, то уверяю, ему придётся пройти похожий путь, потому как труды на эту тематику пестрят по всему интернету и Вам, ни один из них не пришёлся по душе, раз Вы ищете своё решение для таких тривиальных задач.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Sun, 25 Mar 2018 18:19:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=124236#p124236</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Назначение комбинаций клавишам нампада.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=124235#p124235</link>
			<description><![CDATA[<p>Уважаемое сообщество.</p><p>Нет ли тут скрипта, который бы контролировал активное окно и в зависимости от него назначал клавишам нампада хоткеи или текстовые команды (например для Autocad).</p><p>Если нет, прошу помощи в реализации.</p><p>1. Запуск - выгрузка (включение-отключение) скрипта по F11 или F12.<br />2. После запуска появляется (или «зажигается) иконка в трее. Программа мониторит активное окно и в зависимости от него по разному обрабатывает нажатия клавиш нампада.<br />3. При обнаружении отслеживаемого окна секунд на 5 в трее появляется всплывающая подсказка по хоткеям для данной программы.<br />4. Возможность простого добавления в скрипт любых назначений любых программ путём вставки соответствующего блока для оператора, аналогичного case в Паскале.</p><p>Пока понял только про назначения. К сожалению в школе учил паскаль, поэтому сишный скобочный синтаксис воспринимаю тяжело.</p><p>Пока канва вырисовывается следующая</p><div class="quotebox"><blockquote><p><strong>Как запускать и отключать по F12? Очевидно через хуки</strong></p><p>#SingleInstance, Force<br />#NoEnv<br />SetTitleMatchMode, 2</p><p>xxxHelp :=<br />	(LTrim Join`n<br />	&quot;Назначение клавиш нампада<br />	1 —<br />	2 — <br />	3 —<br />	4 — <br /> 5 — <br /> 6 — <br /> 7 —<br /> 8 —<br /> 9 —<br /> + —<br /> -&nbsp; —<br /> *<br /> Enter —<br /> Ins —&quot;<br />	)</p><p>yyyHelp :=<br />	(LTrim Join`n<br />	&quot;Назначение клавиш нампада<br />	1 —<br />	2 — <br />	3 —<br />	4 — <br /> 5 — <br /> 6 — <br /> 7 —<br /> 8 —<br /> 9 —<br /> + —<br /> -&nbsp; —<br /> *<br /> Enter —<br /> Ins —&quot;<br />	)</p><p>ACADHelp :=<br />	(LTrim Join`n<br />	&quot;Назначение клавиш нампада<br />	1 —<br />	2 — <br />	3 —<br />	4 — <br /> 5 — <br /> 6 — <br /> 7 —<br /> 8 —<br /> 9 —<br /> + —<br /> -&nbsp; —<br /> *<br /> Enter —<br /> Ins —&quot;<br />	)</p><p><strong>цикл контроля активного окна?</strong></p><p>WinGetActiveTitle, Title ; получаем название текущего окна и переназначаем клавиши</p><p><strong>Если (как сделать сравнение несколькими вариантами) </strong><br />#IfWinActive ahk_class XXX.exe<br /><strong> тут надо на 4-5 секунд всплывающая подсказка в трее. CTRL-H и мессаджбокс нежелательно, чтобы не перехватывать комбинации из оригинального софта</strong><br />NumpadIns::^DOWN<br />Numpad0::^DOWN<br />NumpadEnd::^!DOWN<br />Numpad1::^!DOWN<br />NumpadDown::^J<br />Numpad2::^J<br />NumpadPgDn::^I<br />Numpad3::^I<br />NumpadLeft::<br />Numpad4::^!S<br />NumpadClear::^!T<br />Numpad5::^!T<br />NumpadRight::^!R<br />Numpad6::^!R<br />NumpadHome::<br />Numpad7::<br />NumpadUp::^F<br />Numpad8::^F<br />NumpadPgUp::^H<br />Numpad9::^H<br />NumpadAdd::^C<br />NumpadSub::^V<br />NumpadMult::^A</p><p>#IfWinActive ahk_class YYY.exe<br /><strong> тут надо на 4-5 секунд всплывающая подсказка в трее</strong><br />NumpadIns::<br />Numpad0::<br />NumpadEnd::<br />Numpad1::<br />NumpadDown::<br />Numpad2::<br />NumpadPgDn::<br />Numpad3::<br />NumpadLeft::<br />Numpad4::<br />NumpadClear::<br />Numpad5::<br />NumpadRight::<br />Numpad6::<br />NumpadHome::<br />Numpad7::<br />NumpadUp::<br />Numpad8::<br />NumpadPgUp::<br />Numpad9::<br />NumpadAdd::^C<br />NumpadSub::^V<br />NumpadMult::^A</p><p>#IfWinActive ahk_class ACAD.exe<br /><strong> тут надо на 4-5 секунд всплывающая подсказка в трее</strong></p><p>NumpadIns::<br />Numpad0::<br />NumpadEnd::<br />Numpad1:: (КАК ПЕРЕДАТЬ ТЕКСТОВУЮ КОМАНДУ LINE/ЛИНИЯ?)<br />NumpadDown::<br />Numpad2::<br />NumpadPgDn::<br />Numpad3::<br />NumpadLeft::<br />Numpad4::<br />NumpadClear::<br />Numpad5::<br />NumpadRight::<br />Numpad6::<br />NumpadHome::<br />Numpad7::<br />NumpadUp::; (КАК ПЕРЕДАТЬ ТЕКСТОВУЮ КОМАНДУ FIND/НАЙТИ?)<br />Numpad8::<br />NumpadPgUp::<br />Numpad9::<br />NumpadAdd::<br />NumpadSub::<br />NumpadMult::</p><p>return</p></blockquote></div><p>Буду благодарен за любые идеи и подсказки или наводку на уже существующее решение,&nbsp; требующее только допиливания под конкретные нужды...</p><p>Исправлять буду прямо тут, чтобы когда получится готовый скрипт он был доступен для всех в самом первом посте.</p>]]></description>
			<author><![CDATA[null@example.com (miguel99)]]></author>
			<pubDate>Sun, 25 Mar 2018 16:26:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=124235#p124235</guid>
		</item>
	</channel>
</rss>
