<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=7636</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=7636&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Нажатие определённых клавиш, при появлении cmd».]]></description>
		<lastBuildDate>Sun, 22 Feb 2015 00:18:01 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=91772#p91772</link>
			<description><![CDATA[<p>Не возьму в толк, почему код не реагирует на окно диалога, хотя если подставить класс другого окна — сработает:</p><div class="codebox"><pre><code>OnWindowCreated(&quot;ahk_class #32770&quot;, &quot;Dialog32770_Created&quot;)
return

Dialog32770_Created(hWnd) ; эта процедура будет выполнятся при каждом создании окна
{
  Soundplay *48  ;Exclamation
  return
}

; ниже — служебные функции которые уместно держать в отдельном файле и в скрипт включать посредством #Include
OnWindowCreated(winTitle, procName = &quot;&quot;, maxThreads = 1)
{
    global ShellHookActionList
 
    IsObject(ShellHookActionList) || ShellHookActionList := Object()
    IsObject(ShellHookActionList[1]) || ShellHookActionList[1] := Object()
 
    if procName
        ShellHookActionList[1][winTitle] := procName
    else
        return ShellHookActionList[1][winTitle]
 
    if !OnMessage(DllCall(&quot;RegisterWindowMessage&quot;, &quot;str&quot;, &quot;SHELLHOOK&quot;)) {
        DllCall(&quot;RegisterShellHookWindow&quot;, &quot;UInt&quot;, A_ScriptHwnd)
        OnMessage(DllCall(&quot;RegisterWindowMessage&quot;, &quot;str&quot;, &quot;SHELLHOOK&quot;), &quot;ShellProc&quot;, maxThreads)
    }
}

ShellProc(wParam, lParam)
{
    global ShellHookActionList
 
    if ShellHookActionList.HasKey(wParam) {
        for winTitle, procName in ShellHookActionList[wParam] {
            WinGet, hWndList, List, %winTitle%
            loop %hWndList%
                continue
            until hWndList%A_Index% = lParam &amp;&amp; found := true
 
            if (found)
                %procName%(lParam), found := false
        }
    }
    return
}</code></pre></div><p>И вопрос между прочим: может ли сказаться на производительности множество десятков условий на событие (приведённого типа) в скрипте?</p>]]></description>
			<author><![CDATA[null@example.com (DD)]]></author>
			<pubDate>Sun, 22 Feb 2015 00:18:01 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=91772#p91772</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=65426#p65426</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Если «не распознаёт» то значит окно с точки зрения системы «не создаётся» и «не активируется».</p></blockquote></div><p>Используйте winwait, как и планировали.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Tue, 06 Nov 2012 00:07:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=65426#p65426</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=65425#p65425</link>
			<description><![CDATA[<p>Может я неправильно делаю.<br />Вот часть кода, который я исправил<br /></p><div class="codebox"><pre><code>ShellProc(wParam, lParam)
{
    static HSHELL_WINDOWCREATED := 1 ; http://msdn.microsoft.com/en-us/library/windows/desktop/ms644991%28v=vs.85%29.aspx
    global consoleWindowHWND
 
    if (wParam = HSHELL_WINDOWCREATED) {
        WinGetTitle, winTitle, ahk_id %lParam%
        if (winTitle = &quot;Save Project&quot;) {
            consoleWindowHWND := lParam
            SetTimer, ConsoleWindowCreated, -1
        }
    }
}</code></pre></div><p>Хотя командой<br /></p><div class="codebox"><pre><code>WinGetTitle, Title, A
MsgBox, The active window is &quot;%Title%&quot;.</code></pre></div><p>возвращает &quot;Save Project&quot;</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 05 Nov 2012 23:47:48 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=65425#p65425</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=65424#p65424</link>
			<description><![CDATA[<p>Это частный случай. «Признаки окна» стандартные для команд используемых в ahk.&nbsp; Если «не распознаёт» то значит окно с точки зрения системы «не создаётся» и «не активируется».</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Mon, 05 Nov 2012 23:34:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=65424#p65424</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=65423#p65423</link>
			<description><![CDATA[<p>А что в него нужно вписать, чтобы он находил не по WinGetClass, а WinGetTitle.<br />Так как WinGetClass возвращает #32770, а такое же имя классов у множества других окон.<br />Пробовал менять&nbsp; WinGetClass на WinGetTitle - не распознает.</p><p>ЗЫ. И все-равно, я считаю, что такие нестандартные решения нужны для коллекции.<br />Если в ней покопаться, то там найдутся куда более бесполезные скрипты.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 05 Nov 2012 23:20:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=65423#p65423</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=65422#p65422</link>
			<description><![CDATA[<p>Потому, что они понадобились лишь двум пользователям. Невостребованная функциональность у которой есть альтернативная реализация через WinWait.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Mon, 05 Nov 2012 22:54:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=65422#p65422</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=65420#p65420</link>
			<description><![CDATA[<p>Какие же ценные скрипты в постах 2 и 3.<br />Почему их еще нет в коллекции?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Mon, 05 Nov 2012 22:37:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=65420#p65420</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64662#p64662</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p><strong>WinWait</strong><br />Дожидается существования указанного окна. </p><p>WinWait [, WinTitle, WinText, Seconds, ExcludeTitle, ExcludeText]</p></blockquote></div><p>Эта команда ждёт, пока появится окно. Она заменяет периодические проверки <em>IfWinExist</em>. А команда, которая ждёт, когда окно станет активно, называется <em>WinWaitActive</em>.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Tue, 09 Oct 2012 10:29:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64662#p64662</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64661#p64661</link>
			<description><![CDATA[<p>Я тоже не понимаю к чему все эти сложности, когда можно использовать команду<br />IfWinExist</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 09 Oct 2012 10:10:52 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64661#p64661</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64660#p64660</link>
			<description><![CDATA[<p>WinWait ( &quot;title&quot; [, &quot;text&quot; [, timeout]] )<br />Команда же ждёт, когда окно станет активно.<br />И выключает его после тайм-аута.<br />Мне это не нужно.</p>]]></description>
			<author><![CDATA[null@example.com (bugagashi)]]></author>
			<pubDate>Tue, 09 Oct 2012 10:07:53 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64660#p64660</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64658#p64658</link>
			<description><![CDATA[<div class="quotebox"><cite>bugagashi пишет:</cite><blockquote><div class="quotebox"><cite>ypppu пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Необходимо при появлении cmd нажать m-&gt;enter-&gt;enter.</p></blockquote></div><p>А можно воспользоваться командой <em>WinWait</em> ?</p></blockquote></div><p>В том то и дело, что мне нужно чтобы он постоянно работал.</p></blockquote></div><p>Так я и не понял, что мешает использовать команду, идеально подходящую под описание поставленной задачи.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Tue, 09 Oct 2012 09:13:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64658#p64658</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64657#p64657</link>
			<description><![CDATA[<p>Разобрался.<br />Спасибо, что помогли.</p>]]></description>
			<author><![CDATA[null@example.com (bugagashi)]]></author>
			<pubDate>Tue, 09 Oct 2012 09:04:49 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64657#p64657</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64631#p64631</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Скрипт, кстати, долго не работает.<br />Просто исчезает из программ.<br />Перезапускать приходиться.<br />Можно от этого избавиться?</p></blockquote></div><p>Можно. Нужно лишь разобраться какой скрипт и почему исчезает, а после — устранить в конкретном скрипте конкретную недоработку.<br />Если вы о примере из третьего сообщения речь ведёте, то, при использовании в оригинальном виде, проблемы мной не замечены.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Sun, 07 Oct 2012 00:31:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64631#p64631</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64469#p64469</link>
			<description><![CDATA[<div class="quotebox"><cite>ypppu пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Необходимо при появлении cmd нажать m-&gt;enter-&gt;enter.</p></blockquote></div><p>А можно воспользоваться командой <em>WinWait</em> ?</p></blockquote></div><p>В том то и дело, что мне нужно чтобы он постоянно работал.</p>]]></description>
			<author><![CDATA[null@example.com (bugagashi)]]></author>
			<pubDate>Tue, 02 Oct 2012 12:06:22 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64469#p64469</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64467#p64467</link>
			<description><![CDATA[<p>Скрипт, кстати, долго не работает.<br />Просто исчезает из программ.<br />Перезапускать приходиться.<br />Можно от этого избавиться?</p>]]></description>
			<author><![CDATA[null@example.com (bugagashi)]]></author>
			<pubDate>Tue, 02 Oct 2012 12:04:31 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64467#p64467</guid>
		</item>
	</channel>
</rss>
