<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=7636&amp;type=atom" />
	<updated>2015-02-22T00:18:01Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=7636</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=91772#p91772" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[DD]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25263</uri>
			</author>
			<updated>2015-02-22T00:18:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=91772#p91772</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=65426#p65426" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Если «не распознаёт» то значит окно с точки зрения системы «не создаётся» и «не активируется».</p></blockquote></div><p>Используйте winwait, как и планировали.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-11-06T00:07:45Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=65426#p65426</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=65425#p65425" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-11-05T23:47:48Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=65425#p65425</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=65424#p65424" />
			<content type="html"><![CDATA[<p>Это частный случай. «Признаки окна» стандартные для команд используемых в ahk.&nbsp; Если «не распознаёт» то значит окно с точки зрения системы «не создаётся» и «не активируется».</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-11-05T23:34:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=65424#p65424</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=65423#p65423" />
			<content type="html"><![CDATA[<p>А что в него нужно вписать, чтобы он находил не по WinGetClass, а WinGetTitle.<br />Так как WinGetClass возвращает #32770, а такое же имя классов у множества других окон.<br />Пробовал менять&nbsp; WinGetClass на WinGetTitle - не распознает.</p><p>ЗЫ. И все-равно, я считаю, что такие нестандартные решения нужны для коллекции.<br />Если в ней покопаться, то там найдутся куда более бесполезные скрипты.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-11-05T23:20:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=65423#p65423</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=65422#p65422" />
			<content type="html"><![CDATA[<p>Потому, что они понадобились лишь двум пользователям. Невостребованная функциональность у которой есть альтернативная реализация через WinWait.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-11-05T22:54:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=65422#p65422</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=65420#p65420" />
			<content type="html"><![CDATA[<p>Какие же ценные скрипты в постах 2 и 3.<br />Почему их еще нет в коллекции?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-11-05T22:37:51Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=65420#p65420</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64662#p64662" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2012-10-09T10:29:50Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64662#p64662</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64661#p64661" />
			<content type="html"><![CDATA[<p>Я тоже не понимаю к чему все эти сложности, когда можно использовать команду<br />IfWinExist</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-10-09T10:10:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64661#p64661</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64660#p64660" />
			<content type="html"><![CDATA[<p>WinWait ( &quot;title&quot; [, &quot;text&quot; [, timeout]] )<br />Команда же ждёт, когда окно станет активно.<br />И выключает его после тайм-аута.<br />Мне это не нужно.</p>]]></content>
			<author>
				<name><![CDATA[bugagashi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=28295</uri>
			</author>
			<updated>2012-10-09T10:07:53Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64660#p64660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64658#p64658" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2012-10-09T09:13:15Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64658#p64658</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64657#p64657" />
			<content type="html"><![CDATA[<p>Разобрался.<br />Спасибо, что помогли.</p>]]></content>
			<author>
				<name><![CDATA[bugagashi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=28295</uri>
			</author>
			<updated>2012-10-09T09:04:49Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64657#p64657</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64631#p64631" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Скрипт, кстати, долго не работает.<br />Просто исчезает из программ.<br />Перезапускать приходиться.<br />Можно от этого избавиться?</p></blockquote></div><p>Можно. Нужно лишь разобраться какой скрипт и почему исчезает, а после — устранить в конкретном скрипте конкретную недоработку.<br />Если вы о примере из третьего сообщения речь ведёте, то, при использовании в оригинальном виде, проблемы мной не замечены.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-10-07T00:31:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64631#p64631</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64469#p64469" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[bugagashi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=28295</uri>
			</author>
			<updated>2012-10-02T12:06:22Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64469#p64469</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Нажатие определённых клавиш, при появлении cmd]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64467#p64467" />
			<content type="html"><![CDATA[<p>Скрипт, кстати, долго не работает.<br />Просто исчезает из программ.<br />Перезапускать приходиться.<br />Можно от этого избавиться?</p>]]></content>
			<author>
				<name><![CDATA[bugagashi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=28295</uri>
			</author>
			<updated>2012-10-02T12:04:31Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64467#p64467</id>
		</entry>
</feed>
