<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Вложенные скрипты со вложенным меню]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11086&amp;type=atom" />
	<updated>2015-11-17T13:38:08Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11086</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99133#p99133" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>becauseim пишет:</cite><blockquote><p>Если это все-таки то, что мне нужно, то чтобы было понятнее, отредактируйте, пожалуйста, последний код, основываясь, например, на следующем:</p></blockquote></div><div class="codebox"><pre><code>
#Persistent
#SingleInstance Force

Menu, Tray, Tip, First Script
Menu, Tray, Icon, %A_ScriptDir%\1.ico,, 16
Gui, Add, Edit, gActions vAction
Gui, Show, Hide, First Script Hidden Gui
Return

Actions:
	GuiControlGet, Command, , Action
	Try GoSub, %Command%
	Return
	
ExitApp:
	ExitApp  
	
#Del::
	MsgBox FileRecycleEmpty
	return

^#Del::
	MsgBox DllCall(&quot;shell32.dll\SHAddToRecentDocs&quot;, str, &quot;SHARD_PATH&quot;, int, 0)
	return
</code></pre></div><div class="codebox"><pre><code>
#Persistent
#SingleInstance Force

SetTitleMatchMode, 3
DetectHiddenWindows, On

Menu, Tray, NoStandard
Menu, Tray, Tip, Second Script
Menu, Tray, Icon, %A_ScriptDir%\2.ico

Menu, Sub, Add, ExitApp, ExitAppFirst 
Menu, Sub, Add, Empty Recycle Bin, Del1
Menu, Sub, Add, Clear Recent List, Del2
Menu, Sub, Icon, ExitApp, %A_ScriptDir%\1.ico

Menu, Tray, Add, First Script, :Sub
Menu, Tray, Icon, First Script, %A_ScriptDir%\1.ico
Return

ExitAppFirst:  
	ControlSetText, Edit1, ExitApp, First Script Hidden Gui ahk_class AutoHotkeyGUI ahk_exe AutoHotkey.exe 
	Return 
	
Del1: 
	ControlSetText, Edit1, #Del, First Script Hidden Gui ahk_class AutoHotkeyGUI ahk_exe AutoHotkey.exe 
	Return 

Del2: 
	ControlSetText, Edit1, ^#Del, First Script Hidden Gui ahk_class AutoHotkeyGUI ahk_exe AutoHotkey.exe 
	Return 
</code></pre></div><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Второй можно сократить, если имена пунктов в его меню соответствуют именам меток, или горячим клавишам в первом</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
SetTitleMatchMode, 3
DetectHiddenWindows, On

Menu, Tray, NoStandard
Menu, Tray, Tip, Second Script
Menu, Tray, Icon, %A_ScriptDir%\2.ico

Menu, Sub, Add, ExitApp, SendFirst 
Menu, Sub, Add, #Del, SendFirst
Menu, Sub, Add, ^#Del, SendFirst
Menu, Sub, Icon, ExitApp, %A_ScriptDir%\1.ico

Menu, Tray, Add, First Script, :Sub
Menu, Tray, Icon, First Script, %A_ScriptDir%\1.ico
Return

SendFirst:  
	ControlSetText, Edit1, % A_ThisMenuItem, First Script Hidden Gui ahk_class AutoHotkeyGUI ahk_exe AutoHotkey.exe 
	Return  
