<?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=11086</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11086&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Вложенные скрипты со вложенным меню».]]></description>
		<lastBuildDate>Tue, 17 Nov 2015 13:38:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99133#p99133</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 17 Nov 2015 13:38:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99133#p99133</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99131#p99131</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 17 Nov 2015 13:23:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99131#p99131</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99130#p99130</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 17 Nov 2015 13:09:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99130#p99130</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99127#p99127</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 17 Nov 2015 11:30:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99127#p99127</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99125#p99125</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Tue, 17 Nov 2015 11:02:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99125#p99125</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99124#p99124</link>
			<description><![CDATA[<p>Пожалуй, эта тема для меня будет сложной. В таком случае, подскажите, пожалуйста, как в трей-меню добавить пункт на выполнение команды из вложенного скрипта? Тогда только скрипт-агрегатор будет содержать в себе трей-меню, который я и буду редактировать под каждое изменение во вкладываемых скриптах.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 17 Nov 2015 10:57:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99124#p99124</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99123#p99123</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 17 Nov 2015 10:35:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99123#p99123</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99122#p99122</link>
			<description><![CDATA[<p>Что-то мой способ слишком костыльный. Наверное кто-нибудь знает лучший вариант обмена данными между скриптами.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Tue, 17 Nov 2015 10:28:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99122#p99122</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99121#p99121</link>
			<description><![CDATA[<p><strong>ypppu</strong>, по поводу менеджеров, меня интересует по большей части не управление процессами из одного скрипта, а вариант, при котором все изменения, приведенные в отдельном скрипте, в т.ч. и касательно его меню, автоматически отображались в скрипте, который служит агрегатором для всех используемых мною скриптов.</p><p>Если же подобное реализовать никак нельзя, то, пожалуйста, предложите метод использования функции <strong>Menu, Tray</strong> для вложенных в текущий скрипт других скриптов. Иными словами, измените второй скрипт из первого поста методом, основанным на вложенных скриптах.</p><p>Ваше предложение со скрытыми окнами я, к сожалению, не понял. Если Вы о пользовательском интерфейсе, то меня больше интересует трей-меню.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 17 Nov 2015 09:43:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99121#p99121</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99119#p99119</link>
			<description><![CDATA[<p>OFF: Вообще на форуме предлагались готовые менеджеры скриптов...</p><p>Можно разделить скрипты на 2 вида: мастер-скрипт и все остальные (просто скрипты).<br />В простых скриптах создавать скрытое окно, в котором продублированы пункты трей-меню и текущая иконка.<br />Мастер-скрипт при запуске находит все окна с нужным классом и считывает их содержимое. На основании полученных данных составляет своё трей-меню.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Tue, 17 Nov 2015 09:28:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99119#p99119</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Вложенные скрипты со вложенным меню]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99117#p99117</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 17 Nov 2015 08:42:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99117#p99117</guid>
		</item>
	</channel>
</rss>
