<?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=15659</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15659&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Одна горячая клавиша на два действия».]]></description>
		<lastBuildDate>Mon, 14 Sep 2020 14:08:37 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142128#p142128</link>
			<description><![CDATA[<p><span style="color: green"><strong>Andrei</strong>, сообщение не соответствует теме: нарушение п. 2.1 Правил. Создайте отдельную тему в соответствующем разделе.</span></p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Mon, 14 Sep 2020 14:08:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142128#p142128</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142126#p142126</link>
			<description><![CDATA[<p>Как сделать чтобы на кнопку 1(мне для игры) открыть и сесть в авто а потом тоже на 1 вылезти?</p>]]></description>
			<author><![CDATA[null@example.com (Andrei)]]></author>
			<pubDate>Mon, 14 Sep 2020 08:58:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142126#p142126</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142084#p142084</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, вот оно, нашлось! <br />Вот эта конструкция <br /></p><div class="codebox"><pre><code>
#If (условие)
...
#If
</code></pre></div><p>Избавила меня от всех глюков и теперь всё работает как надо. Спасибо. Я до этого не мог додуматься, ибо редко пользуюсь AutoHotkey<br />Вообщем код теперь выглядит так (ну, примерно так, немного там еще добавил всякой всячины, но это к делу не относится):<br /></p><div class="codebox"><pre><code>
#If MouseUnderHTCLOSE()
XButton2:: 
	WinActivate
	Send, +#{Left} 
	Return 
#If

XButton2::XButton1
	
MouseUnderHTCLOSE() {
	CoordMode, Mouse, Screen
	MouseGetPos, mX, mY, Hwnd 
	WinExist(&quot;ahk_id&quot; Hwnd)
	SendMessage, 0x84,, (mX &amp; 0xFFFF)|(mY &amp; 0xFFFF)&lt;&lt;16,, ahk_id %Hwnd% 
	Return ErrorLevel = 20  ; HTCLOSE
}
</code></pre></div><p>И сколько же мусора было первоначально... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Спасибо, ребзя, что не бросили. Всем хорошего дня.</p>]]></description>
			<author><![CDATA[null@example.com (qsedftghk)]]></author>
			<pubDate>Thu, 10 Sep 2020 06:52:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142084#p142084</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142079#p142079</link>
			<description><![CDATA[<p>Не знаю зачем вам написали всё выше, по моему бесполезные советы, метод что вы нашли с HTCLOSE лучше.<br />И не знаю зачем у вас заморочки в move_window, у меня только Shift+Win+Left на двух мониторах отлично работают.</p><div class="codebox"><pre><code>
#If MouseUnderHTCLOSE()
XButton2:: 
	WinActivate
	Send, +#{Left} 
	Return 
#If

XButton2::
	MsgBox not HTCLOSE 
	Return

MouseUnderHTCLOSE() {
	CoordMode, Mouse, Screen
	MouseGetPos, mX, mY, Hwnd 
	WinExist(&quot;ahk_id&quot; Hwnd)
	SendMessage, 0x84,, (mX &amp; 0xFFFF)|(mY &amp; 0xFFFF)&lt;&lt;16,, ahk_id %Hwnd% 
	Return ErrorLevel = 20  ; HTCLOSE
}

</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 09 Sep 2020 20:31:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142079#p142079</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142077#p142077</link>
			<description><![CDATA[<p><strong>stealzy</strong>, скопипастил Ваш код, запустил - ничего не происходит. (Должен ведь MsgBox появиться, так?) Esc только работает. Ваш код для меня сложен в понимании, ибо&nbsp; мой уровень знаний в области API, увы, ничтожен. Тут я - нуб нубом. Это если бы мне каждую строчку объяснили, что, да как, то, понятное дело, я б наверное понял, что происходит, но оно вам надо? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p><strong>ypppu</strong>, вот как раз с той ветки я и брал кусочек кода, под себя только переделал:<br /></p><div class="codebox"><pre><code>
XButton2::
  CoordMode, Mouse, Screen
  MouseGetPos, mX, mY, Hwnd
  SendMessage, 0x84,, (mX &amp; 0xFFFF)|(mY &amp; 0xFFFF)&lt;&lt;16,, ahk_id %Hwnd%
  If ErrorLevel=20                               ; HTCLOSE
   move_window()
  else
  XButton2::XButton1  
Return
</code></pre></div><p>Крестик таким макаром распознается очень даже хорошо и перемещается окошко на другой экран, но проблема, в том, что сразу же выполняется XButton2::XButton1, как будто оно не в else запихнуто, а просто следует далее по коду. Из-за чего активируется любое нижлежащее окно и в нем выполняется&nbsp; XButton2::XButton1 (а это команда Back в проводнике).<br />Окно, которое переместилось на другой моник, становится неактивным. И, чтобы выбрать его (активировать) приходится еще раз щелкнуть XButton2. А иначе, хоть ущелкайся мышкой никакого эффекта, как будто мышка заблоченена над этим окном.<br />Вот я и не пойму почему это так происходит. Остальное все работает.</p><p>Вот код, который делает все, что мне нужно, но у которого такой непонятный баг, который я сейчас описал. Как его&nbsp; обойти я не понимаю, поэтому думал, как-то решить проблему с другого бока, но пока, увы.<br /></p><div class="codebox"><pre><code>
XButton1::Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d} ; открывает проводник

XButton2::  ;показывает текст при нажатии на крестик
  CoordMode, Mouse, Screen
  MouseGetPos, mX, mY, Hwnd
  SendMessage, 0x84,, (mX &amp; 0xFFFF)|(mY &amp; 0xFFFF)&lt;&lt;16,, ahk_id %Hwnd%
  If ErrorLevel=20                               ; HTCLOSE
   MsgBox, Text ; показывает текст
  else
  XButton2::XButton1  ; выполняет команду BACK в проводнике или в браузере
Return
</code></pre></div><p>Откройте проводник с любой папкой, а еще лучше, зайти внутрь папки и попробуйте щелкните XButton2 над крестиком.</p><p>ЗЫ. Ах, да, я туплю... У мышки должны быть конечно не три кнопки, а чуть больше. (у меня их 6, две из них, как раз эти злополучные XButton1 и XButton2)<br />ЗЫЫ. В любом случае, спасибо ребзя, за участие в моей нелепой проблеме<br />ЗЫЫ. Увидел текст __Михаил_, уже после того, как накатал эту простыню <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> завтра попробую, сегодня уже сил нет втыкать в экран</p>]]></description>
			<author><![CDATA[null@example.com (qsedftghk)]]></author>
			<pubDate>Wed, 09 Sep 2020 20:17:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142077#p142077</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142076#p142076</link>
			<description><![CDATA[<p>Только так смог заставить работать скрипт:</p><div class="codebox"><pre><code>If (name ~= &quot;Close|Закрыть&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Wed, 09 Sep 2020 19:02:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142076#p142076</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142075#p142075</link>
			<description><![CDATA[<div class="codebox"><pre><code>XButton2::
	Acc := Acc_ObjectFromPoint(Child)
	try name := Acc.accName(child)
	If (name == &quot;Close&quot;)
		MsgBox
Return
Esc::ExitApp

Acc_Init() {
	Static	h
	If Not	h
		h:=DllCall(&quot;LoadLibrary&quot;,&quot;Str&quot;,&quot;oleacc&quot;,&quot;Ptr&quot;)
}
Acc_ObjectFromPoint(ByRef _idChild_ = &quot;&quot;, x = &quot;&quot;, y = &quot;&quot;) {
	Acc_Init()
	If	DllCall(&quot;oleacc\AccessibleObjectFromPoint&quot;, &quot;Int64&quot;, x==&quot;&quot;||y==&quot;&quot;?0*DllCall(&quot;GetCursorPos&quot;,&quot;Int64*&quot;,pt)+pt:x&amp;0xFFFFFFFF|y&lt;&lt;32, &quot;Ptr*&quot;, pacc, &quot;Ptr&quot;, VarSetCapacity(varChild,8+2*A_PtrSize,0)*0+&amp;varChild)=0
	Return	ComObjEnwrap(9,pacc,1), _idChild_:=NumGet(varChild,8,&quot;UInt&quot;)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (stealzy)]]></author>
			<pubDate>Wed, 09 Sep 2020 18:16:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142075#p142075</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142065#p142065</link>
			<description><![CDATA[<p>Можно при нажатии кнопки мыши определять, какое окно находится под курсором. И по координатам определять, над какой кнопкой висел курсор. <a href="http://forum.script-coding.com/viewtopic.php?id=363">http://forum.script-coding.com/viewtopic.php?id=363</a> И если это был крестик, то ...</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Wed, 09 Sep 2020 15:51:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142065#p142065</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142064#p142064</link>
			<description><![CDATA[<p><strong>ypppu</strong>, да.</p>]]></description>
			<author><![CDATA[null@example.com (qsedftghk)]]></author>
			<pubDate>Wed, 09 Sep 2020 15:16:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142064#p142064</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142063#p142063</link>
			<description><![CDATA[<p>Нужно чтобы по нажатию XButton2 происходило некое действие, но только при условии, что в этот момент курсор находится над кнопкой &quot;X&quot; (Close) любого окна?</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Wed, 09 Sep 2020 14:56:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142063#p142063</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Одна горячая клавиша на два действия]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142062#p142062</link>
			<description><![CDATA[<p>Есть многокнопочная мышь. Скриптом сделано, чтобы кнопка мышки XButton1, открывала проводник, а на кнопку XButton2 - совершала события, которые совершала до этого кнопка XButton1. (ну, так вот надо).<br />Захотелось сделать так, чтобы при нажатии XButton2 над кнопкой &quot;X&quot; (Close) любого окна, это окно переносилось бы на другой моник.<br />Дак, вот вопрос друзья, как разделить эти события у кнопки XButton2?&nbsp; &nbsp;То есть, как сделать, чтобы именно над &quot;X&quot; нажатие XButton2 приводило к одному действию, а в любом другом случае нажатие XButton2 выполняло другое действие.<br />Вот код (кусок с действием над кнопкой &quot;Х&quot; взят с этого форума уже не помню и где <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" />, остальное всё кривенько, ну, я и не мастер)<br /></p><div class="codebox"><pre><code>
XButton1::Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d} 

; Переместить активное окно на другой моник - click XButton2 на кнопке &quot;крестик&quot;
XButton2::
  CoordMode, Mouse, Screen
  MouseGetPos, mX, mY, Hwnd
  SendMessage, 0x84,, (mX &amp; 0xFFFF)|(mY &amp; 0xFFFF)&lt;&lt;16,, ahk_id %Hwnd%
  If ErrorLevel=20                               ; HTCLOSE
   move_window()
  else
  XButton2::XButton1  
Return

move_window()
{
WinGetPos, winx, winy,,, A
WinGet, oldWin,ID,A
WinActivate, A
WinGet, mm, MinMax, A
WinRestore, A
If winx+5 &gt;= 0 
{
    mult=1
    Send , +#{Left}
}
else
{
    mult=-1
    Send , +#{Right}
}

if mm=1
    WinMaximize, A
}
</code></pre></div><p>Оно вроде все работает, но после того, как окно переместится на другой экран - оно не активно (и похоже активным становится всё что угодно, что ниже этого окна, а это иногда приводит к нажиманию кнопок там, что не есть хорошо), и, чтобы активировать окошко, нужно еще раз кликнуть XButton2, а иначе, как будто мешает что-то...</p><p>ЗЫ. Иногда руками показать легче, чем объяснить. <br />ЗЫ. Сначала я просто сделал второй скрипт и повесил его на сочетание !XButton2. Но при одновременной работе двух скриптов, получалось так, что сочетание !XButton2&nbsp; отрабатывало, а простое нажатие XButton2 ни к чему не приводило, что для меня тоже не очень понятно. Мне казалось, что это же разные гор. клавиши, почему тогда, одно блочило другое?</p><p>Вообщем, подскажите, други, есть ли возможность отслеживать над чем нажата кнопка мышки и как-то разделять это событие от события мышки по-умолчанию</p>]]></description>
			<author><![CDATA[null@example.com (qsedftghk)]]></author>
			<pubDate>Wed, 09 Sep 2020 13:15:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142062#p142062</guid>
		</item>
	</channel>
</rss>