</code></pre></div></div></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-11-17T13:38:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99133#p99133</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99131#p99131" />
			<content type="html"><![CDATA[<p>Вы их запускали? <br />Они просто работают как на гифке из первого поста.<br /></p><div class="quotebox"><blockquote><p>где скрипт, содержащий в себе только команды</p></blockquote></div><p>Первый код.<br /></p><div class="quotebox"><blockquote><p>где в данном случае скрипт-агрегатор с меню</p></blockquote></div><p>Второй код.<br /></p><div class="quotebox"><blockquote><p>Menu, Tray используется в обоих случаях.</p></blockquote></div><p>Ну и что тут? Подсказка и иконка как на гифке.<br /></p><div class="codebox"><pre><code>Menu, Tray, Tip, First Script
Menu, Tray, Icon, %A_ScriptDir%\1.ico,, 16</code></pre></div><div class="quotebox"><blockquote><p>не понял Вашего замысла,</p></blockquote></div><p>Всё очень просто, из второго посылаем в первый имя подпрограммы которую в нём надо выполнить. В первом далее просто создаём любые подпрограммы. Из второго просто посылаем их названия.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-11-17T13:23:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99131#p99131</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99130#p99130" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong>, не понял Вашего замысла, т.е. не понял, где в данном случае скрипт-агрегатор с меню, а где скрипт, содержащий в себе только команды, т.к. здесь параметр Menu, Tray используется в обоих случаях. Если это все-таки то, что мне нужно, то чтобы было понятнее, отредактируйте, пожалуйста, последний код, основываясь, например, на следующем:</p><p>Empty Recycle Bin &amp; Clear Recent List.ahk:<br /></p><div class="codebox"><pre><code>#Del::
	FileRecycleEmpty
	return

^#Del::
	DllCall(&quot;shell32.dll\SHAddToRecentDocs&quot;, str, &quot;SHARD_PATH&quot;, int, 0)
	return</code></pre></div><p>Agregator.ahk:</p><div class="codebox"><pre><code>
SetWorkingDir %A_ScriptDir%
#Include, Empty Recycle Bin &amp; Clear Recent List.ahk
Menu, Tray, Add, Recycle Bin, ; (здесь должна быть ссылка на горячую клавишу #Del из вложенного скрипта)
</code></pre></div><br /><p>OFF: Смежная тема. Хоть это и не подразумевает взаимодействия с меню, но все же интересен принцип работы следующего скрипта. Из описания я ничего не понял даже после его перевода. Объясните, пожалуйста, принцип работы <a href="https://github.com/scottrippey/ScottoHotKey/blob/master/Start%20Up/AutoInclude.ahk">AutoInclude.ahk</a> и как им пользоваться.</p>]]></content>
			<author>
				<name><![CDATA[becauseim]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33149</uri>
			</author>
			<updated>2015-11-17T13:09:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99130#p99130</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99127#p99127" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>becauseim пишет:</cite><blockquote><p>Тогда только скрипт-агрегатор будет содержать в себе трей-меню, который я и буду редактировать под каждое изменение во вкладываемых скриптах.</p></blockquote></div><p>Ну тогда можно так:<br /></p><div class="codebox"><pre><code>
#Persistent
#SingleInstance Force

Menu, Tray, Tip, First Script
Menu, Tray, Icon, %A_ScriptDir%\1.ico,, 16
Gui, Add, Edit, gActions vAction
Gui, Show, Hide, First Script Hidden Gui
Return

Actions:
	GuiControlGet, Command, , Action
	Try GoSub, %Command%
	Return
	
ExitApp:
	ExitApp 
</code></pre></div><div class="codebox"><pre><code>
#Persistent
#SingleInstance Force

SetTitleMatchMode, 3
DetectHiddenWindows, On

Menu, Tray, NoStandard
Menu, Tray, Tip, Second Script
Menu, Tray, Icon, %A_ScriptDir%\2.ico

Menu, Sub, Add, Exit, FirstExit
Menu, Sub, Icon, Exit, %A_ScriptDir%\1.ico

Menu, Tray, Add, First Script, :Sub
Menu, Tray, Icon, First Script, %A_ScriptDir%\1.ico
Return

FirstExit: 
	ControlSetText, Edit1, ExitApp, First Script Hidden Gui ahk_class AutoHotkeyGUI ahk_exe AutoHotkey.exe 
	Return
</code></pre></div><p>Пример с сообщениями приводить не буду, он сложнее, а тут всё очень просто &quot;стандартными&quot; командами.<br />Используем свойство контрола Edit переходить по метке при изменении текста.<br />(изменено: serzh82saratov, Сегодня 16:12:28) попраил опечатку.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-11-17T11:30:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99127#p99127</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99125#p99125" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>ypppu предложил концепцию костыля, правда не уточнил что делать при выборе пункта</p></blockquote></div><p>Принцип действия моего костыля таков:<br />1.1 Создаём скрипт с меню в трее. Пункты меню в трее ссылаются на какие-то свои подпрограммы.<br />1.2 В этом же скрипте создаём скрытое GUI, в котором какими-нибудь эл. упр. (например кнопками) дублируются пункты трей-меню и ссылаются на те же подпрограммы, что и пункты трей-меню.</p><p>2.1 Создаём мастер-скрипт, который при запуске обнаруживает все работающие скрипты. Он считывает эл.упр. из их GUI и по полученным данным создаёт собственное меню в трее. При нажатии на пункты его трей-меню, происходит отправка ControlClick в эл.упр. скрытых окон скриптов.</p><p>Пример дублирования эл. упр.<br /></p><div class="codebox"><pre><code>Menu, tray, NoStandard
Menu, tray, add, Item1

GUI, Add, Button, vMyButton1 gItem1, Item1
GUI, Show
Return

Item1:
SoundBeep
Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2015-11-17T11:02:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99125#p99125</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99124#p99124" />
			<content type="html"><![CDATA[<p>Пожалуй, эта тема для меня будет сложной. В таком случае, подскажите, пожалуйста, как в трей-меню добавить пункт на выполнение команды из вложенного скрипта? Тогда только скрипт-агрегатор будет содержать в себе трей-меню, который я и буду редактировать под каждое изменение во вкладываемых скриптах.</p>]]></content>
			<author>
				<name><![CDATA[becauseim]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33149</uri>
			</author>
			<updated>2015-11-17T10:57:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99124#p99124</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99123#p99123" />
			<content type="html"><![CDATA[<p>Самое простое из пункта второго скрипта, просто показывать (то есть вызывать) непосредственно само меню первого.<br />Содержимое второго скрипта:<br /></p><div class="codebox"><pre><code>
SetTitleMatchMode, 1
DetectHiddenWindows, On

FirstScriptPath =   ; путь к файлу First Script

Menu, Tray, NoStandard
Menu, Tray, Tip, Second Script
Menu, Tray, Icon, %A_ScriptDir%\2.ico
  
Menu, Tray, Add, First Script &gt;, View
Menu, Tray, Icon, First Script &gt;, %A_ScriptDir%\1.ico

End:: WinClose, 1.ahk - AutoHotkey v

View:
	WinExist(FirstScriptPath &quot; ahk_class AutoHotkey ahk_exe AutoHotkey.exe&quot;)
	SendMessage, 0x404, 0, 0x205   ; AHK_NOTIFYICON = 0x404, WM_RBUTTONUP = 0x205
	Return
</code></pre></div><p>Надо указать путь к первому. Первый оставляем как есть в первом посте.<br />Ну а по правильному конечно с winapi нужно.<br /><strong>ypppu</strong> предложил концепцию костыля, правда не уточнил что делать при выборе пункта. Думаю надо будет для этого организовывать передачу команд в оконных сообщениях (примеры на форуме давно есть), тогда скрытые окна с данными меню можно будет упразднить, и также передавать эти данные о меню в сообщениях по запросу.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-11-17T10:35:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99123#p99123</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99122#p99122" />
			<content type="html"><![CDATA[<p>Что-то мой способ слишком костыльный. Наверное кто-нибудь знает лучший вариант обмена данными между скриптами.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2015-11-17T10:28:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99122#p99122</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99121#p99121" />
			<content type="html"><![CDATA[<p><strong>ypppu</strong>, по поводу менеджеров, меня интересует по большей части не управление процессами из одного скрипта, а вариант, при котором все изменения, приведенные в отдельном скрипте, в т.ч. и касательно его меню, автоматически отображались в скрипте, который служит агрегатором для всех используемых мною скриптов.</p><p>Если же подобное реализовать никак нельзя, то, пожалуйста, предложите метод использования функции <strong>Menu, Tray</strong> для вложенных в текущий скрипт других скриптов. Иными словами, измените второй скрипт из первого поста методом, основанным на вложенных скриптах.</p><p>Ваше предложение со скрытыми окнами я, к сожалению, не понял. Если Вы о пользовательском интерфейсе, то меня больше интересует трей-меню.</p>]]></content>
			<author>
				<name><![CDATA[becauseim]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33149</uri>
			</author>
			<updated>2015-11-17T09:43:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99121#p99121</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99119#p99119" />
			<content type="html"><![CDATA[<p>OFF: Вообще на форуме предлагались готовые менеджеры скриптов...</p><p>Можно разделить скрипты на 2 вида: мастер-скрипт и все остальные (просто скрипты).<br />В простых скриптах создавать скрытое окно, в котором продублированы пункты трей-меню и текущая иконка.<br />Мастер-скрипт при запуске находит все окна с нужным классом и считывает их содержимое. На основании полученных данных составляет своё трей-меню.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2015-11-17T09:28:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99119#p99119</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Вложенные скрипты со вложенным меню]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99117#p99117" />
			<content type="html"><![CDATA[<p>Не уверен, существует ли возможность автоматически вкладывать трей-меню одного скрипта в другой, но если это возможно, пожалуйста, подскажите метод, как вложить первый сценарий так, чтобы его меню вместе с иконками отображалось во втором скрипте ярусом выше. Не знаю, ясно ли я выразился, но цель заключается в том, чтобы вложенные сценарии отображались в т.ч. и в трей-меню. Если представить меню визуально, то должно получиться примерно следующее:</p><p>Работа первого скрипта:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br /><span class="postimg"><img src="https://i.gyazo.com/256ce2f6fdf547cb10d9a8c24e45597a.gif" alt="https://i.gyazo.com/256ce2f6fdf547cb10d9a8c24e45597a.gif" /></span>	</p><br /><p>Работа второго скрипта:<br /><span class="postimg"><img src="https://i.gyazo.com/39a0ab5f1396bbbd257eb66123aab2c6.gif" alt="https://i.gyazo.com/39a0ab5f1396bbbd257eb66123aab2c6.gif" /></span></p><br /><br /><p>Пример кода для первого скрипта:<br /></p><div class="codebox"><pre><code>
Menu, Tray, NoStandard
Menu, Tray, Tip, First Script
Menu, Tray, Icon, %A_ScriptDir%\1.ico,, 16

Menu, Tray, Add, Exit, End
Menu, Tray, Icon, Exit, %A_ScriptDir%\1.ico

End::
ExitApp</code></pre></div><br /><p>Чтобы визуализировать работу второго скрипта, я набрал следующее:<br /></p><div class="codebox"><pre><code>SetTitleMatchMode, 2
DetectHiddenWindows, On

Menu, Tray, NoStandard
Menu, Tray, Tip, Second Script
Menu, Tray, Icon, %A_ScriptDir%\2.ico

Menu, Sub, Add, Exit, End
Menu, Sub, Icon, Exit, %A_ScriptDir%\1.ico

Menu, Tray, Add, First Script, :Sub
Menu, Tray, Icon, First Script, %A_ScriptDir%\1.ico

End:: WinClose, 1.ahk - AutoHotkey v
</code></pre></div><p>Но такой вариант не подходит, т.к. необходима реализация эффекта вложения для скриптов, с большим количеством пунктов меню. Здесь для закрытия первого скрипта параметр Include не применялся, т.к . я пока не знаю, как его использовать должным образом. Только визуализировал выполнение команды.</p>]]></content>
			<author>
				<name><![CDATA[becauseim]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33149</uri>
			</author>
			<updated>2015-11-17T08:42:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99117#p99117</id>
		</entry>
</feed>
