<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.mediamonkey.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michal.kocarek</id>
	<title>MediaMonkey Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mediamonkey.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michal.kocarek"/>
	<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/Special:Contributions/Michal.kocarek"/>
	<updated>2026-05-23T13:16:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.4</generator>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=User:Michal.kocarek&amp;diff=8727</id>
		<title>User:Michal.kocarek</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=User:Michal.kocarek&amp;diff=8727"/>
		<updated>2014-11-25T23:21:25Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: Created page with &amp;quot;Find me at [http://brainbox.cz/?utm_source=mediamonkey&amp;amp;utm_medium=web&amp;amp;utm_campaign=mediamonkey-wiki brainbox.cz] or here at [http://www.mediamonkey.com/forum/memberlist.php?mode=...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Find me at [http://brainbox.cz/?utm_source=mediamonkey&amp;amp;utm_medium=web&amp;amp;utm_campaign=mediamonkey-wiki brainbox.cz] or here at [http://www.mediamonkey.com/forum/memberlist.php?mode=viewprofile&amp;amp;u=63584 forum].&lt;br /&gt;
&lt;br /&gt;
I developed few MediaMonkey plugins in JScript, because I don&#039;t like VBScript. Had overcome biggest issues so if you need help, feel free to ask me.&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=Introduction_to_scripting&amp;diff=8726</id>
		<title>Introduction to scripting</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=Introduction_to_scripting&amp;diff=8726"/>
		<updated>2014-11-25T23:16:00Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: /* Considerations */ x-link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MediaMonkey can be customized through the use of custom scripts. Scripts are relatively simple computer programs written in a scripting language, such as VBScript. Unlike most computer programs, these scripts do not have to be compiled, which allows them to be tested and modified more easily than with more advanced languages. Still, writing MediaMonkey scripts can be a challenging experience so potential script writers should consider alternatives, particularly if they have little previous experience writing scripts.&lt;br /&gt;
&lt;br /&gt;
== Considerations ==&lt;br /&gt;
&lt;br /&gt;
Before writing their own scripts, users of MediaMonkey may wish to consider the following issues:&lt;br /&gt;
*In addition to supporting scripting, MediaMonkey has a [[Plug-ins|plug-in]] interface that allows a large number of Winamp and MediaMonkey plug-ins to be used. There may be no need to write a script if the desired features are already provided by a plug-in.&lt;br /&gt;
*Some users of MediaMonkey are willing to share the scripts that they have written with other users. An existing script may already provide the desired features or be relatively easily modified so that it does. The best place to find such scripts or to get support for them is the [http://www.mediamonkey.com/forum/viewforum.php?f=2 Scripts and Components forum].&lt;br /&gt;
*Although, in theory, MediaMonkey supports both of the [http://en.wikipedia.org/wiki/VBScript VBScript] (*.vbs) and [http://en.wikipedia.org/wiki/JScript JScript] (*.js) scripting languages, the implementation for JScript is only partial (see [[Scripting Tips &amp;amp; Tricks#JScript|Scripting Tips &amp;amp; Tricks]] for some issues), so for some applications VBScript is required. Programmers not wishing to deal with VBScript may wish to create an [[#About external scripts and applications |external]] script or application using their preferred language and use a script written in VBScript (or JScript) to launch it.&lt;br /&gt;
*Other than tags embedded in media files, virtually all of MediaMonkey’s data is stored in a [http://www.sqlite.org SQLite] database from MediaMonkey version 3.0. It is possible to manipulate MediaMonkey’s data, while minimizing the use of MediaMonkey’s API, by using [http://en.wikipedia.org/wiki/SQL SQL]. MediaMonkey&#039;s API can be (almost, except string [[MediaMonkey_Database_structure#Additions_to_SQLite|collations]]) completely bypassed by using an interface provided by the underlying engine to access the database. (MediaMonkey 2.x used [http://en.wikipedia.org/wiki/Microsoft_Jet_Database_Engine Microsoft Jet] relational database. It could accessed through Jet or ODBC, or even opened directly by Microsoft Access, for example.)&lt;br /&gt;
&lt;br /&gt;
== Types of scripts ==&lt;br /&gt;
&lt;br /&gt;
There are three major types of scripts that can be launched internally by MediaMonkey:&lt;br /&gt;
*&#039;&#039;&#039;Normal scripts&#039;&#039;&#039; are located in the &#039;&#039;Scripts&#039;&#039; folder and are executed according to the script&#039;s entry in the [[#Format of the Scripts.ini file|&#039;&#039;Scripts\Scripts.ini&#039;&#039; file]].&lt;br /&gt;
*&#039;&#039;&#039;Auto-scripts&#039;&#039;&#039; are located in the &#039;&#039;Scripts\Auto&#039;&#039; folder and its OnStartup method is executed when MediaMonkey starts. If more than one script exists in the Auto folder the scripts are run in alphabetical order.&lt;br /&gt;
*&#039;&#039;&#039;Other scripts&#039;&#039;&#039;, such as [[Search scripts]] and [[Auto-DJ scripts]] are intended for specific types of customization, but are also defined in the [[#Format of the Scripts.ini file|&#039;&#039;Scripts\Scripts.ini&#039;&#039; file]].&lt;br /&gt;
&lt;br /&gt;
In addition to the scripts that are launched by MediaMonkey (internal scripts), you can also work with MediaMonkey by using [[#About external scripts and applications|&#039;&#039;external&#039;&#039; scripts and applications]].&lt;br /&gt;
&lt;br /&gt;
== How to create a normal script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a plain text file in the &#039;&#039;Scripts&#039;&#039; folder, e.g. &#039;&#039;MyNormalScript.vbs&#039;&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Write your VBScript script and make sure you have a procedure that can be called, e.g.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Sub CallMe&lt;br /&gt;
&lt;br /&gt;
    &#039; This script will pop up a simple message box when the procedure CallMe is called.&lt;br /&gt;
    MsgBox &amp;quot;CallMe was called by the action defined in the Scripts.ini file.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
End Sub&amp;lt;/source&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a new entry for your script&#039;s &#039;&#039;CallMe&#039;&#039; procedure in the [[#Format of the Scripts.ini file|&#039;&#039;Scripts.ini&#039;&#039; file]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From within a MediaMonkey script, a reference to the SDB object (an instance of the [[SDBApplication]] class) is always present. By accessing its properties and methods, you can interact with many aspects of MediaMonkey. Check out the [[MediaMonkey Automation objects]] page for other MediaMonkey objects that can be created starting from the SDB object.&lt;br /&gt;
Another available object reference is the Script object (an instance of the [[SDBScriptControl]] class), that contains methods to control the running script&#039;s environment, usually to [[ISDBScriptControl::RegisterEvent|attach]] to events of MediaMonkey and its player and controls (see examples [[Sample Event Handlers script|1]] and [[Sample Events for User Interface script|2]]).&lt;br /&gt;
&lt;br /&gt;
The script &#039;&#039;Scripts\MediaMonkey init.vbs&#039;&#039; is always executed just before any other script. It contains some constants that can be used in your own script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A good and quite complex example is &#039;&#039;Scripts\Export.vbs&#039;&#039; (distributed with MediaMonkey) which contains code that takes care of all export features of MediaMonkey. For more examples, check out the [[Sample scripts|sample scripts page]] or, if you are already up to it, take a look at the code of some actively developed [http://www.mediamonkey.com/forum/viewforum.php?f=2 scripts on the forum] (most of them are distributed in [[Installation_Packages#Installation_Packages_structure|MM installation packages]]).&lt;br /&gt;
&lt;br /&gt;
More information about scripting in general can be found at [http://msdn2.microsoft.com/en-us/library/ms950396.aspx Microsoft Scripting] (with official VBScript and JScript documentation).&lt;br /&gt;
&lt;br /&gt;
== How to create an auto-script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a plain text file in the &#039;&#039;Scripts\Auto&#039;&#039; folder, e.g. &#039;&#039;MyAutoScript.vbs&#039;&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Write your VBScript script and use the procedure &#039;&#039;OnStartup&#039;&#039; as start point for execution, e.g.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Sub OnStartup&lt;br /&gt;
&lt;br /&gt;
    &#039; This script will pop up a simple &amp;quot;Hello World!&amp;quot; message box when you start MediaMonkey.&lt;br /&gt;
    MsgBox &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All VBScript, but not JScript, scripts in the &#039;&#039;Scripts\Auto&#039;&#039; folder are automatically checked during MM start-up, and the &#039;&#039;&#039;OnStartup&#039;&#039;&#039; procedure (if present) is called. Auto-scripts make it possible to add user interface enhancements such as new menu or toolbar items, new option sheets, etc.&lt;br /&gt;
&lt;br /&gt;
Except that these scripts are automatically executed when MediaMonkey starts, they behave identical as the normal scripts. They also get a reference to the SDB object, and the constants defined in &#039;&#039;Scripts\MediaMonkey init.vbs&#039;&#039; are always usable.&lt;br /&gt;
&lt;br /&gt;
You can choose to dynamically add an entry to the Scripts.ini from your code, so your script can be accessed from the Tools &amp;gt; Scripts submenu just like normal scripts. However, most auto-scripts add UI items (e.g. menu items) directly to the MediaMonkey user interface to be more tightly integrated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Format of the &#039;&#039;Scripts.ini&#039;&#039; file ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; margin-left: 1em; margin-bottom: 0.5em; clear: right; background-color:#F9F9F9; border:1px solid #CCCCCC; font-size:95%; padding:5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[AutoIncTrackN]&lt;br /&gt;
FileName=AutoIncTrackN.vbs&lt;br /&gt;
ProcName=AutoIncTrackNumbers&lt;br /&gt;
Order=1&lt;br /&gt;
DisplayName=Auto-&amp;amp;increment Track #s...&lt;br /&gt;
Description=Sequentially numbers Tracks&lt;br /&gt;
Language=VBScript&lt;br /&gt;
ScriptType=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; top: -6px; left: 5px&amp;quot;&amp;gt;Sample &#039;&#039;Scripts.ini&#039;&#039; entry&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;Scripts\Scripts.ini&#039;&#039; file is a standard .ini file where each section defines a procedure in a script. The section starts with a section identifier [SectionName], where ‘SectionName’ is a unique name of the script entry.&lt;br /&gt;
These are the entry&#039;s properties:&lt;br /&gt;
; Filename&lt;br /&gt;
: Path of a script file where the procedure is located, relative to the &#039;&#039;Scripts&#039;&#039; folder, e.g. ‘MyScripts.vbs’.&lt;br /&gt;
; ProcName&lt;br /&gt;
: Name of an existing procedure to be called when the script (specifiedby ‘Filename’) is executed in MM.&lt;br /&gt;
; ScriptType&lt;br /&gt;
: Defines type of the script:&lt;br /&gt;
:*	0 = A &#039;&#039;standard script&#039;&#039; that appears in the &amp;lt;code&amp;gt;Tools &amp;gt; Scripts&amp;lt;/code&amp;gt; submenu.&lt;br /&gt;
:*	1 = An &#039;&#039;export script&#039;&#039; that can be found in the &amp;lt;code&amp;gt;File &amp;gt; Create Reports&amp;lt;/code&amp;gt; submenu.&lt;br /&gt;
:*	2 = A &#039;&#039;track-start script&#039;&#039; that is activated whenever a new track is started. This script doesn’t appear in any menu, it’s simply called in the background. When this procedure is executed, a variable &#039;CurrentTrack&#039; (object of the [[SDBSongData]] class) is defined, and you can use it to get information about the started track. This script type is obsolete, rather register OnPlay event. Also note, that this is the only case, when multiple instances of one script can be executed by MediaMonkey, otherwise only one instance is always executed.&lt;br /&gt;
:*      3 = A &#039;&#039;search script&#039;&#039; that allows custom searches to be programmed in the &amp;quot;Auto-tag from Web&amp;quot; dialog. See [[Search scripts]] for more information about this more complex script type.&lt;br /&gt;
:*      4 = An &#039;&#039;Auto-DJ script&#039;&#039; that can handle content added by Auto-DJ. See [[Auto-DJ scripts]] for more details.&lt;br /&gt;
; Order&lt;br /&gt;
: Defines the order of the script in its section. These numbers are sorted and scripts are listed according to the order.&lt;br /&gt;
; DisplayName&lt;br /&gt;
: The script is listed as menu item with this name.&lt;br /&gt;
; Description&lt;br /&gt;
: Message shown as tooltip when the mouse is moved over the menu item.&lt;br /&gt;
; Language&lt;br /&gt;
: The script language of the referenced script. Usually &amp;lt;tt&amp;gt;VBScript&amp;lt;/tt&amp;gt;, but can be &amp;lt;tt&amp;gt;JScript&amp;lt;/tt&amp;gt; too (although this is not recommended).&lt;br /&gt;
; Shortcut&lt;br /&gt;
: Specifies a shortcut that invokes the script in MM. You can use any of the strings ‘Shift+’, ‘Ctrl+’ or ‘Alt+’, singly or combined, followed a single letter or number, or the name of a special key - BkSp, Tab, Enter, Esc, Space, PgUp, PgDn, End, Home, Left, Up, Right, Down, Ins, Del.&lt;br /&gt;
&lt;br /&gt;
== About external scripts and applications ==&lt;br /&gt;
&lt;br /&gt;
(see also [[Scripting_Tips_&amp;amp;_Tricks#Interaction_with_MediaMonkey_from_outside|Interaction with MediaMonkey from outside]])&lt;br /&gt;
&lt;br /&gt;
Besides supporting al large part of the Winamp [http://wiki.winamp.com/wiki/Plug-in_Developer plug-in model] and messages ([http://wiki.winamp.com/wiki/SendMessage_API 1],[http://forums.winamp.com/showthread.php?threadid=180297 2]), MediaMonkey exposes an API via the Microsoft COM model. This allows external applications to access and control MediaMonkey directly. These applications can be written in any language that can access COM objects. VBScript can be used to produce external scripts, but regular Visual Basic (or any COM-aware language) can be used as well, producing a full-fledged application.&lt;br /&gt;
&lt;br /&gt;
In order to work with MediaMonkey’s objects from an external script or application, you need to create a reference to the SDB object (an instance of the [[SDBApplication]] class) yourself. For .NET-based applications, you must also add a reference to MediaMonkey&#039;s COM object &amp;quot;MediaMonkey Library&amp;quot; to your Visual Studio project, so that the compiler can find MediaMonkey and the SongsDB namespace.&lt;br /&gt;
&lt;br /&gt;
If MediaMonkey is already running, creating a SDBApplication object instance will return a reference to the running instance. If MediaMonkey is not running yet, it will be started and a reference will be returned. In addition, if MediaMonkey was was not running before, it will normally shut down automatically when the external script/application exits. This can be prevented (so MediaMonkey will remain running) by setting SDB&#039;s [[ISDBApplication::ShutdownAfterDisconnect|ShutdownAfterDisconnect]] property to False.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Visual Basic / VBScript sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Dim SDB : Set SDB = CreateObject(&amp;quot;SongsDB.SDBApplication&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
SDB.ShutdownAfterDisconnect = False    &#039; in case you want to keep an opened instance open after disconnecting the SDB object&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C# sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
SongsDB.SDBApplication SDB = new SongsDB.SDBApplication();&lt;br /&gt;
&lt;br /&gt;
SDB.ShutdownAfterDisconnect = false;    // in case you want to keep an opened instance open after disconnecting the SDB object&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C++/CLI sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
SongsDB::SDBApplication^ SDB = gcnew SongsDB::SDBApplication();&lt;br /&gt;
&lt;br /&gt;
SDB-&amp;gt;ShutdownAfterDisconnect = false;    // in case you want to keep an opened instance open after disconnecting the SDB object&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delphi sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
var &lt;br /&gt;
  SDB : Variant; &lt;br /&gt;
begin &lt;br /&gt;
  SDB := CreateObject(&#039;SongsDB.SDBApplication&#039;);&lt;br /&gt;
  SDB.ShutdownAfterDisconnect := false;    // in case you want to keep an opened instance open after disconnecting the SDB object&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PHP sample:&#039;&#039;&#039; (shows initialization only)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$objSDB = new COM(&#039;SongsDB.SDBApplication&#039;) or die(&#039;Cannot create MediaMonkey SDB Object&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python (with PyWin32) sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
try:&lt;br /&gt;
      import win32com.client&lt;br /&gt;
except:&lt;br /&gt;
      print &amp;quot;Install PyWin32&amp;quot;&lt;br /&gt;
# Open connection to COM object&lt;br /&gt;
try:&lt;br /&gt;
      SDB = win32com.client.Dispatch(&amp;quot;SongsDB.SDBApplication&amp;quot;)&lt;br /&gt;
except:&lt;br /&gt;
      print &amp;quot;Is MediaMonkey up and running?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SDB.ShutdownAfterDisconnect = False&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Perl sample:&#039;&#039;&#039; (shows initialization only)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use Win32::OLE;&lt;br /&gt;
my $SDB = Win32::OLE-&amp;gt;GetActiveObject(&#039;SongsDB.SDBApplication&#039;) || Win32::OLE-&amp;gt;new(&#039;SongsDB.SDBApplication&#039;, &#039;&#039;);&lt;br /&gt;
$SDB-&amp;gt;ShutdownAfterDisconnect(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developers that require MediaMonkey type library information (e.g. for C++/Delphi, as newer languages usually don&#039;t need this) can extract this from the MediaMonkey.exe file ([http://msdn.microsoft.com/en-us/library/ms680581(v=vs.85).aspx more information]), or can use #import on the Exe file as explained in [http://msdn.microsoft.com/en-us/library/8etzzkb6(v=vs.71).aspx this MSDN page].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
* [[Scripting|Scripting main page]]&lt;br /&gt;
* [[.NET|.NET Tips page]]&lt;br /&gt;
* [http://www.mediamonkey.com/sw/MediaMonkey.idl MediaMonkey Interface Definition Language (IDL) file]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=Scripting_Tips_%26_Tricks_(MM4)&amp;diff=8725</id>
		<title>Scripting Tips &amp; Tricks (MM4)</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=Scripting_Tips_%26_Tricks_(MM4)&amp;diff=8725"/>
		<updated>2014-11-25T23:15:47Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: /* Passing arrays to MediaMonkey */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==(MediaMonkey) Scripting in general==&lt;br /&gt;
&lt;br /&gt;
=== &#039;Correctly&#039; update song properties ===&lt;br /&gt;
Using the SongData object, you can either update the database/library (UpdateDB) and/or update the file&#039;s tags (WriteTags). So there&#039;s no way to let the song changes be saved like the user selected in the Options panel (menu Tools &amp;gt; Options &amp;gt; Library &amp;gt; Tags &amp;amp; Playlists &amp;gt; &amp;quot;Update tags when editing properties&amp;quot;).&lt;br /&gt;
However, the UpdateAll method for the SongList object &#039;&#039;does&#039;&#039; take into account this user-specified option. So you can create a new SongList object using SDB.NewSongList and add your SDBSongData object(s) to it. Then call the UpdateAll method on the songlist, and your song(s) will be saved in user-specified way.&lt;br /&gt;
&lt;br /&gt;
=== See MM debug log via DebugView ===&lt;br /&gt;
You can download [http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx DebugView] directly from Microsoft. If used with the debug version of MM, lots of useful messages will be displayed in DebugView. Also, any message set via [[ISDBTools::OutputDebugStringMM]] (e.g. using &#039;&#039;&#039;SDB.Tools.OutputDebugString(&amp;quot;Test1&amp;quot;)&#039;&#039;&#039;) will also be added to that debug log.&lt;br /&gt;
&lt;br /&gt;
=== See MM Scripting interface using OLEView ===&lt;br /&gt;
MS Visual Studio contains a tool called [http://www.microsoft.com/downloads/details.aspx?familyid=5233B70D-D9B2-4CB5-AEB6-45664BE858B6&amp;amp;displaylang=en OLEView] (&amp;quot;OLE Viewer&amp;quot; or &amp;quot;OLE/COM Object Viewer&amp;quot;) ([http://download.microsoft.com/download/win2000platform/oleview/1.00.0.1/nt5/en-us/oleview_setup.exe direct link]), which can show the type library of the SongsDB object &amp;quot;MediaMonkey Library&amp;quot;. It requires the Iviewers.dll, which is not included, but can be downloaded from [http://www.dlldll.com/downdll/2757.html here] or other 3rd-party locations. There, you can see all supported properties and methods of the MediaMonkey scripting interface. This can be handy to find out new scripting methods in case that the scripting reference isn&#039;t up-to-date yet.&lt;br /&gt;
&amp;lt;br&amp;gt;The way to get there: &#039;&#039;OleView&#039;&#039; &amp;gt; Type Libraries &amp;gt; MediaMonkey Library &amp;gt; (double click)&lt;br /&gt;
&amp;lt;br&amp;gt;and then in the &#039;&#039;ITypeLib Viewer&#039;&#039; &amp;gt; SongsDB (MediaMonkey Library) &amp;gt; Interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Detecting docking of a panel ===&lt;br /&gt;
When you un(dock) a dockable panel, the OnResize event is triggered twice:&lt;br /&gt;
*Once while the panel is being (un)docked with DockedTo = 0&lt;br /&gt;
*Once after the panel has been (undocked): with DockedTo = -1 (panel undocked) or DockedTo = X (panel docked, X is the number that represents the docking position)&lt;br /&gt;
&lt;br /&gt;
=== Keep reference to Form/Panel ===&lt;br /&gt;
When you create a form or panel, always add a reference to the SDB.Objects dictionary. If you don&#039;t add it, the form/panel will be gone immediately after you created it, with or without error message. Instead of using the SDB.Objects dictionary you can also store a reference as a global script variable, in most cases.&lt;br /&gt;
&lt;br /&gt;
=== Event mechanisms ===&lt;br /&gt;
There are still 2 event mechanisms available:&lt;br /&gt;
*Using the (mostly deprecated) &#039;&#039;old event mechanism&#039;&#039; (using &#039;&#039;Control&#039;&#039;.OnClickFunc and &#039;&#039;Control&#039;&#039;.UseScript), your global variables aren&#039;t remembered in the event handlers (e.g. kind of like the script is reopened). For those scripts, you had to use &#039;&#039;ParentControl&#039;&#039;.ChildControl(&amp;quot;control name&amp;quot;) or save object references to SDB&#039;s &#039;&#039;Objects&#039;&#039; dictionary.&lt;br /&gt;
*Using the &#039;&#039;new event mechanism&#039;&#039;, your global variables &#039;&#039;are&#039;&#039; remembered so you can use their values in the event handlers. The Objects dictionary is now only necessary to communicate/store object references between different scripts.&lt;br /&gt;
So always use the new event mechanism where you can. Only for option panels (sheets) this is not yet possible. There you&#039;ll need to store values between the main program and the event handlers in SDB.Objects, in the INI or in the Registry.&lt;br /&gt;
&lt;br /&gt;
=== Internal mechanism of script loading ===&lt;br /&gt;
&lt;br /&gt;
Normally, you don&#039;t need to know much about internal handling of scripts by MediaMonkey, but sometimes it might be useful to know, when exactly scripts are loaded.&lt;br /&gt;
&lt;br /&gt;
When some function of a script is about to be executed (e.g. OnStartup function of auto-scripts), the script is loaded to memory and executed as necessary. When the execution finishes, the script is again unloaded from memory. However, there is on exception - if you register some event (by calling RegisterEvent function), the script remains still loaded in memory, until all registered events are unregistered, then it&#039;s unloaded.&lt;br /&gt;
&lt;br /&gt;
This is good to know when you plan some sharing of variables. While the script is loaded in memory, you can use its global variables, but if you need to persist some values or objects between script sessions, you have to use some other mechanism (ini files, Objects collection, ...).&lt;br /&gt;
&lt;br /&gt;
Note that starting from MediaMonkey 3.1.0.1205, there is always at most one instance of script loaded in memory. In older versions, if a script registered some events and then e.g. Option sheet functions were called back by MediaMonkey, they were processed in another instance of the script. Now they are processed in the already loaded instance, which helps avoid some memory leaks, is easier to handle and is also faster to process.&lt;br /&gt;
&lt;br /&gt;
=== Changing the current tree node ===&lt;br /&gt;
Changing the selected node from a script (using SDB.MainTree.CurrentNode = ...........) takes some time to happen, and it happens asynchronicly (the code execution doesn&#039;t wait until the node is really selected). For that reason, you can&#039;t use (get value of) SDB.MainTree.CurrentNode directly after you have assigned a new node to it (set value to), because changes won&#039;t have happened yet.&lt;br /&gt;
&lt;br /&gt;
=== Interaction with MediaMonkey from outside ===&lt;br /&gt;
There are at least three ways to interact with MediaMonkey from an external program:&lt;br /&gt;
*Open the MediaMonkey.exe program with command line options (arguments).&lt;br /&gt;
*Using the same Windows Messages (SendMessage/PostMessage) as in Winamp (WM_USER and WM_COMMAND). MM partially emulates how WinAmp works (not 100%, but very close) and so it can use WinAmp plug-ins. The class name to communicate with is &amp;quot;Winamp v1.x&amp;quot;.&lt;br /&gt;
*Using OLE Automation, which can be very easily used e.g. from VB Script.&lt;br /&gt;
*:&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim SDB : Set SDB = CreateObject(&amp;quot;SongsDB.SDBApplication&amp;quot;)&amp;lt;/source&amp;gt;&lt;br /&gt;
*:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;SongsDB.SDBApplicationClass SDB = new SongsDB.SDBApplicationClass();&amp;lt;/source&amp;gt;&lt;br /&gt;
*:Be sure to set &#039;&#039;SDB.ShutdownAfterDisconnect&#039;&#039; to &#039;&#039;False&#039;&#039; if you opened the MediaMonkey program by calling the SDB object, and you don&#039;t want it to be closed when your external program exits (or if you disconnect the SDB object = COM link).&lt;br /&gt;
&lt;br /&gt;
=== Making scripts ready for per-user installations ===&lt;br /&gt;
Starting from MediaMonkey 4.0, scripts can be (and are suggested to be) installed per-user, and so they don&#039;t have to be installed in Program Files folder, but are installed in local Windows folders. The mechanism in MM is internally made as transparent as possible, so that scripts don&#039;t have to care much about their installed location. That said, some pre-4.0 scripts might need tweaking. For example, a popular script Lyricator has &amp;gt;1000 lines, but there&#039;s only one change needed in order to get it working under local installation, namely:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim sAppPath: sAppPath = sdb.ApplicationPath &amp;amp; &amp;quot;Scripts\Lyricator\&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
needs to be changed to&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim sAppPath: sAppPath = sdb.ScriptsPath &amp;amp; &amp;quot;Lyricator\&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visual Basic Script==&lt;br /&gt;
&lt;br /&gt;
=== Index in VBScript ===&lt;br /&gt;
&lt;br /&gt;
Usually indexes start from &#039;&#039;&#039;0&#039;&#039;&#039; (e.g. for normal arrays). However, sometimes (e.g. for string positions or for [[ISDBCommonDialog::FilterIndex]]) they start from &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Code readability ===&lt;br /&gt;
&lt;br /&gt;
To maintain good readability of your scripting code, make sure to add comments where necessary, split large methods in smaller ones, use appropriate indentation (tabs or 2/3/4 spaces), and if necessary split long lines of code over several lines. To split a line of VBScript code (not text or numbers), add a &#039;&#039;space&#039;&#039; and an &#039;&#039;underscore&#039;&#039;, and continue on the next line. Don&#039;t forget the space before the underscore or it won&#039;t work.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; _&lt;br /&gt;
     &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In the third example the code is more readable, but the result is still the same: a message box with one long line of text. To split this over multiple lines, we preferably use the constant vbNewLine. If necessary, you can also use &#039;&#039;vbCr&#039;&#039; (Unix-style) or &#039;&#039;vbCrLf&#039;&#039;(Windows-style). Using these constants is more clear than using respectively &#039;&#039;Chr(13)&#039;&#039; (Unix-style) or &#039;&#039;Chr(13) &amp;amp; Chr(10)&#039;&#039; (Windows-style).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; &amp;amp; vbNewLine _&lt;br /&gt;
     &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using Flags in VBScript ===&lt;br /&gt;
&lt;br /&gt;
The concept of [[Flags]] can be a difficult for novice programmers. Click the link for an explanation of how to use them in VBScript (or Visual Basic).&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Helpful sites:&#039;&#039;&#039;&lt;br /&gt;
* [http://msdn2.microsoft.com/en-us/library/ms950396.aspx Reference for scripting resources]&lt;br /&gt;
* [http://www.microsoft.com/technet/scriptcenter/default.mspx Microsoft Script Center]&lt;br /&gt;
* [http://msdn2.microsoft.com/en-us/library/t0aew7h6.aspx VBScript User&#039;s Guide and Language Reference]&lt;br /&gt;
* [http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true VBScript Script Repository]&lt;br /&gt;
* [http://www.w3schools.com/vbscript/default.asp W3Schools VBScript learning]&lt;br /&gt;
* [http://technet.microsoft.com/en-us/library/cc498722.aspx Microsoft TechNet scripting products and technologies]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VBScript editors:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.vbsedit.com/ VBSEdit] (debugging, object and COM lookup, integrated help)&lt;br /&gt;
* [http://notepad-plus.sourceforge.net/ NotePad++]&lt;br /&gt;
* [http://www.pspad.com/ PSPad]&lt;br /&gt;
* [http://www.sapien.com/ Sapien PrimalScript]&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?familyid=2f465be0-94fd-4569-b3c4-dffdf19ccd99&amp;amp;displaylang=en Microsoft Script Debugger for Windows NT 4.0 and Later ] (debugging)&lt;br /&gt;
* [http://www.editpadpro.com/ EditPad (Pro)]&lt;br /&gt;
* [http://www.e-texteditor.com/ E-TextEditor]&lt;br /&gt;
&lt;br /&gt;
== JScript ==&lt;br /&gt;
&lt;br /&gt;
=== Passing arrays to MediaMonkey methods ===&lt;br /&gt;
&lt;br /&gt;
To the MediaMonkey COM methods accepting array as their argument you cannot simply pass native JScript array. You have to convert it to VBScript-compatible array (specifically &amp;lt;tt&amp;gt;VBSafeArray&amp;lt;/tt&amp;gt;) first. (This applies yet in MM 4.1.) One example is the [[ISDBApplication::MessageBox]] method which accepts button constants as array in an argument.&lt;br /&gt;
&lt;br /&gt;
You can use function from snippet below to JScript native array to the VBScript-compatible array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Return VBSafeArray containing items from JScript array.&lt;br /&gt;
 */&lt;br /&gt;
function array_to_vbarray(array) {&lt;br /&gt;
	var dict = new ActiveXObject(&#039;Scripting.Dictionary&#039;);&lt;br /&gt;
	for (var i = 0, len = array.length; i &amp;lt; len; i++) {&lt;br /&gt;
		dict.add(i, array[i]);&lt;br /&gt;
	}&lt;br /&gt;
	return dict.Items();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, when calling MediaMonkey methods, simply wrap the array argument with &amp;lt;tt&amp;gt;array_to_vbarray(…)&amp;lt;/tt&amp;gt; call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Display message box&lt;br /&gt;
SDB.MessageBox(&amp;quot;Simple message box from JScript with mtWarning icon and one mbOk button.&amp;quot;, 0, array_to_vbarray([4]));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adding object to SDB.Objects ===&lt;br /&gt;
&lt;br /&gt;
Object stored in [[ISDBApplication::Objects|SDB.Objects]] can be retrieved by simple method call: &amp;lt;tt&amp;gt;SDB.Objects(&#039;MyObject&#039;)&amp;lt;/tt&amp;gt;. But how to set the object at first?&lt;br /&gt;
&lt;br /&gt;
JScript has special notation for this: &amp;lt;tt&amp;gt;SDB.Objects(&#039;MyObject&#039;) = my_object&amp;lt;/tt&amp;gt;. This is not syntax error. You simply assign value to the reference returned by the method call. It works same way as in VBScript.&lt;br /&gt;
&lt;br /&gt;
=== Working with dates ===&lt;br /&gt;
&lt;br /&gt;
There are MediaMonkey COM properties of type Date (such as [[ISDBSongData::Date|Date]], [[ISDBSongData::DateAdded|DateAdded]], [[ISDBSongData::LastPlayed|LastPlayed]] in [[SDBSongData]]). When used in JScript, they require special treatment. (This applies yet in MM 4.1.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reading&#039;&#039;&#039;: Properties are not converted to native JScript &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance. You have to do it manually – cast them to string and then manually create the &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Setting&#039;&#039;&#039;: You cannot set native JScript &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance to the property. But you can set there a string in the ISO format &amp;lt;tt&amp;gt;YYYY-MM-DD HH:II:SS&amp;lt;/tt&amp;gt; (eg. &amp;lt;tt&amp;gt;2012-12-31 01:02:03&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Database &amp;amp; SQL ==&lt;br /&gt;
&lt;br /&gt;
=== Database transactions ===&lt;br /&gt;
&lt;br /&gt;
Starting from MM 3.0 transactions are often used when working with database. It can cause some problems to script authors in case they don&#039;t know some details. One example where you can face a problem is when you use [[ISDBSongData::UpdateDB]] method while you have some SQL query open. What happens in this case is, that MM wants to start a transaction, but there&#039;s still an SQL query open. This results either in an error message (in debug build) or possibly an apparent freeze of MM in the release build.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this problem, you can either:&lt;br /&gt;
* Put all these DB operations in an transaction, i.e. use [[ISDBDatabase::BeginTransaction]] and [[ISDBDatabase::Commit]].&lt;br /&gt;
* Close already running SQL queries before you call things like [[ISDBSongData::UpdateDB]].&lt;br /&gt;
&lt;br /&gt;
=== Creating complex SQL queries ===&lt;br /&gt;
To easily create complex SQL queries, you can use the Query graphical user interface in Access interface, and show the SQL code when you are done. In any case, make sure that your SQL code is organized is such a way that it can be understood easily, e.g. by putting SELECT, INSERT, FROM, ORDER BY, ... on separate lines with appropriate indentation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid SQL date problems ===&lt;br /&gt;
One of the problems with SQL is that dates are often confused, which sometimes give programming bugs. The best way to circumvent this problem is by using the format #yyyy-mm-dd# for all dates in SQL (e.g. #2006-10-31# for 31th October 2006).&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&#039;&#039;&#039;Helpful sites:&#039;&#039;&#039;&lt;br /&gt;
*[http://www.w3schools.com/sql/default.asp W3Schools SQL learning]&lt;br /&gt;
*[http://www.1keydata.com/sql/sql.html 1Keydata SQL Tutorial]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=Introduction_to_scripting&amp;diff=8724</id>
		<title>Introduction to scripting</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=Introduction_to_scripting&amp;diff=8724"/>
		<updated>2014-11-25T23:11:52Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: /* Format of the Scripts.ini file */ formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MediaMonkey can be customized through the use of custom scripts. Scripts are relatively simple computer programs written in a scripting language, such as VBScript. Unlike most computer programs, these scripts do not have to be compiled, which allows them to be tested and modified more easily than with more advanced languages. Still, writing MediaMonkey scripts can be a challenging experience so potential script writers should consider alternatives, particularly if they have little previous experience writing scripts.&lt;br /&gt;
&lt;br /&gt;
== Considerations ==&lt;br /&gt;
&lt;br /&gt;
Before writing their own scripts, users of MediaMonkey may wish to consider the following issues:&lt;br /&gt;
*In addition to supporting scripting, MediaMonkey has a [[Plug-ins|plug-in]] interface that allows a large number of Winamp and MediaMonkey plug-ins to be used. There may be no need to write a script if the desired features are already provided by a plug-in.&lt;br /&gt;
*Some users of MediaMonkey are willing to share the scripts that they have written with other users. An existing script may already provide the desired features or be relatively easily modified so that it does. The best place to find such scripts or to get support for them is the [http://www.mediamonkey.com/forum/viewforum.php?f=2 Scripts and Components forum].&lt;br /&gt;
*Although, in theory, MediaMonkey supports both of the [http://en.wikipedia.org/wiki/VBScript VBScript] (*.vbs) and [http://en.wikipedia.org/wiki/JScript JScript] (*.js) scripting languages, the implementation for JScript is only partial, so for some applications VBScript is required. Programmers not wishing to deal with VBScript may wish to create an [[#About external scripts and applications |external]] script or application using their preferred language and use a script written in VBScript (or JScript) to launch it.&lt;br /&gt;
*Other than tags embedded in media files, virtually all of MediaMonkey’s data is stored in a [http://www.sqlite.org SQLite] database from MediaMonkey version 3.0. It is possible to manipulate MediaMonkey’s data, while minimizing the use of MediaMonkey’s API, by using [http://en.wikipedia.org/wiki/SQL SQL]. MediaMonkey&#039;s API can be (almost, except string [[MediaMonkey_Database_structure#Additions_to_SQLite|collations]]) completely bypassed by using an interface provided by the underlying engine to access the database. (MediaMonkey 2.x used [http://en.wikipedia.org/wiki/Microsoft_Jet_Database_Engine Microsoft Jet] relational database. It could accessed through Jet or ODBC, or even opened directly by Microsoft Access, for example.)&lt;br /&gt;
&lt;br /&gt;
== Types of scripts ==&lt;br /&gt;
&lt;br /&gt;
There are three major types of scripts that can be launched internally by MediaMonkey:&lt;br /&gt;
*&#039;&#039;&#039;Normal scripts&#039;&#039;&#039; are located in the &#039;&#039;Scripts&#039;&#039; folder and are executed according to the script&#039;s entry in the [[#Format of the Scripts.ini file|&#039;&#039;Scripts\Scripts.ini&#039;&#039; file]].&lt;br /&gt;
*&#039;&#039;&#039;Auto-scripts&#039;&#039;&#039; are located in the &#039;&#039;Scripts\Auto&#039;&#039; folder and its OnStartup method is executed when MediaMonkey starts. If more than one script exists in the Auto folder the scripts are run in alphabetical order.&lt;br /&gt;
*&#039;&#039;&#039;Other scripts&#039;&#039;&#039;, such as [[Search scripts]] and [[Auto-DJ scripts]] are intended for specific types of customization, but are also defined in the [[#Format of the Scripts.ini file|&#039;&#039;Scripts\Scripts.ini&#039;&#039; file]].&lt;br /&gt;
&lt;br /&gt;
In addition to the scripts that are launched by MediaMonkey (internal scripts), you can also work with MediaMonkey by using [[#About external scripts and applications|&#039;&#039;external&#039;&#039; scripts and applications]].&lt;br /&gt;
&lt;br /&gt;
== How to create a normal script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a plain text file in the &#039;&#039;Scripts&#039;&#039; folder, e.g. &#039;&#039;MyNormalScript.vbs&#039;&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Write your VBScript script and make sure you have a procedure that can be called, e.g.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Sub CallMe&lt;br /&gt;
&lt;br /&gt;
    &#039; This script will pop up a simple message box when the procedure CallMe is called.&lt;br /&gt;
    MsgBox &amp;quot;CallMe was called by the action defined in the Scripts.ini file.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
End Sub&amp;lt;/source&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a new entry for your script&#039;s &#039;&#039;CallMe&#039;&#039; procedure in the [[#Format of the Scripts.ini file|&#039;&#039;Scripts.ini&#039;&#039; file]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From within a MediaMonkey script, a reference to the SDB object (an instance of the [[SDBApplication]] class) is always present. By accessing its properties and methods, you can interact with many aspects of MediaMonkey. Check out the [[MediaMonkey Automation objects]] page for other MediaMonkey objects that can be created starting from the SDB object.&lt;br /&gt;
Another available object reference is the Script object (an instance of the [[SDBScriptControl]] class), that contains methods to control the running script&#039;s environment, usually to [[ISDBScriptControl::RegisterEvent|attach]] to events of MediaMonkey and its player and controls (see examples [[Sample Event Handlers script|1]] and [[Sample Events for User Interface script|2]]).&lt;br /&gt;
&lt;br /&gt;
The script &#039;&#039;Scripts\MediaMonkey init.vbs&#039;&#039; is always executed just before any other script. It contains some constants that can be used in your own script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A good and quite complex example is &#039;&#039;Scripts\Export.vbs&#039;&#039; (distributed with MediaMonkey) which contains code that takes care of all export features of MediaMonkey. For more examples, check out the [[Sample scripts|sample scripts page]] or, if you are already up to it, take a look at the code of some actively developed [http://www.mediamonkey.com/forum/viewforum.php?f=2 scripts on the forum] (most of them are distributed in [[Installation_Packages#Installation_Packages_structure|MM installation packages]]).&lt;br /&gt;
&lt;br /&gt;
More information about scripting in general can be found at [http://msdn2.microsoft.com/en-us/library/ms950396.aspx Microsoft Scripting] (with official VBScript and JScript documentation).&lt;br /&gt;
&lt;br /&gt;
== How to create an auto-script ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a plain text file in the &#039;&#039;Scripts\Auto&#039;&#039; folder, e.g. &#039;&#039;MyAutoScript.vbs&#039;&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Write your VBScript script and use the procedure &#039;&#039;OnStartup&#039;&#039; as start point for execution, e.g.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Sub OnStartup&lt;br /&gt;
&lt;br /&gt;
    &#039; This script will pop up a simple &amp;quot;Hello World!&amp;quot; message box when you start MediaMonkey.&lt;br /&gt;
    MsgBox &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All VBScript, but not JScript, scripts in the &#039;&#039;Scripts\Auto&#039;&#039; folder are automatically checked during MM start-up, and the &#039;&#039;&#039;OnStartup&#039;&#039;&#039; procedure (if present) is called. Auto-scripts make it possible to add user interface enhancements such as new menu or toolbar items, new option sheets, etc.&lt;br /&gt;
&lt;br /&gt;
Except that these scripts are automatically executed when MediaMonkey starts, they behave identical as the normal scripts. They also get a reference to the SDB object, and the constants defined in &#039;&#039;Scripts\MediaMonkey init.vbs&#039;&#039; are always usable.&lt;br /&gt;
&lt;br /&gt;
You can choose to dynamically add an entry to the Scripts.ini from your code, so your script can be accessed from the Tools &amp;gt; Scripts submenu just like normal scripts. However, most auto-scripts add UI items (e.g. menu items) directly to the MediaMonkey user interface to be more tightly integrated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Format of the &#039;&#039;Scripts.ini&#039;&#039; file ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: right; margin-left: 1em; margin-bottom: 0.5em; clear: right; background-color:#F9F9F9; border:1px solid #CCCCCC; font-size:95%; padding:5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[AutoIncTrackN]&lt;br /&gt;
FileName=AutoIncTrackN.vbs&lt;br /&gt;
ProcName=AutoIncTrackNumbers&lt;br /&gt;
Order=1&lt;br /&gt;
DisplayName=Auto-&amp;amp;increment Track #s...&lt;br /&gt;
Description=Sequentially numbers Tracks&lt;br /&gt;
Language=VBScript&lt;br /&gt;
ScriptType=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position: relative; top: -6px; left: 5px&amp;quot;&amp;gt;Sample &#039;&#039;Scripts.ini&#039;&#039; entry&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;Scripts\Scripts.ini&#039;&#039; file is a standard .ini file where each section defines a procedure in a script. The section starts with a section identifier [SectionName], where ‘SectionName’ is a unique name of the script entry.&lt;br /&gt;
These are the entry&#039;s properties:&lt;br /&gt;
; Filename&lt;br /&gt;
: Path of a script file where the procedure is located, relative to the &#039;&#039;Scripts&#039;&#039; folder, e.g. ‘MyScripts.vbs’.&lt;br /&gt;
; ProcName&lt;br /&gt;
: Name of an existing procedure to be called when the script (specifiedby ‘Filename’) is executed in MM.&lt;br /&gt;
; ScriptType&lt;br /&gt;
: Defines type of the script:&lt;br /&gt;
:*	0 = A &#039;&#039;standard script&#039;&#039; that appears in the &amp;lt;code&amp;gt;Tools &amp;gt; Scripts&amp;lt;/code&amp;gt; submenu.&lt;br /&gt;
:*	1 = An &#039;&#039;export script&#039;&#039; that can be found in the &amp;lt;code&amp;gt;File &amp;gt; Create Reports&amp;lt;/code&amp;gt; submenu.&lt;br /&gt;
:*	2 = A &#039;&#039;track-start script&#039;&#039; that is activated whenever a new track is started. This script doesn’t appear in any menu, it’s simply called in the background. When this procedure is executed, a variable &#039;CurrentTrack&#039; (object of the [[SDBSongData]] class) is defined, and you can use it to get information about the started track. This script type is obsolete, rather register OnPlay event. Also note, that this is the only case, when multiple instances of one script can be executed by MediaMonkey, otherwise only one instance is always executed.&lt;br /&gt;
:*      3 = A &#039;&#039;search script&#039;&#039; that allows custom searches to be programmed in the &amp;quot;Auto-tag from Web&amp;quot; dialog. See [[Search scripts]] for more information about this more complex script type.&lt;br /&gt;
:*      4 = An &#039;&#039;Auto-DJ script&#039;&#039; that can handle content added by Auto-DJ. See [[Auto-DJ scripts]] for more details.&lt;br /&gt;
; Order&lt;br /&gt;
: Defines the order of the script in its section. These numbers are sorted and scripts are listed according to the order.&lt;br /&gt;
; DisplayName&lt;br /&gt;
: The script is listed as menu item with this name.&lt;br /&gt;
; Description&lt;br /&gt;
: Message shown as tooltip when the mouse is moved over the menu item.&lt;br /&gt;
; Language&lt;br /&gt;
: The script language of the referenced script. Usually &amp;lt;tt&amp;gt;VBScript&amp;lt;/tt&amp;gt;, but can be &amp;lt;tt&amp;gt;JScript&amp;lt;/tt&amp;gt; too (although this is not recommended).&lt;br /&gt;
; Shortcut&lt;br /&gt;
: Specifies a shortcut that invokes the script in MM. You can use any of the strings ‘Shift+’, ‘Ctrl+’ or ‘Alt+’, singly or combined, followed a single letter or number, or the name of a special key - BkSp, Tab, Enter, Esc, Space, PgUp, PgDn, End, Home, Left, Up, Right, Down, Ins, Del.&lt;br /&gt;
&lt;br /&gt;
== About external scripts and applications ==&lt;br /&gt;
&lt;br /&gt;
(see also [[Scripting_Tips_&amp;amp;_Tricks#Interaction_with_MediaMonkey_from_outside|Interaction with MediaMonkey from outside]])&lt;br /&gt;
&lt;br /&gt;
Besides supporting al large part of the Winamp [http://wiki.winamp.com/wiki/Plug-in_Developer plug-in model] and messages ([http://wiki.winamp.com/wiki/SendMessage_API 1],[http://forums.winamp.com/showthread.php?threadid=180297 2]), MediaMonkey exposes an API via the Microsoft COM model. This allows external applications to access and control MediaMonkey directly. These applications can be written in any language that can access COM objects. VBScript can be used to produce external scripts, but regular Visual Basic (or any COM-aware language) can be used as well, producing a full-fledged application.&lt;br /&gt;
&lt;br /&gt;
In order to work with MediaMonkey’s objects from an external script or application, you need to create a reference to the SDB object (an instance of the [[SDBApplication]] class) yourself. For .NET-based applications, you must also add a reference to MediaMonkey&#039;s COM object &amp;quot;MediaMonkey Library&amp;quot; to your Visual Studio project, so that the compiler can find MediaMonkey and the SongsDB namespace.&lt;br /&gt;
&lt;br /&gt;
If MediaMonkey is already running, creating a SDBApplication object instance will return a reference to the running instance. If MediaMonkey is not running yet, it will be started and a reference will be returned. In addition, if MediaMonkey was was not running before, it will normally shut down automatically when the external script/application exits. This can be prevented (so MediaMonkey will remain running) by setting SDB&#039;s [[ISDBApplication::ShutdownAfterDisconnect|ShutdownAfterDisconnect]] property to False.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Visual Basic / VBScript sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Dim SDB : Set SDB = CreateObject(&amp;quot;SongsDB.SDBApplication&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
SDB.ShutdownAfterDisconnect = False    &#039; in case you want to keep an opened instance open after disconnecting the SDB object&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;C# sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
SongsDB.SDBApplication SDB = new SongsDB.SDBApplication();&lt;br /&gt;
&lt;br /&gt;
SDB.ShutdownAfterDisconnect = false;    // in case you want to keep an opened instance open after disconnecting the SDB object&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C++/CLI sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
SongsDB::SDBApplication^ SDB = gcnew SongsDB::SDBApplication();&lt;br /&gt;
&lt;br /&gt;
SDB-&amp;gt;ShutdownAfterDisconnect = false;    // in case you want to keep an opened instance open after disconnecting the SDB object&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Delphi sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
var &lt;br /&gt;
  SDB : Variant; &lt;br /&gt;
begin &lt;br /&gt;
  SDB := CreateObject(&#039;SongsDB.SDBApplication&#039;);&lt;br /&gt;
  SDB.ShutdownAfterDisconnect := false;    // in case you want to keep an opened instance open after disconnecting the SDB object&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PHP sample:&#039;&#039;&#039; (shows initialization only)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$objSDB = new COM(&#039;SongsDB.SDBApplication&#039;) or die(&#039;Cannot create MediaMonkey SDB Object&#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Python (with PyWin32) sample:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
try:&lt;br /&gt;
      import win32com.client&lt;br /&gt;
except:&lt;br /&gt;
      print &amp;quot;Install PyWin32&amp;quot;&lt;br /&gt;
# Open connection to COM object&lt;br /&gt;
try:&lt;br /&gt;
      SDB = win32com.client.Dispatch(&amp;quot;SongsDB.SDBApplication&amp;quot;)&lt;br /&gt;
except:&lt;br /&gt;
      print &amp;quot;Is MediaMonkey up and running?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SDB.ShutdownAfterDisconnect = False&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Perl sample:&#039;&#039;&#039; (shows initialization only)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use Win32::OLE;&lt;br /&gt;
my $SDB = Win32::OLE-&amp;gt;GetActiveObject(&#039;SongsDB.SDBApplication&#039;) || Win32::OLE-&amp;gt;new(&#039;SongsDB.SDBApplication&#039;, &#039;&#039;);&lt;br /&gt;
$SDB-&amp;gt;ShutdownAfterDisconnect(true);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Developers that require MediaMonkey type library information (e.g. for C++/Delphi, as newer languages usually don&#039;t need this) can extract this from the MediaMonkey.exe file ([http://msdn.microsoft.com/en-us/library/ms680581(v=vs.85).aspx more information]), or can use #import on the Exe file as explained in [http://msdn.microsoft.com/en-us/library/8etzzkb6(v=vs.71).aspx this MSDN page].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
* [[Scripting|Scripting main page]]&lt;br /&gt;
* [[.NET|.NET Tips page]]&lt;br /&gt;
* [http://www.mediamonkey.com/sw/MediaMonkey.idl MediaMonkey Interface Definition Language (IDL) file]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=Scripting_Tips_%26_Tricks_(MM4)&amp;diff=8723</id>
		<title>Scripting Tips &amp; Tricks (MM4)</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=Scripting_Tips_%26_Tricks_(MM4)&amp;diff=8723"/>
		<updated>2014-11-25T23:10:24Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: /* Working with dates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==(MediaMonkey) Scripting in general==&lt;br /&gt;
&lt;br /&gt;
=== &#039;Correctly&#039; update song properties ===&lt;br /&gt;
Using the SongData object, you can either update the database/library (UpdateDB) and/or update the file&#039;s tags (WriteTags). So there&#039;s no way to let the song changes be saved like the user selected in the Options panel (menu Tools &amp;gt; Options &amp;gt; Library &amp;gt; Tags &amp;amp; Playlists &amp;gt; &amp;quot;Update tags when editing properties&amp;quot;).&lt;br /&gt;
However, the UpdateAll method for the SongList object &#039;&#039;does&#039;&#039; take into account this user-specified option. So you can create a new SongList object using SDB.NewSongList and add your SDBSongData object(s) to it. Then call the UpdateAll method on the songlist, and your song(s) will be saved in user-specified way.&lt;br /&gt;
&lt;br /&gt;
=== See MM debug log via DebugView ===&lt;br /&gt;
You can download [http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx DebugView] directly from Microsoft. If used with the debug version of MM, lots of useful messages will be displayed in DebugView. Also, any message set via [[ISDBTools::OutputDebugStringMM]] (e.g. using &#039;&#039;&#039;SDB.Tools.OutputDebugString(&amp;quot;Test1&amp;quot;)&#039;&#039;&#039;) will also be added to that debug log.&lt;br /&gt;
&lt;br /&gt;
=== See MM Scripting interface using OLEView ===&lt;br /&gt;
MS Visual Studio contains a tool called [http://www.microsoft.com/downloads/details.aspx?familyid=5233B70D-D9B2-4CB5-AEB6-45664BE858B6&amp;amp;displaylang=en OLEView] (&amp;quot;OLE Viewer&amp;quot; or &amp;quot;OLE/COM Object Viewer&amp;quot;) ([http://download.microsoft.com/download/win2000platform/oleview/1.00.0.1/nt5/en-us/oleview_setup.exe direct link]), which can show the type library of the SongsDB object &amp;quot;MediaMonkey Library&amp;quot;. It requires the Iviewers.dll, which is not included, but can be downloaded from [http://www.dlldll.com/downdll/2757.html here] or other 3rd-party locations. There, you can see all supported properties and methods of the MediaMonkey scripting interface. This can be handy to find out new scripting methods in case that the scripting reference isn&#039;t up-to-date yet.&lt;br /&gt;
&amp;lt;br&amp;gt;The way to get there: &#039;&#039;OleView&#039;&#039; &amp;gt; Type Libraries &amp;gt; MediaMonkey Library &amp;gt; (double click)&lt;br /&gt;
&amp;lt;br&amp;gt;and then in the &#039;&#039;ITypeLib Viewer&#039;&#039; &amp;gt; SongsDB (MediaMonkey Library) &amp;gt; Interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Detecting docking of a panel ===&lt;br /&gt;
When you un(dock) a dockable panel, the OnResize event is triggered twice:&lt;br /&gt;
*Once while the panel is being (un)docked with DockedTo = 0&lt;br /&gt;
*Once after the panel has been (undocked): with DockedTo = -1 (panel undocked) or DockedTo = X (panel docked, X is the number that represents the docking position)&lt;br /&gt;
&lt;br /&gt;
=== Keep reference to Form/Panel ===&lt;br /&gt;
When you create a form or panel, always add a reference to the SDB.Objects dictionary. If you don&#039;t add it, the form/panel will be gone immediately after you created it, with or without error message. Instead of using the SDB.Objects dictionary you can also store a reference as a global script variable, in most cases.&lt;br /&gt;
&lt;br /&gt;
=== Event mechanisms ===&lt;br /&gt;
There are still 2 event mechanisms available:&lt;br /&gt;
*Using the (mostly deprecated) &#039;&#039;old event mechanism&#039;&#039; (using &#039;&#039;Control&#039;&#039;.OnClickFunc and &#039;&#039;Control&#039;&#039;.UseScript), your global variables aren&#039;t remembered in the event handlers (e.g. kind of like the script is reopened). For those scripts, you had to use &#039;&#039;ParentControl&#039;&#039;.ChildControl(&amp;quot;control name&amp;quot;) or save object references to SDB&#039;s &#039;&#039;Objects&#039;&#039; dictionary.&lt;br /&gt;
*Using the &#039;&#039;new event mechanism&#039;&#039;, your global variables &#039;&#039;are&#039;&#039; remembered so you can use their values in the event handlers. The Objects dictionary is now only necessary to communicate/store object references between different scripts.&lt;br /&gt;
So always use the new event mechanism where you can. Only for option panels (sheets) this is not yet possible. There you&#039;ll need to store values between the main program and the event handlers in SDB.Objects, in the INI or in the Registry.&lt;br /&gt;
&lt;br /&gt;
=== Internal mechanism of script loading ===&lt;br /&gt;
&lt;br /&gt;
Normally, you don&#039;t need to know much about internal handling of scripts by MediaMonkey, but sometimes it might be useful to know, when exactly scripts are loaded.&lt;br /&gt;
&lt;br /&gt;
When some function of a script is about to be executed (e.g. OnStartup function of auto-scripts), the script is loaded to memory and executed as necessary. When the execution finishes, the script is again unloaded from memory. However, there is on exception - if you register some event (by calling RegisterEvent function), the script remains still loaded in memory, until all registered events are unregistered, then it&#039;s unloaded.&lt;br /&gt;
&lt;br /&gt;
This is good to know when you plan some sharing of variables. While the script is loaded in memory, you can use its global variables, but if you need to persist some values or objects between script sessions, you have to use some other mechanism (ini files, Objects collection, ...).&lt;br /&gt;
&lt;br /&gt;
Note that starting from MediaMonkey 3.1.0.1205, there is always at most one instance of script loaded in memory. In older versions, if a script registered some events and then e.g. Option sheet functions were called back by MediaMonkey, they were processed in another instance of the script. Now they are processed in the already loaded instance, which helps avoid some memory leaks, is easier to handle and is also faster to process.&lt;br /&gt;
&lt;br /&gt;
=== Changing the current tree node ===&lt;br /&gt;
Changing the selected node from a script (using SDB.MainTree.CurrentNode = ...........) takes some time to happen, and it happens asynchronicly (the code execution doesn&#039;t wait until the node is really selected). For that reason, you can&#039;t use (get value of) SDB.MainTree.CurrentNode directly after you have assigned a new node to it (set value to), because changes won&#039;t have happened yet.&lt;br /&gt;
&lt;br /&gt;
=== Interaction with MediaMonkey from outside ===&lt;br /&gt;
There are at least three ways to interact with MediaMonkey from an external program:&lt;br /&gt;
*Open the MediaMonkey.exe program with command line options (arguments).&lt;br /&gt;
*Using the same Windows Messages (SendMessage/PostMessage) as in Winamp (WM_USER and WM_COMMAND). MM partially emulates how WinAmp works (not 100%, but very close) and so it can use WinAmp plug-ins. The class name to communicate with is &amp;quot;Winamp v1.x&amp;quot;.&lt;br /&gt;
*Using OLE Automation, which can be very easily used e.g. from VB Script.&lt;br /&gt;
*:&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim SDB : Set SDB = CreateObject(&amp;quot;SongsDB.SDBApplication&amp;quot;)&amp;lt;/source&amp;gt;&lt;br /&gt;
*:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;SongsDB.SDBApplicationClass SDB = new SongsDB.SDBApplicationClass();&amp;lt;/source&amp;gt;&lt;br /&gt;
*:Be sure to set &#039;&#039;SDB.ShutdownAfterDisconnect&#039;&#039; to &#039;&#039;False&#039;&#039; if you opened the MediaMonkey program by calling the SDB object, and you don&#039;t want it to be closed when your external program exits (or if you disconnect the SDB object = COM link).&lt;br /&gt;
&lt;br /&gt;
=== Making scripts ready for per-user installations ===&lt;br /&gt;
Starting from MediaMonkey 4.0, scripts can be (and are suggested to be) installed per-user, and so they don&#039;t have to be installed in Program Files folder, but are installed in local Windows folders. The mechanism in MM is internally made as transparent as possible, so that scripts don&#039;t have to care much about their installed location. That said, some pre-4.0 scripts might need tweaking. For example, a popular script Lyricator has &amp;gt;1000 lines, but there&#039;s only one change needed in order to get it working under local installation, namely:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim sAppPath: sAppPath = sdb.ApplicationPath &amp;amp; &amp;quot;Scripts\Lyricator\&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
needs to be changed to&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim sAppPath: sAppPath = sdb.ScriptsPath &amp;amp; &amp;quot;Lyricator\&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visual Basic Script==&lt;br /&gt;
&lt;br /&gt;
=== Index in VBScript ===&lt;br /&gt;
&lt;br /&gt;
Usually indexes start from &#039;&#039;&#039;0&#039;&#039;&#039; (e.g. for normal arrays). However, sometimes (e.g. for string positions or for [[ISDBCommonDialog::FilterIndex]]) they start from &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Code readability ===&lt;br /&gt;
&lt;br /&gt;
To maintain good readability of your scripting code, make sure to add comments where necessary, split large methods in smaller ones, use appropriate indentation (tabs or 2/3/4 spaces), and if necessary split long lines of code over several lines. To split a line of VBScript code (not text or numbers), add a &#039;&#039;space&#039;&#039; and an &#039;&#039;underscore&#039;&#039;, and continue on the next line. Don&#039;t forget the space before the underscore or it won&#039;t work.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; _&lt;br /&gt;
     &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In the third example the code is more readable, but the result is still the same: a message box with one long line of text. To split this over multiple lines, we preferably use the constant vbNewLine. If necessary, you can also use &#039;&#039;vbCr&#039;&#039; (Unix-style) or &#039;&#039;vbCrLf&#039;&#039;(Windows-style). Using these constants is more clear than using respectively &#039;&#039;Chr(13)&#039;&#039; (Unix-style) or &#039;&#039;Chr(13) &amp;amp; Chr(10)&#039;&#039; (Windows-style).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; &amp;amp; vbNewLine _&lt;br /&gt;
     &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using Flags in VBScript ===&lt;br /&gt;
&lt;br /&gt;
The concept of [[Flags]] can be a difficult for novice programmers. Click the link for an explanation of how to use them in VBScript (or Visual Basic).&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Helpful sites:&#039;&#039;&#039;&lt;br /&gt;
* [http://msdn2.microsoft.com/en-us/library/ms950396.aspx Reference for scripting resources]&lt;br /&gt;
* [http://www.microsoft.com/technet/scriptcenter/default.mspx Microsoft Script Center]&lt;br /&gt;
* [http://msdn2.microsoft.com/en-us/library/t0aew7h6.aspx VBScript User&#039;s Guide and Language Reference]&lt;br /&gt;
* [http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true VBScript Script Repository]&lt;br /&gt;
* [http://www.w3schools.com/vbscript/default.asp W3Schools VBScript learning]&lt;br /&gt;
* [http://technet.microsoft.com/en-us/library/cc498722.aspx Microsoft TechNet scripting products and technologies]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VBScript editors:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.vbsedit.com/ VBSEdit] (debugging, object and COM lookup, integrated help)&lt;br /&gt;
* [http://notepad-plus.sourceforge.net/ NotePad++]&lt;br /&gt;
* [http://www.pspad.com/ PSPad]&lt;br /&gt;
* [http://www.sapien.com/ Sapien PrimalScript]&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?familyid=2f465be0-94fd-4569-b3c4-dffdf19ccd99&amp;amp;displaylang=en Microsoft Script Debugger for Windows NT 4.0 and Later ] (debugging)&lt;br /&gt;
* [http://www.editpadpro.com/ EditPad (Pro)]&lt;br /&gt;
* [http://www.e-texteditor.com/ E-TextEditor]&lt;br /&gt;
&lt;br /&gt;
== JScript ==&lt;br /&gt;
&lt;br /&gt;
=== Passing arrays to MediaMonkey ===&lt;br /&gt;
&lt;br /&gt;
When calling MediaMonkey COM methods which accept array as their argument, you cannot simply pass native JScript array to them. You have to convert them to VBScript-compatible array (specifically &amp;lt;tt&amp;gt;VBSafeArray&amp;lt;/tt&amp;gt;). (This applies yet in MM 4.1.) One of these methods is [[ISDBApplication::MessageBox]] which takes array of button constants to display.&lt;br /&gt;
&lt;br /&gt;
You can use function from snippet below to JScript native array to the VBScript-compatible array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Return VBSafeArray containing items from JScript array.&lt;br /&gt;
 */&lt;br /&gt;
function array_to_vbarray(array) {&lt;br /&gt;
	var dict = new ActiveXObject(&#039;Scripting.Dictionary&#039;);&lt;br /&gt;
	for (var i = 0, len = array.length; i &amp;lt; len; i++) {&lt;br /&gt;
		dict.add(i, array[i]);&lt;br /&gt;
	}&lt;br /&gt;
	return dict.Items();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, when calling MediaMonkey methods, simply wrap the array argument with &amp;lt;tt&amp;gt;array_to_vbarray(…)&amp;lt;/tt&amp;gt; call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Display message box&lt;br /&gt;
SDB.MessageBox(&amp;quot;Simple message box from JScript with mtWarning icon and one mbOk button.&amp;quot;, 0, array_to_vbarray([4]));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adding object to SDB.Objects ===&lt;br /&gt;
&lt;br /&gt;
Object stored in [[ISDBApplication::Objects|SDB.Objects]] can be retrieved by simple method call: &amp;lt;tt&amp;gt;SDB.Objects(&#039;MyObject&#039;)&amp;lt;/tt&amp;gt;. But how to set the object at first?&lt;br /&gt;
&lt;br /&gt;
JScript has special notation for this: &amp;lt;tt&amp;gt;SDB.Objects(&#039;MyObject&#039;) = my_object&amp;lt;/tt&amp;gt;. This is not syntax error. You simply assign value to the reference returned by the method call. It works same way as in VBScript.&lt;br /&gt;
&lt;br /&gt;
=== Working with dates ===&lt;br /&gt;
&lt;br /&gt;
There are MediaMonkey COM properties of type Date (such as [[ISDBSongData::Date|Date]], [[ISDBSongData::DateAdded|DateAdded]], [[ISDBSongData::LastPlayed|LastPlayed]] in [[SDBSongData]]). When used in JScript, they require special treatment. (This applies yet in MM 4.1.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reading&#039;&#039;&#039;: Properties are not converted to native JScript &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance. You have to do it manually – cast them to string and then manually create the &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Setting&#039;&#039;&#039;: You cannot set native JScript &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance to the property. But you can set there a string in the ISO format &amp;lt;tt&amp;gt;YYYY-MM-DD HH:II:SS&amp;lt;/tt&amp;gt; (eg. &amp;lt;tt&amp;gt;2012-12-31 01:02:03&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Database &amp;amp; SQL ==&lt;br /&gt;
&lt;br /&gt;
=== Database transactions ===&lt;br /&gt;
&lt;br /&gt;
Starting from MM 3.0 transactions are often used when working with database. It can cause some problems to script authors in case they don&#039;t know some details. One example where you can face a problem is when you use [[ISDBSongData::UpdateDB]] method while you have some SQL query open. What happens in this case is, that MM wants to start a transaction, but there&#039;s still an SQL query open. This results either in an error message (in debug build) or possibly an apparent freeze of MM in the release build.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this problem, you can either:&lt;br /&gt;
* Put all these DB operations in an transaction, i.e. use [[ISDBDatabase::BeginTransaction]] and [[ISDBDatabase::Commit]].&lt;br /&gt;
* Close already running SQL queries before you call things like [[ISDBSongData::UpdateDB]].&lt;br /&gt;
&lt;br /&gt;
=== Creating complex SQL queries ===&lt;br /&gt;
To easily create complex SQL queries, you can use the Query graphical user interface in Access interface, and show the SQL code when you are done. In any case, make sure that your SQL code is organized is such a way that it can be understood easily, e.g. by putting SELECT, INSERT, FROM, ORDER BY, ... on separate lines with appropriate indentation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid SQL date problems ===&lt;br /&gt;
One of the problems with SQL is that dates are often confused, which sometimes give programming bugs. The best way to circumvent this problem is by using the format #yyyy-mm-dd# for all dates in SQL (e.g. #2006-10-31# for 31th October 2006).&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&#039;&#039;&#039;Helpful sites:&#039;&#039;&#039;&lt;br /&gt;
*[http://www.w3schools.com/sql/default.asp W3Schools SQL learning]&lt;br /&gt;
*[http://www.1keydata.com/sql/sql.html 1Keydata SQL Tutorial]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=Scripting_Tips_%26_Tricks_(MM4)&amp;diff=8722</id>
		<title>Scripting Tips &amp; Tricks (MM4)</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=Scripting_Tips_%26_Tricks_(MM4)&amp;diff=8722"/>
		<updated>2014-11-25T23:07:12Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: /* Passing arrays to MediaMonkey */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==(MediaMonkey) Scripting in general==&lt;br /&gt;
&lt;br /&gt;
=== &#039;Correctly&#039; update song properties ===&lt;br /&gt;
Using the SongData object, you can either update the database/library (UpdateDB) and/or update the file&#039;s tags (WriteTags). So there&#039;s no way to let the song changes be saved like the user selected in the Options panel (menu Tools &amp;gt; Options &amp;gt; Library &amp;gt; Tags &amp;amp; Playlists &amp;gt; &amp;quot;Update tags when editing properties&amp;quot;).&lt;br /&gt;
However, the UpdateAll method for the SongList object &#039;&#039;does&#039;&#039; take into account this user-specified option. So you can create a new SongList object using SDB.NewSongList and add your SDBSongData object(s) to it. Then call the UpdateAll method on the songlist, and your song(s) will be saved in user-specified way.&lt;br /&gt;
&lt;br /&gt;
=== See MM debug log via DebugView ===&lt;br /&gt;
You can download [http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx DebugView] directly from Microsoft. If used with the debug version of MM, lots of useful messages will be displayed in DebugView. Also, any message set via [[ISDBTools::OutputDebugStringMM]] (e.g. using &#039;&#039;&#039;SDB.Tools.OutputDebugString(&amp;quot;Test1&amp;quot;)&#039;&#039;&#039;) will also be added to that debug log.&lt;br /&gt;
&lt;br /&gt;
=== See MM Scripting interface using OLEView ===&lt;br /&gt;
MS Visual Studio contains a tool called [http://www.microsoft.com/downloads/details.aspx?familyid=5233B70D-D9B2-4CB5-AEB6-45664BE858B6&amp;amp;displaylang=en OLEView] (&amp;quot;OLE Viewer&amp;quot; or &amp;quot;OLE/COM Object Viewer&amp;quot;) ([http://download.microsoft.com/download/win2000platform/oleview/1.00.0.1/nt5/en-us/oleview_setup.exe direct link]), which can show the type library of the SongsDB object &amp;quot;MediaMonkey Library&amp;quot;. It requires the Iviewers.dll, which is not included, but can be downloaded from [http://www.dlldll.com/downdll/2757.html here] or other 3rd-party locations. There, you can see all supported properties and methods of the MediaMonkey scripting interface. This can be handy to find out new scripting methods in case that the scripting reference isn&#039;t up-to-date yet.&lt;br /&gt;
&amp;lt;br&amp;gt;The way to get there: &#039;&#039;OleView&#039;&#039; &amp;gt; Type Libraries &amp;gt; MediaMonkey Library &amp;gt; (double click)&lt;br /&gt;
&amp;lt;br&amp;gt;and then in the &#039;&#039;ITypeLib Viewer&#039;&#039; &amp;gt; SongsDB (MediaMonkey Library) &amp;gt; Interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Detecting docking of a panel ===&lt;br /&gt;
When you un(dock) a dockable panel, the OnResize event is triggered twice:&lt;br /&gt;
*Once while the panel is being (un)docked with DockedTo = 0&lt;br /&gt;
*Once after the panel has been (undocked): with DockedTo = -1 (panel undocked) or DockedTo = X (panel docked, X is the number that represents the docking position)&lt;br /&gt;
&lt;br /&gt;
=== Keep reference to Form/Panel ===&lt;br /&gt;
When you create a form or panel, always add a reference to the SDB.Objects dictionary. If you don&#039;t add it, the form/panel will be gone immediately after you created it, with or without error message. Instead of using the SDB.Objects dictionary you can also store a reference as a global script variable, in most cases.&lt;br /&gt;
&lt;br /&gt;
=== Event mechanisms ===&lt;br /&gt;
There are still 2 event mechanisms available:&lt;br /&gt;
*Using the (mostly deprecated) &#039;&#039;old event mechanism&#039;&#039; (using &#039;&#039;Control&#039;&#039;.OnClickFunc and &#039;&#039;Control&#039;&#039;.UseScript), your global variables aren&#039;t remembered in the event handlers (e.g. kind of like the script is reopened). For those scripts, you had to use &#039;&#039;ParentControl&#039;&#039;.ChildControl(&amp;quot;control name&amp;quot;) or save object references to SDB&#039;s &#039;&#039;Objects&#039;&#039; dictionary.&lt;br /&gt;
*Using the &#039;&#039;new event mechanism&#039;&#039;, your global variables &#039;&#039;are&#039;&#039; remembered so you can use their values in the event handlers. The Objects dictionary is now only necessary to communicate/store object references between different scripts.&lt;br /&gt;
So always use the new event mechanism where you can. Only for option panels (sheets) this is not yet possible. There you&#039;ll need to store values between the main program and the event handlers in SDB.Objects, in the INI or in the Registry.&lt;br /&gt;
&lt;br /&gt;
=== Internal mechanism of script loading ===&lt;br /&gt;
&lt;br /&gt;
Normally, you don&#039;t need to know much about internal handling of scripts by MediaMonkey, but sometimes it might be useful to know, when exactly scripts are loaded.&lt;br /&gt;
&lt;br /&gt;
When some function of a script is about to be executed (e.g. OnStartup function of auto-scripts), the script is loaded to memory and executed as necessary. When the execution finishes, the script is again unloaded from memory. However, there is on exception - if you register some event (by calling RegisterEvent function), the script remains still loaded in memory, until all registered events are unregistered, then it&#039;s unloaded.&lt;br /&gt;
&lt;br /&gt;
This is good to know when you plan some sharing of variables. While the script is loaded in memory, you can use its global variables, but if you need to persist some values or objects between script sessions, you have to use some other mechanism (ini files, Objects collection, ...).&lt;br /&gt;
&lt;br /&gt;
Note that starting from MediaMonkey 3.1.0.1205, there is always at most one instance of script loaded in memory. In older versions, if a script registered some events and then e.g. Option sheet functions were called back by MediaMonkey, they were processed in another instance of the script. Now they are processed in the already loaded instance, which helps avoid some memory leaks, is easier to handle and is also faster to process.&lt;br /&gt;
&lt;br /&gt;
=== Changing the current tree node ===&lt;br /&gt;
Changing the selected node from a script (using SDB.MainTree.CurrentNode = ...........) takes some time to happen, and it happens asynchronicly (the code execution doesn&#039;t wait until the node is really selected). For that reason, you can&#039;t use (get value of) SDB.MainTree.CurrentNode directly after you have assigned a new node to it (set value to), because changes won&#039;t have happened yet.&lt;br /&gt;
&lt;br /&gt;
=== Interaction with MediaMonkey from outside ===&lt;br /&gt;
There are at least three ways to interact with MediaMonkey from an external program:&lt;br /&gt;
*Open the MediaMonkey.exe program with command line options (arguments).&lt;br /&gt;
*Using the same Windows Messages (SendMessage/PostMessage) as in Winamp (WM_USER and WM_COMMAND). MM partially emulates how WinAmp works (not 100%, but very close) and so it can use WinAmp plug-ins. The class name to communicate with is &amp;quot;Winamp v1.x&amp;quot;.&lt;br /&gt;
*Using OLE Automation, which can be very easily used e.g. from VB Script.&lt;br /&gt;
*:&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim SDB : Set SDB = CreateObject(&amp;quot;SongsDB.SDBApplication&amp;quot;)&amp;lt;/source&amp;gt;&lt;br /&gt;
*:&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;SongsDB.SDBApplicationClass SDB = new SongsDB.SDBApplicationClass();&amp;lt;/source&amp;gt;&lt;br /&gt;
*:Be sure to set &#039;&#039;SDB.ShutdownAfterDisconnect&#039;&#039; to &#039;&#039;False&#039;&#039; if you opened the MediaMonkey program by calling the SDB object, and you don&#039;t want it to be closed when your external program exits (or if you disconnect the SDB object = COM link).&lt;br /&gt;
&lt;br /&gt;
=== Making scripts ready for per-user installations ===&lt;br /&gt;
Starting from MediaMonkey 4.0, scripts can be (and are suggested to be) installed per-user, and so they don&#039;t have to be installed in Program Files folder, but are installed in local Windows folders. The mechanism in MM is internally made as transparent as possible, so that scripts don&#039;t have to care much about their installed location. That said, some pre-4.0 scripts might need tweaking. For example, a popular script Lyricator has &amp;gt;1000 lines, but there&#039;s only one change needed in order to get it working under local installation, namely:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim sAppPath: sAppPath = sdb.ApplicationPath &amp;amp; &amp;quot;Scripts\Lyricator\&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
needs to be changed to&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;Dim sAppPath: sAppPath = sdb.ScriptsPath &amp;amp; &amp;quot;Lyricator\&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visual Basic Script==&lt;br /&gt;
&lt;br /&gt;
=== Index in VBScript ===&lt;br /&gt;
&lt;br /&gt;
Usually indexes start from &#039;&#039;&#039;0&#039;&#039;&#039; (e.g. for normal arrays). However, sometimes (e.g. for string positions or for [[ISDBCommonDialog::FilterIndex]]) they start from &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Code readability ===&lt;br /&gt;
&lt;br /&gt;
To maintain good readability of your scripting code, make sure to add comments where necessary, split large methods in smaller ones, use appropriate indentation (tabs or 2/3/4 spaces), and if necessary split long lines of code over several lines. To split a line of VBScript code (not text or numbers), add a &#039;&#039;space&#039;&#039; and an &#039;&#039;underscore&#039;&#039;, and continue on the next line. Don&#039;t forget the space before the underscore or it won&#039;t work.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; _&lt;br /&gt;
     &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In the third example the code is more readable, but the result is still the same: a message box with one long line of text. To split this over multiple lines, we preferably use the constant vbNewLine. If necessary, you can also use &#039;&#039;vbCr&#039;&#039; (Unix-style) or &#039;&#039;vbCrLf&#039;&#039;(Windows-style). Using these constants is more clear than using respectively &#039;&#039;Chr(13)&#039;&#039; (Unix-style) or &#039;&#039;Chr(13) &amp;amp; Chr(10)&#039;&#039; (Windows-style).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
MsgBox &amp;quot;This is quite a long text to display on one single line&amp;quot; &amp;amp; vbNewLine _&lt;br /&gt;
     &amp;amp; &amp;quot; and for readability we better split it on multiple lines&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using Flags in VBScript ===&lt;br /&gt;
&lt;br /&gt;
The concept of [[Flags]] can be a difficult for novice programmers. Click the link for an explanation of how to use them in VBScript (or Visual Basic).&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Helpful sites:&#039;&#039;&#039;&lt;br /&gt;
* [http://msdn2.microsoft.com/en-us/library/ms950396.aspx Reference for scripting resources]&lt;br /&gt;
* [http://www.microsoft.com/technet/scriptcenter/default.mspx Microsoft Script Center]&lt;br /&gt;
* [http://msdn2.microsoft.com/en-us/library/t0aew7h6.aspx VBScript User&#039;s Guide and Language Reference]&lt;br /&gt;
* [http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true VBScript Script Repository]&lt;br /&gt;
* [http://www.w3schools.com/vbscript/default.asp W3Schools VBScript learning]&lt;br /&gt;
* [http://technet.microsoft.com/en-us/library/cc498722.aspx Microsoft TechNet scripting products and technologies]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;VBScript editors:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.vbsedit.com/ VBSEdit] (debugging, object and COM lookup, integrated help)&lt;br /&gt;
* [http://notepad-plus.sourceforge.net/ NotePad++]&lt;br /&gt;
* [http://www.pspad.com/ PSPad]&lt;br /&gt;
* [http://www.sapien.com/ Sapien PrimalScript]&lt;br /&gt;
* [http://www.microsoft.com/downloads/details.aspx?familyid=2f465be0-94fd-4569-b3c4-dffdf19ccd99&amp;amp;displaylang=en Microsoft Script Debugger for Windows NT 4.0 and Later ] (debugging)&lt;br /&gt;
* [http://www.editpadpro.com/ EditPad (Pro)]&lt;br /&gt;
* [http://www.e-texteditor.com/ E-TextEditor]&lt;br /&gt;
&lt;br /&gt;
== JScript ==&lt;br /&gt;
&lt;br /&gt;
=== Passing arrays to MediaMonkey ===&lt;br /&gt;
&lt;br /&gt;
When calling MediaMonkey COM methods which accept array as their argument, you cannot simply pass native JScript array to them. You have to convert them to VBScript-compatible array (specifically &amp;lt;tt&amp;gt;VBSafeArray&amp;lt;/tt&amp;gt;). (This applies yet in MM 4.1.) One of these methods is [[ISDBApplication::MessageBox]] which takes array of button constants to display.&lt;br /&gt;
&lt;br /&gt;
You can use function from snippet below to JScript native array to the VBScript-compatible array.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Return VBSafeArray containing items from JScript array.&lt;br /&gt;
 */&lt;br /&gt;
function array_to_vbarray(array) {&lt;br /&gt;
	var dict = new ActiveXObject(&#039;Scripting.Dictionary&#039;);&lt;br /&gt;
	for (var i = 0, len = array.length; i &amp;lt; len; i++) {&lt;br /&gt;
		dict.add(i, array[i]);&lt;br /&gt;
	}&lt;br /&gt;
	return dict.Items();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then, when calling MediaMonkey methods, simply wrap the array argument with &amp;lt;tt&amp;gt;array_to_vbarray(…)&amp;lt;/tt&amp;gt; call:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Display message box&lt;br /&gt;
SDB.MessageBox(&amp;quot;Simple message box from JScript with mtWarning icon and one mbOk button.&amp;quot;, 0, array_to_vbarray([4]));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working with dates ===&lt;br /&gt;
&lt;br /&gt;
There are MediaMonkey COM properties of type Date (such as [[ISDBSongData::Date|Date]], [[ISDBSongData::DateAdded|DateAdded]], [[ISDBSongData::LastPlayed|LastPlayed]] in [[SDBSongData]]). When used in JScript, they require special treatment. (This applies yet in MM 4.1.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reading&#039;&#039;&#039;: Properties are not converted to native JScript &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance. You have to do it manually – cast them to string and then manually create the &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Setting&#039;&#039;&#039;: You cannot set native JScript &amp;lt;tt&amp;gt;Date&amp;lt;/tt&amp;gt; instance to the property. But you can set there a string in the ISO format &amp;lt;tt&amp;gt;YYYY-MM-DD HH:II:SS&amp;lt;/tt&amp;gt; (eg. &amp;lt;tt&amp;gt;2012-12-31 01:02:03&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Database &amp;amp; SQL ==&lt;br /&gt;
&lt;br /&gt;
=== Database transactions ===&lt;br /&gt;
&lt;br /&gt;
Starting from MM 3.0 transactions are often used when working with database. It can cause some problems to script authors in case they don&#039;t know some details. One example where you can face a problem is when you use [[ISDBSongData::UpdateDB]] method while you have some SQL query open. What happens in this case is, that MM wants to start a transaction, but there&#039;s still an SQL query open. This results either in an error message (in debug build) or possibly an apparent freeze of MM in the release build.&lt;br /&gt;
&lt;br /&gt;
In order to prevent this problem, you can either:&lt;br /&gt;
* Put all these DB operations in an transaction, i.e. use [[ISDBDatabase::BeginTransaction]] and [[ISDBDatabase::Commit]].&lt;br /&gt;
* Close already running SQL queries before you call things like [[ISDBSongData::UpdateDB]].&lt;br /&gt;
&lt;br /&gt;
=== Creating complex SQL queries ===&lt;br /&gt;
To easily create complex SQL queries, you can use the Query graphical user interface in Access interface, and show the SQL code when you are done. In any case, make sure that your SQL code is organized is such a way that it can be understood easily, e.g. by putting SELECT, INSERT, FROM, ORDER BY, ... on separate lines with appropriate indentation.&lt;br /&gt;
&lt;br /&gt;
=== Avoid SQL date problems ===&lt;br /&gt;
One of the problems with SQL is that dates are often confused, which sometimes give programming bugs. The best way to circumvent this problem is by using the format #yyyy-mm-dd# for all dates in SQL (e.g. #2006-10-31# for 31th October 2006).&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
&#039;&#039;&#039;Helpful sites:&#039;&#039;&#039;&lt;br /&gt;
*[http://www.w3schools.com/sql/default.asp W3Schools SQL learning]&lt;br /&gt;
*[http://www.1keydata.com/sql/sql.html 1Keydata SQL Tutorial]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::MessageBox&amp;diff=8721</id>
		<title>ISDBApplication::MessageBox</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::MessageBox&amp;diff=8721"/>
		<updated>2014-11-25T23:06:46Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: /* See Also */ Added note re JScript arrays.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBApplication|ISDBApplication|Function MessageBox(MessageText As String, MsgType As EnumMsgBox, Buttons) As Long}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |MessageText |String |Text to be shown in the message box.&lt;br /&gt;
 |MsgType |EnumMsgBox |Type of the box. Can be one of constants described below.&lt;br /&gt;
 |Buttons |Variant |Array of buttons to be shown, can be any constants described below.}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Shows a customized message box and returns information about button that was pressed, which can be one of the following values:&lt;br /&gt;
mrNone(0), mrOk(1), mrCancel(2), mrAbort(3), mrRetry(4), mrIgnore(5), mrYes(6), mrNo(7), mrAll(8), mrNoToAll(9), mrYesToAll(10), mrOkToAll(110) or mrIgnoreToAll(111).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MsgType constants:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: mtWarning – Icon with yellow exclamation. Use to present a condition that might cause a problem in the future.&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: mtError – Icon with red cross. Use to present an error or problem that has occurred.&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: mtInformation – Icon with small letter „i“. Use to present an useful information.&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: mtConfirmation – Question mark icon. Use to ask user for input.&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: mtCustom – No icon is shown.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Button constants:&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: mbYes&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: mbYesToAll&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: mbNo&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: mbNoToAll&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: mbOk&lt;br /&gt;
* &#039;&#039;&#039;5&#039;&#039;&#039;: mbOkToAll&lt;br /&gt;
* &#039;&#039;&#039;6&#039;&#039;&#039;: mbEdit&lt;br /&gt;
* &#039;&#039;&#039;7&#039;&#039;&#039;: mbEditToAll&lt;br /&gt;
* &#039;&#039;&#039;8&#039;&#039;&#039;: mbCancel&lt;br /&gt;
* &#039;&#039;&#039;9&#039;&#039;&#039;: mbAbort&lt;br /&gt;
* &#039;&#039;&#039;10&#039;&#039;&#039;: mbRetry&lt;br /&gt;
* &#039;&#039;&#039;11&#039;&#039;&#039;: mbIgnore&lt;br /&gt;
* &#039;&#039;&#039;12&#039;&#039;&#039;: mbIgnoreToAll&lt;br /&gt;
* &#039;&#039;&#039;13&#039;&#039;&#039;: mbAll&lt;br /&gt;
* &#039;&#039;&#039;14&#039;&#039;&#039;: mbHelp&lt;br /&gt;
&lt;br /&gt;
===Example code===                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;res = SDB.MessageBox( SDB.Localize(&amp;quot;Select tracks to be exported, please.&amp;quot;), mtError, Array(mbOk))&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===JScript note===&lt;br /&gt;
&lt;br /&gt;
Passed array of buttons must be of special &amp;lt;tt&amp;gt;VBSafeArray&amp;lt;/tt&amp;gt;. Read more about in [[Scripting Tips &amp;amp; Tricks#JScript|Tips &amp;amp; Tricks – JScript section]].&lt;br /&gt;
===See Also===&lt;br /&gt;
*[http://msdn.microsoft.com/en-us/library/windows/desktop/aa511277.aspx MSDN – Windows UX Guidelines for Message Boxes]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBApplication|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBApplication|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::Objects&amp;diff=8720</id>
		<title>ISDBApplication::Objects</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::Objects&amp;diff=8720"/>
		<updated>2014-11-25T23:03:20Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: /* Example JScript code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBApplication|ISDBApplication|Property Get/Let Objects(Name As String) As Object}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |Name |String |An identifier for object storage.}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
A collection for temporary storage of any type of object during MediaMonkey running time. For example if a window is created by script that should remain visible while the script isn&#039;t running, the window object can be put into this collection in order to keep a reference to it. The keys of this collection are strings, the values can be only objects.&lt;br /&gt;
&lt;br /&gt;
Some MediaMonkey objects are destroyed when last reference to them is deleted (such as [[SDBUIForm|form]] or [[SDBProgress|progress bar]]). In JScript there may be a delay between last reference removal and object disposal. In this case you might want to consider calling [http://msdn.microsoft.com/en-us/library/ff955348%28v=vs.85%29.aspx CollectGarbage()] method to tell the interpret to dispose objects right now.&lt;br /&gt;
&lt;br /&gt;
===Example VBScript code===                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;If SDB.Objects(&amp;quot;MyWindowRef&amp;quot;) Is Nothing Then    &#039; If the object isn&#039;t in collection yet...&lt;br /&gt;
  Set SDB.Objects(&amp;quot;MyWindowRef&amp;quot;) = MyWindow      &#039; ... add it to the collection (using Set for objects)...&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&#039; Some code here&lt;br /&gt;
&lt;br /&gt;
SDB.Objects(&amp;quot;MyWindowRef&amp;quot;) = Nothing             &#039;  ... and now remove it from the collection.&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example JScript code ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!SDB.Objects(&#039;MyWindowRef&#039;)) { // If the object isn&#039;t in collection yet...&lt;br /&gt;
  SDB.Objects(&#039;MyWindowRef&#039;) = my_window; // add it to the collection.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To release the object from global storage, you cannot call &amp;lt;tt&amp;gt;delete SDB.Objects(&#039;MyWindowRef&#039;)&amp;lt;/tt&amp;gt;, but you have to reassing the value. For example with &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt;. However note that the object &#039;&#039;&#039;may&#039;&#039;&#039; be destroyed when there are &#039;&#039;&#039;no&#039;&#039;&#039; references left (thus SDB.Objects was the last one holding the object). If you want to destroy the object right now, consider calling &amp;lt;tt&amp;gt;CollectGarbage()&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
SDB.Objects(&#039;MyWindowRef&#039;) = null; // Release instance from the collection.&lt;br /&gt;
CollectGarbage(); // Consider calling garbage collector when needing object disposal right now.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBApplication|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBApplication|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::Objects&amp;diff=8719</id>
		<title>ISDBApplication::Objects</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::Objects&amp;diff=8719"/>
		<updated>2014-11-25T23:03:00Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: /* Example JScript code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBApplication|ISDBApplication|Property Get/Let Objects(Name As String) As Object}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |Name |String |An identifier for object storage.}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
A collection for temporary storage of any type of object during MediaMonkey running time. For example if a window is created by script that should remain visible while the script isn&#039;t running, the window object can be put into this collection in order to keep a reference to it. The keys of this collection are strings, the values can be only objects.&lt;br /&gt;
&lt;br /&gt;
Some MediaMonkey objects are destroyed when last reference to them is deleted (such as [[SDBUIForm|form]] or [[SDBProgress|progress bar]]). In JScript there may be a delay between last reference removal and object disposal. In this case you might want to consider calling [http://msdn.microsoft.com/en-us/library/ff955348%28v=vs.85%29.aspx CollectGarbage()] method to tell the interpret to dispose objects right now.&lt;br /&gt;
&lt;br /&gt;
===Example VBScript code===                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;If SDB.Objects(&amp;quot;MyWindowRef&amp;quot;) Is Nothing Then    &#039; If the object isn&#039;t in collection yet...&lt;br /&gt;
  Set SDB.Objects(&amp;quot;MyWindowRef&amp;quot;) = MyWindow      &#039; ... add it to the collection (using Set for objects)...&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&#039; Some code here&lt;br /&gt;
&lt;br /&gt;
SDB.Objects(&amp;quot;MyWindowRef&amp;quot;) = Nothing             &#039;  ... and now remove it from the collection.&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example JScript code ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
if (!SDB.Objects(&#039;MyWindowRef&#039;)) { // If the object isn&#039;t in collection yet...&lt;br /&gt;
  SDB.Objects(&#039;MyWindowRef&#039;) = my_window; // add it to the collection.&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To release the object from global storage, you cannot call &amp;lt;tt&amp;gt;delete SDB.Objects(&#039;MyWindowRef&#039;)&amp;lt;/tt&amp;gt;, but you have to reassing the value. For example with &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt;. However note that the object *may* be destroyed when *there are no references left* (thus SDB.Objects was the last one holding the object). If you want to destroy the object right now, consider calling &amp;lt;tt&amp;gt;CollectGarbage()&amp;lt;/tt&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
SDB.Objects(&#039;MyWindowRef&#039;) = null; // Release instance from the collection.&lt;br /&gt;
CollectGarbage(); // Consider calling garbage collector when needing object disposal right now.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBApplication|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBApplication|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=Scripting_Resources&amp;diff=8412</id>
		<title>Scripting Resources</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=Scripting_Resources&amp;diff=8412"/>
		<updated>2013-04-24T13:56:00Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: note about equalizer file formats&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Note: This page contains information for scripting on MM2. For MM3, you have take into account that the database has changed. Therefore, database drivers (MDAC and MS Jet) aren&#039;t needed anymore, and the database structure has changed ([[MediaMonkey Database structure]]). Also keep in mind that MM3 uses newer icons.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Icons==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;8&amp;quot; | Menu &amp;amp; Toolbar Icons&lt;br /&gt;
!colspan=&amp;quot;6&amp;quot; | Tree Icons&lt;br /&gt;
|-&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/MenuToolbar1.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/MenuToolbar2.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/MenuToolbar3.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/MenuToolbar4.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/MenuToolbar5.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/MenuToolbar6.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/MenuToolbar7.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/MenuToolbar8.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/Tree1.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/Tree2.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/Tree3.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/Tree4.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/Tree5.gif&lt;br /&gt;
|http://home.scarlet.be/ruben.castelein/MM/ScriptingResources/Icons/Tree6.gif&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Yarin&#039;&#039; also made another [http://img216.imageshack.us/img216/7738/iconchart5sp.png chart of available icons].&lt;br /&gt;
&lt;br /&gt;
Descriptions for the icon codes, and scripts to view all icons in Mediamonkey: [http://www.mediamonkey.com/forum/viewtopic.php?t=4239 Forum Thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The icons can be downloaded here: [http://www.mediamonkey.com/contrib/artwork/icons.zip Download Icons]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Normally MediaMonkey uses its own internal icons. However, if you create an &amp;quot;&#039;&#039;Icons&#039;&#039;&amp;quot; subdirectory in MediaMonkey&#039;s program folder (usually &amp;quot;&#039;&#039;C:/Program Files/MediaMonkey&#039;&#039;&amp;quot;, and place all MediaMonkey icons in it, it will use those. Those icons can then be modified like you wish. They can be up to 32 bit and support simple transparency. The first (top-left) pixel is taken as the transparent color. A restart of MediaMonkey is required for the icon changes to take effect.&lt;br /&gt;
&amp;lt;br&amp;gt;An example of using custom icons can be found [http://www.mediamonkey.com/forum/viewtopic.php?t=20187 here].&lt;br /&gt;
&lt;br /&gt;
In the same way as with the icons: if you place a file called &amp;quot;&#039;&#039;NoAArt.png&#039;&#039;&amp;quot; in the Icons subdirectory (which you may have to create first), it will replace MediaMonkey&#039;s default image in the Album Art panel when there&#039;s no album art found.&lt;br /&gt;
&lt;br /&gt;
You can put a modified splash screen image in subdirectory &amp;quot;&#039;&#039;Brand&#039;&#039;&amp;quot; (which may have to be created first, in MediaMonkey&#039;s program folder). This image has to be named &amp;quot;&#039;&#039;Splash.png&#039;&#039;&amp;quot; (png image) or &amp;quot;&#039;&#039;Splash.jpg&#039;&#039;&amp;quot; (jpg image).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tree and database structure==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[MediaMonkey Tree structure|NodeType values for the Main Tree]]:&#039;&#039;&#039; can be used to recognise built-in tree nodes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[MediaMonkey Database structure|Location of song properties in the database]]:&#039;&#039;&#039; information on MM&#039;s database structure&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cover Types==&lt;br /&gt;
&lt;br /&gt;
*Known as CoverType field in the Covers database table.&lt;br /&gt;
*Known as [[ISDBAlbumArtItem::ItemType|ItemType]] property of the [[SDBAlbumArtItem|ISDBAlbumArtItem]] interface.&lt;br /&gt;
&lt;br /&gt;
These are the cover type values used by MediaMonkey, as defined by the [http://www.id3.org/id3v2.4.0-frames ID3v2.4 specification]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!ID !! Official ID3 Description !! MediaMonkey Description&lt;br /&gt;
|-&lt;br /&gt;
|0||Other||Not specified&lt;br /&gt;
|-&lt;br /&gt;
|1||32x32 pixels &#039;file icon&#039; (PNG only)||Not specified&lt;br /&gt;
|-&lt;br /&gt;
|2||Other file icon||Not specified&lt;br /&gt;
|-&lt;br /&gt;
|3||Cover (front)||Cover (front)&lt;br /&gt;
|-&lt;br /&gt;
|4||Cover (back)||Cover (back)&lt;br /&gt;
|-&lt;br /&gt;
|5||Leaflet page||Leaflet Page&lt;br /&gt;
|-&lt;br /&gt;
|6||Media (e.g. label side of CD)||Media Label&lt;br /&gt;
|-&lt;br /&gt;
|7||Lead artist/lead performer/soloist||Lead Artist&lt;br /&gt;
|-&lt;br /&gt;
|8||Artist/performer||Artist&lt;br /&gt;
|-&lt;br /&gt;
|9||Conductor||Conductor&lt;br /&gt;
|-&lt;br /&gt;
|10||Band/Orchestra||Band&lt;br /&gt;
|-&lt;br /&gt;
|11||Composer||Composer&lt;br /&gt;
|-&lt;br /&gt;
|12||Lyricist/text writer||Lyricist&lt;br /&gt;
|-&lt;br /&gt;
|13||Recording Location||Recording Location&lt;br /&gt;
|-&lt;br /&gt;
|14||During recording||During Recording&lt;br /&gt;
|-&lt;br /&gt;
|15||During performance||During Performance&lt;br /&gt;
|-&lt;br /&gt;
|16||Movie/video screen capture||Video Screen Capture&lt;br /&gt;
|-&lt;br /&gt;
|17||A bright coloured fish||Not specified&lt;br /&gt;
|-&lt;br /&gt;
|18||Illustration||Illustration&lt;br /&gt;
|-&lt;br /&gt;
|19||Band/artist logotype||Band Logotype&lt;br /&gt;
|-&lt;br /&gt;
|20||Publisher/Studio logotype||Publisher Logotype&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Internal Mask Fields==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Internal !! User Friendly&lt;br /&gt;
|-&lt;br /&gt;
| %A || &amp;lt;Artist&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %B || &amp;lt;Bitrate&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %C || &amp;lt;Composer&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %D || &amp;lt;Auto Number&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %E || &amp;lt;Extension&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %F || &amp;lt;Filename&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %G || &amp;lt;Genre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %J || &amp;lt;Custom 4&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %K || &amp;lt;Custom 5&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %L || &amp;lt;Album&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %M || &amp;lt;BPM&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %N || &amp;lt;Random&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %O || &amp;lt;Path&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %P || &amp;lt;Folder&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %Q || &amp;lt;Playlist&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %R || &amp;lt;Album Artist&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %S || &amp;lt;Title&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %T || &amp;lt;Track#&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %U || &amp;lt;Custom 1&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %V || &amp;lt;Custom 2&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %W || &amp;lt;Custom 3&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %X || &amp;lt;Skip&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %Y || &amp;lt;Year&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZA || &amp;lt;Mood&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZB || &amp;lt;Occasion&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZC || &amp;lt;Tempo&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZD || &amp;lt;Comment&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZE || &amp;lt;Encoder&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZF || &amp;lt;ISRC&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZG || &amp;lt;Lyricist&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZH || &amp;lt;Original Artist&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZI || &amp;lt;Original Lyricist&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZJ || &amp;lt;Original Title&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZK || &amp;lt;Publisher&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZL || &amp;lt;Quality&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZM || &amp;lt;Disc#&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZN || &amp;lt;Music Composer&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZO || &amp;lt;Grouping&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| %ZP || &amp;lt;Date&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special examples ===&lt;br /&gt;
* %2S represents &amp;lt;Title:2&amp;gt;&lt;br /&gt;
* %-2S represents &amp;lt;Title:-2&amp;gt;&lt;br /&gt;
* %@2S represents &amp;lt;Title@2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Masks sections in MediaMonkey.ini==&lt;br /&gt;
* &#039;&#039;&#039;[SongMasks]&#039;&#039;&#039; is used to [[Infer Track Properties]] when songs are added to the library&lt;br /&gt;
* &#039;&#039;&#039;[AutoTagMasks]&#039;&#039;&#039; is used for [[Auto-Tag from Filename]]&lt;br /&gt;
* &#039;&#039;&#039;[RenameMasks]&#039;&#039;&#039; is used for [[Auto-Organize Files]]&lt;br /&gt;
* &#039;&#039;&#039;[FileMasks]&#039;&#039;&#039; is a copy of [RenameMasks], made when MediaMonkey exits&lt;br /&gt;
&lt;br /&gt;
==File Formats==&lt;br /&gt;
* [[Equalizer Preset File Format]] (&amp;lt;tt&amp;gt;*.sde&amp;lt;/tt&amp;gt; files)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Time savers==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trixmoto&#039;s Form Creator:&#039;&#039;&#039; [http://trixmoto.net/mmvbs/ Visit]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Useful methods: &#039;&#039;&#039; [[Useful Methods]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Engines and runtimes==&lt;br /&gt;
&lt;br /&gt;
What to do if scripting doesn&#039;t work (anymore): [http://www.macropool.com/en/download/scripting.html Macropool Scripting Troubleshooting]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Windows Script 5.6&#039;&#039;&#039;&lt;br /&gt;
*for [http://www.microsoft.com/downloads/details.aspx?FamilyID=c717d943-7e4b-4622-86eb-95a22b832caa&amp;amp;DisplayLang=en Windows XP and Windows 2000]&lt;br /&gt;
*for [http://www.microsoft.com/downloads/details.aspx?FamilyID=0a8a18f6-249c-4a72-bfcf-fc6af26dc390&amp;amp;DisplayLang=en Windows 98, Windows Millennium Edition, and Windows NT 4.0]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsoft Data Access Components (MDAC)&#039;&#039;&#039;&lt;br /&gt;
*[http://www.microsoft.com/downloads/details.aspx?FamilyID=78cac895-efc2-4f8e-a9e0-3a1afbd5922e&amp;amp;DisplayLang=en download v2.8 SP1]&lt;br /&gt;
*[http://www.macropool.com/en/download/mdac.html download or repair MDAC and the MS Jet Database Engine]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microsoft .NET Framework&#039;&#039;&#039;&lt;br /&gt;
*[http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en Version 3.0 Redistributable Package]&lt;br /&gt;
*[http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;amp;DisplayLang=en Version 2.0 Redistributable Package (x86)]&lt;br /&gt;
*[http://www.microsoft.com/downloads/details.aspx?FamilyID=b44a0000-acf8-4fa1-affb-40e78d788b00&amp;amp;DisplayLang=en Version 2.0 Redistributable Package (x64)]&lt;br /&gt;
*[http://www.microsoft.com/downloads/details.aspx?FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38&amp;amp;DisplayLang=en Version 1.1 Service Pack 1]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==ActiveX controls==&lt;br /&gt;
&lt;br /&gt;
ActiveX Warnings: [http://www.mediamonkey.com/forum/viewtopic.php?p=42107#42107 how to disable] (or more recent [http://www.mediamonkey.com/forum/viewtopic.php?p=49692#49692 here])&lt;br /&gt;
&lt;br /&gt;
Handy ActiveX Controls: [http://www.d2dsources.com D2DSources]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Microsoft Controls===&lt;br /&gt;
&lt;br /&gt;
*Microsoft ADO Data Control 6.0 (OLEDB): [http://activex.microsoft.com/controls/vb6/MSADODC.CAB download]&lt;br /&gt;
*Microsoft Chart Control 6.0 (OLEDB): [http://activex.microsoft.com/controls/vb6/MSCHRT20.CAB download]&lt;br /&gt;
*Microsoft Comm Control 6.0: [http://activex.microsoft.com/controls/vb6/MSCOMM32.CAB download]&lt;br /&gt;
*Microsoft Common Dialog Control 6.0: [http://activex.microsoft.com/controls/vb6/COMDLG32.CAB download]&lt;br /&gt;
*Microsoft Data Bound Grid Control 5.0 (SP3): [http://activex.microsoft.com/controls/vb6/DBGRID32.CAB download]&lt;br /&gt;
*Microsoft Data Bound List Controls 6.0: [http://activex.microsoft.com/controls/vb6/DBLIST32.CAB download]&lt;br /&gt;
*Microsoft DataGrid Control 6.0 (OLEDB): [http://activex.microsoft.com/controls/vb6/MSDATGRD.CAB download]&lt;br /&gt;
*Microsoft DataList Controls 6.0 (OLEDB): [http://activex.microsoft.com/controls/vb6/MSDATLST.CAB download]&lt;br /&gt;
*Microsoft DataRepeater Control 6.0 (OLEDB): [http://activex.microsoft.com/controls/vb6/MSDATREP.CAB download]&lt;br /&gt;
*Microsoft FlexGrid Control 6.0: [http://activex.microsoft.com/controls/vb6/MSFLXGRD.CAB download]&lt;br /&gt;
*Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB): [http://activex.microsoft.com/controls/vb6/MSHFLXGD.CAB download]&lt;br /&gt;
*Microsoft Internet Transfer Control 6.0: [http://activex.microsoft.com/controls/vb6/MSINET.CAB download]&lt;br /&gt;
*Microsoft MAPI Controls 6.0: [http://activex.microsoft.com/controls/vb6/MSMAPI32.CAB download]&lt;br /&gt;
*Microsoft Masked Edit Control 6.0: [http://activex.microsoft.com/controls/vb6/MSMASK32.CAB download]&lt;br /&gt;
*Microsoft Multimedia Control 6.0: [http://activex.microsoft.com/controls/vb6/MCI32.CAB download]&lt;br /&gt;
*Microsoft PictureClip Control 6.0: [http://activex.microsoft.com/controls/vb6/PICCLP32.CAB download]&lt;br /&gt;
*Microsoft RemoteData Control 6.0: [http://activex.microsoft.com/controls/vb6/MSRDC20.CAB download]&lt;br /&gt;
*Microsoft Rich Textbox Control 6.0: [http://activex.microsoft.com/controls/vb6/RICHTX32.CAB download]&lt;br /&gt;
*Microsoft SysInfo Control 6.0: [http://activex.microsoft.com/controls/vb6/SYSINFO.CAB download]&lt;br /&gt;
*Microsoft Tabbed Dialog Control 6.0: [http://activex.microsoft.com/controls/vb6/TABCTL32.CAB download]&lt;br /&gt;
*Microsoft Windows Common Controls 5.0 (SP2): [http://activex.microsoft.com/controls/vb6/COMCTL32.CAB download]&lt;br /&gt;
*Microsoft Windows Common Controls-2 5.0 (SP2): [http://activex.microsoft.com/controls/vb6/COMCT232.CAB download]&lt;br /&gt;
*Microsoft Windows Common Controls-2 5.0 (SP2): [http://activex.microsoft.com/controls/vb6/COMCT332.CAB download]&lt;br /&gt;
*Microsoft Windows Common Controls 6.0 (SP6): [http://activex.microsoft.com/controls/vb6/MSCOMCTL.CAB download]&lt;br /&gt;
*Microsoft Windows Common Controls-2 6.0 (SP6): [http://activex.microsoft.com/controls/vb6/MSCOMCT2.CAB download]&lt;br /&gt;
*Microsoft Winsock Control 6.0: [http://activex.microsoft.com/controls/vb6/MSWINSCK.CAB download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Microsoft Objects and Libraries===&lt;br /&gt;
&lt;br /&gt;
*Microsoft Data Access Components: [http://activex.microsoft.com/controls/vb6/MDAC20.CAB download]&lt;br /&gt;
*Microsoft Data Access Components: [http://activex.microsoft.com/controls/vb6/MDAC_TYP.CAB download]&lt;br /&gt;
*Microsoft Data Binding Collection Object: [http://activex.microsoft.com/controls/vb6/MSBIND.CAB download]&lt;br /&gt;
*Microsoft Data Formatting Object Library: [http://activex.microsoft.com/controls/vb6/MSSTDFMT.CAB download]&lt;br /&gt;
*Microsoft Data Report Designer v6.0: [http://activex.microsoft.com/controls/vb6/MSDBRPTR.CAB download]&lt;br /&gt;
*Microsoft DHTML Page Run-time Library 1.0: [http://activex.microsoft.com/controls/vb6/MSHTMPGR.CAB download]&lt;br /&gt;
*Microsoft OLE Automation Library: [http://activex.microsoft.com/controls/vb6/OLEAUT.CAB download]&lt;br /&gt;
*Microsoft Remote Data Object 2.0: [http://activex.microsoft.com/controls/vb6/MSRDO20.CAB download]&lt;br /&gt;
*Microsoft Remote Automation Library: [http://activex.microsoft.com/controls/vb6/msracli.cab download]&lt;br /&gt;
*Microsoft Stock Property Page Object: [http://activex.microsoft.com/controls/vb6/msstkprp.CAB download]&lt;br /&gt;
*Microsoft WebClass Library 1.0: [http://activex.microsoft.com/controls/vb6/MSWCRUN.CAB download]&lt;br /&gt;
*Microsoft Visual Basic 6.0 Run-time Components: [http://activex.microsoft.com/controls/vb6/VBRUN60.CAB download]&lt;br /&gt;
*Microsoft Visual Basic 6.0 Virtual Machine: [http://activex.microsoft.com/controls/vb6/MSVBVM60.CAB download]&lt;br /&gt;
*Microsoft XML Parser (MSXML) 3.0 Service Pack 7 (SP7): [http://www.microsoft.com/downloads/details.aspx?FamilyID=28494391-052b-42ff-9674-f752bdca9582&amp;amp;DisplayLang=en download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FM20.DLL&#039;&#039;&#039; must &#039;&#039;not&#039;&#039; be redistributed ([http://support.microsoft.com/default.aspx?scid=kb;en-us;224305 more information]).&lt;br /&gt;
People who don&#039;t have the file can install [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaxctrl/html/cpad.asp Microsoft ActiveX Control Pad] (or [http://download.microsoft.com/download/activexcontrolpad/Install/4.0.0.950/WIN98MeXP/EN-US/setuppad.exe direct link])&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::EqualizerPath&amp;diff=8411</id>
		<title>ISDBApplication::EqualizerPath</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::EqualizerPath&amp;diff=8411"/>
		<updated>2013-04-24T13:54:30Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: link to file format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBApplication|ISDBApplication|Property Get EqualizerPath As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Returns the path where MediaMonkey stores equalizer settings, e.g. &amp;lt;tt&amp;gt;C:\Program Files\MediaMonkey\Equalizer\&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.2.1266 (3.1 beta 1)}}&lt;br /&gt;
&lt;br /&gt;
=== Related Topics === &lt;br /&gt;
&lt;br /&gt;
*[[ISDBApplication::ApplicationPath]] &lt;br /&gt;
*[[ISDBPlayer::LoadEqualizerPreset]]&lt;br /&gt;
*[[Equalizer Preset File Format]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBApplication|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBApplication|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::LoadEqualizerPreset&amp;diff=8410</id>
		<title>ISDBPlayer::LoadEqualizerPreset</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::LoadEqualizerPreset&amp;diff=8410"/>
		<updated>2013-04-24T13:53:55Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: added link to eq preset file format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Sub LoadEqualizerPreset(FileName As String)}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Loads specified [[Equalizer Preset File Format|equalizer preset]] and enables the equalizer. Filename can be either full path or a filename only (e.g. &amp;lt;tt&amp;gt;Rock.sde&amp;lt;/tt&amp;gt;). When only filename is supplied, it is searched in the [[ISDBApplication::EqualizerPath|SDB.EqualizerPath]] directory.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1220}}&lt;br /&gt;
&lt;br /&gt;
===Related Topics===&lt;br /&gt;
*[[ISDBApplication::EqualizerPath]]&lt;br /&gt;
*[[Equalizer Preset File Format]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=Equalizer_Preset_File_Format&amp;diff=8409</id>
		<title>Equalizer Preset File Format</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=Equalizer_Preset_File_Format&amp;diff=8409"/>
		<updated>2013-04-24T13:52:40Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: Created page with &amp;quot;MediaMonkey saves equalizer presets in text files with &amp;lt;tt&amp;gt;.sde&amp;lt;/tt&amp;gt; extension. Files are stored under SDB.EqualizerPath folder.  These presets...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MediaMonkey saves equalizer presets in text files with &amp;lt;tt&amp;gt;.sde&amp;lt;/tt&amp;gt; extension. Files are stored under [[ISDBApplication::EqualizerPath|SDB.EqualizerPath]] folder.&lt;br /&gt;
&lt;br /&gt;
These presets can be loaded and saved in the Equalizer dialog. Through scripting, presets can be loaded using the [[ISDBPlayer::LoadEqualizerPreset]] method.&lt;br /&gt;
&lt;br /&gt;
[[File:EqualizerDialog.png]]&lt;br /&gt;
&lt;br /&gt;
===File structure description===&lt;br /&gt;
&lt;br /&gt;
File has same structure as &amp;lt;tt&amp;gt;.ini&amp;lt;/tt&amp;gt; files. There is one section &amp;lt;tt&amp;gt;[Equalizer]&amp;lt;/tt&amp;gt; with following keys:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Bands&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;LeftPreamp&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;RightPreamp&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Left1&#039;&#039;&#039; and &#039;&#039;&#039;Right1&#039;&#039;&#039; to &#039;&#039;&#039;Left10&#039;&#039;&#039; and &#039;&#039;&#039;Right10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
MediaMonkey equalizer dialog is not able to set different values for left and right channels. Therefore .sde files saved from the dialog always have same &amp;lt;tt&amp;gt;Left*&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Right*&amp;lt;/tt&amp;gt; values.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Key&lt;br /&gt;
! Description&lt;br /&gt;
! Allowed values&lt;br /&gt;
|-&lt;br /&gt;
! Bands&lt;br /&gt;
| Amount of equalizer bands&lt;br /&gt;
| Always &amp;lt;tt&amp;gt;10&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! LeftPreamp&lt;br /&gt;
| Left channel preamp&lt;br /&gt;
| &amp;lt;tt&amp;gt;-20&amp;lt;/tt&amp;gt; … &amp;lt;tt&amp;gt;20&amp;lt;/tt&amp;gt; (default &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) (dB)&lt;br /&gt;
|-&lt;br /&gt;
! RightPreamp&lt;br /&gt;
| Right channel preamp&lt;br /&gt;
| &amp;lt;tt&amp;gt;-20&amp;lt;/tt&amp;gt; … &amp;lt;tt&amp;gt;20&amp;lt;/tt&amp;gt; (default &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) (dB)&lt;br /&gt;
|-&lt;br /&gt;
! Left1 … Left10&lt;br /&gt;
| Left channel equalizer at 31Hz, 63Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz, 16kHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;-20&amp;lt;/tt&amp;gt; … &amp;lt;tt&amp;gt;20&amp;lt;/tt&amp;gt; (default &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) (dB)&lt;br /&gt;
|-&lt;br /&gt;
! Right1 … Right10&lt;br /&gt;
| Right channel equalizer at 31Hz, 63Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz, 16kHz&lt;br /&gt;
| &amp;lt;tt&amp;gt;-20&amp;lt;/tt&amp;gt; … &amp;lt;tt&amp;gt;20&amp;lt;/tt&amp;gt; (default &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) (dB)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Sample .sde file===&lt;br /&gt;
&lt;br /&gt;
This is example of .sde file with default settings, e.g. sound is not modified).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Equalizer]&lt;br /&gt;
Bands=10&lt;br /&gt;
LeftPreamp=0&lt;br /&gt;
RightPreamp=0&lt;br /&gt;
Left1=0&lt;br /&gt;
Right1=0&lt;br /&gt;
Left2=0&lt;br /&gt;
Right2=0&lt;br /&gt;
Left3=0&lt;br /&gt;
Right3=0&lt;br /&gt;
Left4=0&lt;br /&gt;
Right4=0&lt;br /&gt;
Left5=0&lt;br /&gt;
Right5=0&lt;br /&gt;
Left6=0&lt;br /&gt;
Right6=0&lt;br /&gt;
Left7=0&lt;br /&gt;
Right7=0&lt;br /&gt;
Left8=0&lt;br /&gt;
Right8=0&lt;br /&gt;
Left9=0&lt;br /&gt;
Right9=0&lt;br /&gt;
Left10=0&lt;br /&gt;
Right10=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Related Topics===&lt;br /&gt;
*[[ISDBPlayer::LoadEqualizerPreset]]&lt;br /&gt;
*[[ISDBApplication::EqualizerPath]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=File:EqualizerDialog.png&amp;diff=8408</id>
		<title>File:EqualizerDialog.png</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=File:EqualizerDialog.png&amp;diff=8408"/>
		<updated>2013-04-24T13:32:29Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: Screenshot of the Equalizer dialog in MediaMonkey.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot of the Equalizer dialog in MediaMonkey.&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBPlayer&amp;diff=8407</id>
		<title>SDBPlayer</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBPlayer&amp;diff=8407"/>
		<updated>2013-04-24T13:24:53Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: versions, description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBPlayer ==&lt;br /&gt;
&lt;br /&gt;
Object for controlling of player and Now Playing list. Can be accessed through [[ISDBApplication::Player|SDB.Player]] property.&lt;br /&gt;
&lt;br /&gt;
=== ISDBPlayer members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBPlayer::CurrentPlaylist|CurrentPlaylist]] |Property Get | Alias to CurrentSongList&lt;br /&gt;
|[[ISDBPlayer::CurrentSong|CurrentSong]] |Property Get |  &lt;br /&gt;
|[[ISDBPlayer::CurrentSongIndex|CurrentSongIndex]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBPlayer::CurrentSongLength|CurrentSongLength]] |Property Get |  &lt;br /&gt;
|[[ISDBPlayer::CurrentSongList|CurrentSongList]] |Property Get |  &lt;br /&gt;
|[[ISDBPlayer::isAutoDJ|isAutoDJ]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBPlayer::isCrossfade|isCrossfade]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBPlayer::isEqualizer|isEqualizer]] |Property Get/Let | From 3.1.0 &lt;br /&gt;
|[[ISDBPlayer::isPaused|isPaused]] |Property Get |  &lt;br /&gt;
|[[ISDBPlayer::isPlaying|isPlaying]] |Property Get |  &lt;br /&gt;
|[[ISDBPlayer::isRepeat|isRepeat]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBPlayer::isShuffle|isShuffle]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBPlayer::isStartingPlayback|isStartingPlayback]] |Property Get |  &lt;br /&gt;
|[[ISDBPlayer::LoadEqualizerPreset|LoadEqualizerPreset]] |Method | From 3.1.0&lt;br /&gt;
|[[ISDBPlayer::Next|Next]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::Panning|Panning]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBPlayer::Pause|Pause]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::Play|Play]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::PlaybackTime|PlaybackTime]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBPlayer::PlaylistAddTrack|PlaylistAddTrack]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::PlaylistAddTracks|PlaylistAddTracks]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::PlaylistInsertTrack|PlaylistInsertTrack]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBPlayer::PlaylistInsertTracks|PlaylistInsertTracks]] |Method | From 4.0&lt;br /&gt;
|[[ISDBPlayer::PlaylistClear|PlaylistClear]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::PlaylistCount|PlaylistCount]] |Property Get |  &lt;br /&gt;
|[[ISDBPlayer::PlaylistDelete|PlaylistDelete]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::PlaylistFocused|PlaylistFocused]] |Property Get/Let | From 3.1.0&lt;br /&gt;
|[[ISDBPlayer::PlaylistItems|PlaylistItems]] |Property Get |  &lt;br /&gt;
|[[ISDBPlayer::PlaylistMoveTrack|PlaylistMoveTrack]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::PlaylistSelected|PlaylistSelected]] |Property Get/Let | From 3.1.0 &lt;br /&gt;
|[[ISDBPlayer::Previous|Previous]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::Stop|Stop]] |Method |  &lt;br /&gt;
|[[ISDBPlayer::StopAfterCurrent|StopAfterCurrent]] |Property Get/Let | From 3.1.2  &lt;br /&gt;
|[[ISDBPlayer::Volume|Volume]] |Property Get/Let |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::StopAfterCurrent&amp;diff=8406</id>
		<title>ISDBPlayer::StopAfterCurrent</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::StopAfterCurrent&amp;diff=8406"/>
		<updated>2013-04-24T13:22:27Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Property Get/Let StopAfterCurrent As Boolean}}&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Stops playback after currently playing track.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.2}}&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&#039;This example will show how to correctly implement&lt;br /&gt;
&#039;Correct = As Track is playing we set stop after current&lt;br /&gt;
SDB.Player.Play&lt;br /&gt;
SDB.Player.StopAfterCurrent = True&lt;br /&gt;
MsgBox( &amp;quot;Enabled&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;Incorrect = As Track is not playing setting stop after current doesn&#039;t have effect (got reset when player starts playing)&lt;br /&gt;
SDB.Player.Stop&lt;br /&gt;
SDB.Player.StopAfterCurrent = True&lt;br /&gt;
SDB.Player.Play&lt;br /&gt;
MsgBox( &amp;quot;Disabled&amp;quot;) &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::PlaylistInsertTrack&amp;diff=8405</id>
		<title>ISDBPlayer::PlaylistInsertTrack</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::PlaylistInsertTrack&amp;diff=8405"/>
		<updated>2013-04-24T13:21:49Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Sub PlaylistInsertTrack( Index as Long, Song As SDBSongData)}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |Index |Long |Index (0..n) - position where the track should be inserted&lt;br /&gt;
 |Song |[[SDBSongData]] |Track to be inserted.}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Inserts new track to Now Playing list.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|4.0}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::PlaylistInsertTracks&amp;diff=8404</id>
		<title>ISDBPlayer::PlaylistInsertTracks</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::PlaylistInsertTracks&amp;diff=8404"/>
		<updated>2013-04-24T13:21:38Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Sub PlaylistInsertTracks( Index as Long, Songs As SDBSongList)}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters&lt;br /&gt;
 |Index |Long |Index (0..n) - position where the tracks should be inserted &lt;br /&gt;
 |Songs |[[SDBSongList]] |List of tracks to be inserted.}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Inserts a list of tracks to Now Playing list.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|4.0}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::LoadEqualizerPreset&amp;diff=8403</id>
		<title>ISDBPlayer::LoadEqualizerPreset</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::LoadEqualizerPreset&amp;diff=8403"/>
		<updated>2013-04-24T13:21:20Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: relation to ISDBApplication::EqualizerPath&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Sub LoadEqualizerPreset(FileName As String)}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Loads specified equalizer preset and enables the equalizer. Filename can be either full path or a filename only (e.g. &amp;lt;tt&amp;gt;Rock.sde&amp;lt;/tt&amp;gt;). When only filename is supplied, it is searched in the [[ISDBApplication::EqualizerPath|SDB.EqualizerPath]] directory.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1220}}&lt;br /&gt;
&lt;br /&gt;
===Related Topics===&lt;br /&gt;
*[[ISDBApplication::EqualizerPath]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::EqualizerPath&amp;diff=8402</id>
		<title>ISDBApplication::EqualizerPath</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::EqualizerPath&amp;diff=8402"/>
		<updated>2013-04-24T13:17:24Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: relation to ISDBPlayer::LoadEqualizerPreset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBApplication|ISDBApplication|Property Get EqualizerPath As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Returns the path where MediaMonkey stores equalizer settings, e.g. &amp;lt;tt&amp;gt;C:\Program Files\MediaMonkey\Equalizer\&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.2.1266 (3.1 beta 1)}}&lt;br /&gt;
&lt;br /&gt;
=== Related Topics === &lt;br /&gt;
&lt;br /&gt;
*[[ISDBApplication::ApplicationPath]] &lt;br /&gt;
*[[ISDBPlayer::LoadEqualizerPreset]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBApplication|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBApplication|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::LoadEqualizerPreset&amp;diff=8401</id>
		<title>ISDBPlayer::LoadEqualizerPreset</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::LoadEqualizerPreset&amp;diff=8401"/>
		<updated>2013-04-24T13:15:49Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Sub LoadEqualizerPreset(FileName As String)}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Loads specified equalizer preset and starts equalizer. Filename can be either full path or a filename only (like &#039;Rock.sde&#039;).&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1220}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::PlaylistSelected&amp;diff=8400</id>
		<title>ISDBPlayer::PlaylistSelected</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::PlaylistSelected&amp;diff=8400"/>
		<updated>2013-04-24T13:15:16Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Property Get/Let PlaylistSelected (Index As Long) As Bool}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Retuns or sets whether given track in Now Playing list is selected.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1214}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::PlaylistFocused&amp;diff=8399</id>
		<title>ISDBPlayer::PlaylistFocused</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::PlaylistFocused&amp;diff=8399"/>
		<updated>2013-04-24T13:15:01Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Property Get/Let PlaylistFocused (Index As Long) As Bool}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Retuns or sets which track in Now Playing list is focused.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1214}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::isEqualizer&amp;diff=8398</id>
		<title>ISDBPlayer::isEqualizer</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBPlayer::isEqualizer&amp;diff=8398"/>
		<updated>2013-04-24T13:14:48Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBPlayer|ISDBPlayer|Property Get/Let isEqualizer As Boolean}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Sets whether equalizer is applied to track playback.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1220}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBPlayer|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBPlayer|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBUIForm&amp;diff=8397</id>
		<title>SDBUIForm</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBUIForm&amp;diff=8397"/>
		<updated>2013-04-23T16:00:59Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: added note about default and cancel button&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBUIForm ==&lt;br /&gt;
&lt;br /&gt;
Object represents a single window.&lt;br /&gt;
&lt;br /&gt;
When user presses &amp;lt;tt&amp;gt;Enter&amp;lt;/tt&amp;gt; in the window, [[ISDBUIButton::Default|default button]] handler is called. When user presses &amp;lt;tt&amp;gt;Esc&amp;lt;/tt&amp;gt;, the [[ISDBUIButton::Cancel|cancel button]] handler is called. Both of these are optional.&lt;br /&gt;
&lt;br /&gt;
=== ISDBUIForm members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUIForm::BorderStyle|BorderStyle]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIForm::Caption|Caption]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIForm::Common|Common]] |Property Get |  &lt;br /&gt;
|[[ISDBUIForm::FormPosition|FormPosition]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIForm::SavePositionName|SavePositionName]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIForm::ShowModal|ShowModal]] |Method |  &lt;br /&gt;
|[[ISDBUIForm::StayOnTop|StayOnTop]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIForm::ActiveControl|ActiveControl]] |Property Get/Let | From 3.1.2. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ISDBUIFormEvents members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUIFormEvents::OnClose|OnClose]] |Event |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUIForm|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUIButton::OnClickFunc&amp;diff=8396</id>
		<title>ISDBUIButton::OnClickFunc</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUIButton::OnClickFunc&amp;diff=8396"/>
		<updated>2013-04-23T15:53:05Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: deprecated by OnClick event&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBUIButton|ISDBUIButton|Property Get/Let OnClickFunc As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Name of the function that is called when the button is clicked. The function is expected to be in [[ISDBUIButton::UseScript|UseScript]] file. There is one parameter passed to the function - this button ([[SDBMenuItem]] object).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deprecated&#039;&#039;&#039;: Use the [[ISDBUIButtonEvents::OnClick|OnClick]] event registration instead.&lt;br /&gt;
&lt;br /&gt;
===Example code===                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&#039;The function to be called can look like:&lt;br /&gt;
&lt;br /&gt;
Sub OnButtonClick(Button)&lt;br /&gt;
  &#039; Some code here&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUIButton|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBUIButton|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBUIButton&amp;diff=8395</id>
		<title>SDBUIButton</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBUIButton&amp;diff=8395"/>
		<updated>2013-04-23T15:50:22Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: deprecation of OnClickFunc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBUIButton ==&lt;br /&gt;
&lt;br /&gt;
Button (UI element).&lt;br /&gt;
&lt;br /&gt;
=== ISDBUIButton members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUIButton::Cancel|Cancel]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIButton::Caption|Caption]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIButton::Common|Common]] |Property Get |  &lt;br /&gt;
|[[ISDBUIButton::Default|Default]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIButton::ModalResult|ModalResult]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIButton::OnClickFunc|OnClickFunc]] |Property Get/Let | Deprecated&lt;br /&gt;
|[[ISDBUIButton::UseScript|UseScript]] |Property Get/Let | Deprecated &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ISDBUIButtonEvents members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUIButtonEvents::OnClick|OnClick]] |Event | &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUIButton|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBUI&amp;diff=8394</id>
		<title>SDBUI</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBUI&amp;diff=8394"/>
		<updated>2013-04-23T15:47:57Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: introduced for DeleteOptionSheet, better object description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBUI ==&lt;br /&gt;
&lt;br /&gt;
Object for manipulation of User Interface elements. Access the object using [[ISDBApplication::UI|SDB.UI]] property.&lt;br /&gt;
&lt;br /&gt;
=== ISDBUI members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUI::AddMenuItem|AddMenuItem]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddMenuItemSep|AddMenuItemSep]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddMenuItemSub|AddMenuItemSub]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddOptionSheet|AddOptionSheet]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddOptionSheetEx|AddOptionSheetEx]] |Method | From 3.1.0&lt;br /&gt;
|[[ISDBUI::AddPropertiesSheet|AddPropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::AddToolbar|AddToolbar]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::GetToolbar|GetToolbar]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::DeleteOptionSheet|DeleteOptionSheet]] |Method | From 3.0.3&lt;br /&gt;
|[[ISDBUI::DeletePropertiesSheet|DeletePropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::HidePropertiesSheet|HidePropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::MainWindowFocus|MainWindowFocus]] |Property Get/Let | From 3.1.0 &lt;br /&gt;
|[[ISDBUI::Menu_Edit|Menu_Edit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Export|Menu_Export]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_File|Menu_File]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Help|Menu_Help]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Play|Menu_Play]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow|Menu_Pop_NP_MainWindow]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow_MoreFrom|Menu_Pop_NP_MainWindow_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow_SendTo|Menu_Pop_NP_MainWindow_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP|Menu_Pop_NP]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MoreFrom|Menu_Pop_NP_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_SendTo|Menu_Pop_NP_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList|Menu_Pop_TrackList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList_MoreFrom|Menu_Pop_TrackList_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList_SendTo|Menu_Pop_TrackList_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_Tree|Menu_Pop_Tree]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_Tree_SendTo|Menu_Pop_Tree_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Scripts|Menu_Scripts]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbAdvanced|Menu_TbAdvanced]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbCategorize|Menu_TbCategorize]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbEdit|Menu_TbEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNavigation|Menu_TbNavigation]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPEdit|Menu_TbNPEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPList|Menu_TbNPList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPMain|Menu_TbNPMain]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbSearch|Menu_TbSearch]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbStandard|Menu_TbStandard]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Tools|Menu_Tools]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TrayIcon|Menu_TrayIcon]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_View|Menu_View]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewActiveX|NewActiveX]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewButton|NewButton]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewCheckBox|NewCheckBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDockablePanel|NewDockablePanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDockablePersistentPanel|NewDockablePersistentPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDropDown|NewDropDown]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewEdit|NewEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewForm|NewForm]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewGroupBox|NewGroupBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewLabel|NewLabel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewListBox|NewListBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewMultiLineEdit|NewMultiLineEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewPanel|NewPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewRadioButton|NewRadioButton]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewSpinEdit|NewSpinEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTrackBar|NewTrackBar]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTranspPanel|NewTranspPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTreeList|NewTreeList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewMaskEdit|NewMaskEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::ShowOptions|ShowOptions]] |Method |  &lt;br /&gt;
|[[ISDBUI::ShowPropertiesSheet|ShowPropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::DeleteOptionSheet&amp;diff=8393</id>
		<title>ISDBUI::DeleteOptionSheet</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::DeleteOptionSheet&amp;diff=8393"/>
		<updated>2013-04-23T15:45:00Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: introduced&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBUI|ISDBUI|Proc DeleteOptionSheet(Id As Long)}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |ID |Long |Id of sheet to be removed (previously returned by a call to AddOptionSheet).}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Removes previously created custom sheet in Options dialog.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.0.3.1138}}&lt;br /&gt;
&lt;br /&gt;
===Example code===                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&#039; Create our own option sheet&lt;br /&gt;
ind = SDB.UI.AddOptionSheet( &amp;quot;Test&amp;quot;, Script.ScriptPath, &amp;quot;InitSheet&amp;quot;, &amp;quot;SaveSheet&amp;quot;, 0)&lt;br /&gt;
&#039; Delete this sheet&lt;br /&gt;
SDB.UI.DeleteOptionSheet ind&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Related Topics===&lt;br /&gt;
&lt;br /&gt;
*[[Sample Option Sheets script]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBUI&amp;diff=8392</id>
		<title>SDBUI</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBUI&amp;diff=8392"/>
		<updated>2013-04-23T15:44:32Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: AddOptionSheetEx introduced&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBUI ==&lt;br /&gt;
&lt;br /&gt;
Object for manipulation of User Interface elements.&lt;br /&gt;
&lt;br /&gt;
=== ISDBUI members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUI::AddMenuItem|AddMenuItem]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddMenuItemSep|AddMenuItemSep]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddMenuItemSub|AddMenuItemSub]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddOptionSheet|AddOptionSheet]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddOptionSheetEx|AddOptionSheetEx]] |Method | From 3.1.0&lt;br /&gt;
|[[ISDBUI::AddPropertiesSheet|AddPropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::AddToolbar|AddToolbar]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::GetToolbar|GetToolbar]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::DeleteOptionSheet|DeleteOptionSheet]] |Method |  &lt;br /&gt;
|[[ISDBUI::DeletePropertiesSheet|DeletePropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::HidePropertiesSheet|HidePropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::MainWindowFocus|MainWindowFocus]] |Property Get/Let | From 3.1.0 &lt;br /&gt;
|[[ISDBUI::Menu_Edit|Menu_Edit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Export|Menu_Export]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_File|Menu_File]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Help|Menu_Help]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Play|Menu_Play]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow|Menu_Pop_NP_MainWindow]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow_MoreFrom|Menu_Pop_NP_MainWindow_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow_SendTo|Menu_Pop_NP_MainWindow_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP|Menu_Pop_NP]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MoreFrom|Menu_Pop_NP_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_SendTo|Menu_Pop_NP_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList|Menu_Pop_TrackList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList_MoreFrom|Menu_Pop_TrackList_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList_SendTo|Menu_Pop_TrackList_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_Tree|Menu_Pop_Tree]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_Tree_SendTo|Menu_Pop_Tree_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Scripts|Menu_Scripts]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbAdvanced|Menu_TbAdvanced]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbCategorize|Menu_TbCategorize]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbEdit|Menu_TbEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNavigation|Menu_TbNavigation]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPEdit|Menu_TbNPEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPList|Menu_TbNPList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPMain|Menu_TbNPMain]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbSearch|Menu_TbSearch]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbStandard|Menu_TbStandard]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Tools|Menu_Tools]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TrayIcon|Menu_TrayIcon]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_View|Menu_View]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewActiveX|NewActiveX]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewButton|NewButton]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewCheckBox|NewCheckBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDockablePanel|NewDockablePanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDockablePersistentPanel|NewDockablePersistentPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDropDown|NewDropDown]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewEdit|NewEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewForm|NewForm]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewGroupBox|NewGroupBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewLabel|NewLabel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewListBox|NewListBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewMultiLineEdit|NewMultiLineEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewPanel|NewPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewRadioButton|NewRadioButton]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewSpinEdit|NewSpinEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTrackBar|NewTrackBar]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTranspPanel|NewTranspPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTreeList|NewTreeList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewMaskEdit|NewMaskEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::ShowOptions|ShowOptions]] |Method |  &lt;br /&gt;
|[[ISDBUI::ShowPropertiesSheet|ShowPropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::AddOptionSheetEx&amp;diff=8391</id>
		<title>ISDBUI::AddOptionSheetEx</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::AddOptionSheetEx&amp;diff=8391"/>
		<updated>2013-04-23T15:43:59Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: introduced&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBUI|ISDBUI|Function AddOptionSheetEx(SheetLabel As String, ScriptFile As String, InitProcedure As String, SaveProcedure As String, CancelProcedure As String, ParentId As Long) As Long}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |SheetLabel |String |A label that appears in the tree of option sheet.&lt;br /&gt;
 |ScriptFile |String |A script file that contains event functions (InitProcedure and SaveProcedure).&lt;br /&gt;
 |InitProcedure |String |A function from ScriptFile that is called when Options dialog is created. There is one parameter present - a reference to the sheet (a [[SDBUITranspPanel]] object)&lt;br /&gt;
 |SaveProcedure |String |A function from ScriptFile that is called when Options is closed by Ok button. There is one parameter present - a reference to the sheet (a [[SDBUITranspPanel]] object)&lt;br /&gt;
 |CancelProcedure |String |A function from ScriptFile that is called when Options is closed, but not by Ok button. There is one parameter present - a reference to the sheet (a [[SDBUITranspPanel]] object)&lt;br /&gt;
 |ParentId |Long |Either an ID returned from a previous call to AddOptionSheet or 0 for the last sheet. See other [[possible option sheet values]].}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Creates a new sheet that appears in Options dialog.&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1205}}&lt;br /&gt;
&lt;br /&gt;
===Related Topics===&lt;br /&gt;
&lt;br /&gt;
*[[Sample Option Sheets script]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::AddMenuItem&amp;diff=8390</id>
		<title>ISDBUI::AddMenuItem</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::AddMenuItem&amp;diff=8390"/>
		<updated>2013-04-23T15:42:24Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: updated event handler code example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBUI|ISDBUI|Function AddMenuItem(ParentItem As [[SDBMenuItem#ISDBMenuItem_members|ISDBMenuItem]], InSection As Long, ItemOrder As Long) As [[SDBMenuItem]]}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |ParentItem |[[SDBMenuItem#ISDBMenuItem_members|ISDBMenuItem]] |Specifies where to add the new item, it can either be any of Menu_xxx properties or a value returned from a previous call to [[ISDBUI::AddMenuItemSub]]&lt;br /&gt;
 |InSection |Long |To which section of the ParentItem to add the new item (section is a part separated by two separator items). Last section(0), The first(1), The second(2), ..., The first from bottom, i.e.the last(-1), The second from bottom(-2), ...&lt;br /&gt;
 |ItemOrder |Long |Where will the item appear within the section: The last(0), The first(1), The second(2), ..., The first from bottom i.e.the last(-1), The second from bottom (-2), ...}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
AddMenuItem creates a new menu item or a toolbar item (these two are internally handled as the same).&lt;br /&gt;
&lt;br /&gt;
===Example code===                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Sub ShowStatistics(MenuItem)&lt;br /&gt;
  &#039; This is called when user clicks the &amp;quot;Statistics&amp;quot; menu item.&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&#039; Add a submenu to the View menu...&lt;br /&gt;
Set Mnu = UI.AddMenuItemSub(UI.Menu_View, -1, 1) &#039; The first item in the last section of View menu&lt;br /&gt;
Mnu.Caption = &amp;quot;Custom items&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039; ... and add Statistics item there&lt;br /&gt;
Set SubMnu = UI.AddMenuItem(Mnu, 0, 0) &#039; Add an item to the previously created menu&lt;br /&gt;
SubMnu.Caption = &amp;quot;&amp;amp;Statistics&amp;quot;     &lt;br /&gt;
&lt;br /&gt;
SubMnu.Shortcut = &amp;quot;Ctrl+1&amp;quot;&lt;br /&gt;
SubMnu.IconIndex = 35&lt;br /&gt;
Script.RegisterEvent SubMnu, &amp;quot;OnClick&amp;quot;, &amp;quot;ShowStatistics&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Related Topics === &lt;br /&gt;
&lt;br /&gt;
*[[ISDBUI::Menu Compendium]]&lt;br /&gt;
*[[ISDBUI::AddMenuItemSub]] &lt;br /&gt;
*[[ISDBUI::AddMenuItemSep]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::Caption&amp;diff=8389</id>
		<title>ISDBMenuItem::Caption</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::Caption&amp;diff=8389"/>
		<updated>2013-04-23T15:39:48Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: note about access keys, note about ellipsis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBMenuItem|ISDBMenuItem|Property Get/Let Caption As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
A string that is shown as the description of the menu item.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Access Keys&#039;&#039;&#039;: Use &amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt; character in the caption to mark the access key for the item. When navigating with keyboard, user can the press &amp;lt;tt&amp;gt;Alt+&amp;lt;access key&amp;gt;&amp;lt;/tt&amp;gt; to jump directly to the item.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ellipsis&#039;&#039;&#039;: While menu commands are used for immediate actions, more information might be needed to perform the action. This should be indicated by adding an ellipsis (&amp;lt;tt&amp;gt;…&amp;lt;/tt&amp;gt;) at the end of the label. This usually happens when dialog is displayed or confirmation box is shown before real action occurs.&lt;br /&gt;
&lt;br /&gt;
===Example code===   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
MenuItem.Caption = &amp;quot;Choose &amp;amp;tracks...&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Related Topics===&lt;br /&gt;
*[http://msdn.microsoft.com/en-us/library/windows/desktop/aa511502.aspx#accessKeys MSDN: Windows UX Interaction Guidelines – Access Keys]&lt;br /&gt;
*[http://msdn.microsoft.com/en-us/library/windows/desktop/aa511502.aspx#ellipses MSDN: Windows UX Interaction Guidelines – Using Ellipses]&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBMenuItem|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::ShortCut&amp;diff=8388</id>
		<title>ISDBMenuItem::ShortCut</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::ShortCut&amp;diff=8388"/>
		<updated>2013-04-23T15:26:00Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: better formatting, added description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBMenuItem|ISDBMenuItem|Property Get/Let ShortCut As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
String specifies a shortcut assigned to the item, for example &amp;lt;tt&amp;gt;F9&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;Ctrl+Alt+2&amp;lt;/tt&amp;gt;. Empty string means no shortcut is assigned.&lt;br /&gt;
&lt;br /&gt;
Shortcut can be assigned to any standard key from ranges &amp;lt;tt&amp;gt;A–Z&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;0–9&amp;lt;/tt&amp;gt; or to an additional key &amp;lt;tt&amp;gt;BkSp&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Tab&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Esc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Enter&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Space&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;PgUp&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;PgDn&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;End&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Home&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Left&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Up&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Right&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Down&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Ins&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Del&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;F1–F12&amp;lt;/tt&amp;gt;. The key can be prefixed by any combination of &amp;lt;tt&amp;gt;Ctrl+&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;Alt+&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Shift+&amp;lt;/tt&amp;gt; modifiers.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBMenuItem|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::IconIndex&amp;diff=8387</id>
		<title>ISDBMenuItem::IconIndex</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::IconIndex&amp;diff=8387"/>
		<updated>2013-04-23T15:16:52Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: minor correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBMenuItem|ISDBMenuItem|Property Get/Let IconIndex As Long}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Specifies which icon is used for this node (see [[Scripting_Resources#Icons|Icons documentation]] for their list). You can use [[ISDBApplication::RegisterIcon|SDB.RegisterIcon]] method to add you own icons.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBMenuItem|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::Hint&amp;diff=8386</id>
		<title>ISDBMenuItem::Hint</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::Hint&amp;diff=8386"/>
		<updated>2013-04-23T15:15:57Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: added note about toolbar buttons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBMenuItem|ISDBMenuItem|Property Get/Let Hint As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
A tooltip to be shown when mouse is over the item. This is useful for toolbar buttons.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBMenuItem|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::Caption&amp;diff=8385</id>
		<title>ISDBMenuItem::Caption</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::Caption&amp;diff=8385"/>
		<updated>2013-04-23T15:15:13Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: better description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBMenuItem|ISDBMenuItem|Property Get/Let Caption As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
A string that is shown as the description of the menu item.&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBMenuItem|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItemEvents::OnClick&amp;diff=8384</id>
		<title>ISDBMenuItemEvents::OnClick</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItemEvents::OnClick&amp;diff=8384"/>
		<updated>2013-04-23T15:12:16Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: added example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBMenuItem|ISDBMenuItemEvents|Sub OnClick(MenuItem As [[SDBMenuItem]])}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |MenuItem|[[SDBMenuItem]]|Clicked menu item.}}&lt;br /&gt;
&lt;br /&gt;
===Event description===&lt;br /&gt;
&lt;br /&gt;
Event is called when user clicks on given toolbar/menu item. Event handler receives clicked menu item as the argument.&lt;br /&gt;
&lt;br /&gt;
===Example code===                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Sub OnClickHandler(MenuItem)&lt;br /&gt;
  &#039; Event code goes here...&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&#039; Assume we have already initialized the MenuItem variable&lt;br /&gt;
Script.RegisterEvent MenuItem, &amp;quot;OnClick&amp;quot;, &amp;quot;OnClickHandler&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBMenuItemEvents|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::OnClickFunc&amp;diff=8383</id>
		<title>ISDBMenuItem::OnClickFunc</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBMenuItem::OnClickFunc&amp;diff=8383"/>
		<updated>2013-04-23T15:06:15Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: added deprecation note + info about OnClick event.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBMenuItem|ISDBMenuItem|Property Get/Let OnClickFunc As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Name of the function that is called when the item is clicked. The function is expected to be in [[ISDBMenuItem::UseScript|UseScript]] file. There is one parameter passed to the function - this menu item ([[SDBMenuItem]] object).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deprecated&#039;&#039;&#039;: Use the [[ISDBMenuItemEvents::OnClick|OnClick]] event registration instead.&lt;br /&gt;
&lt;br /&gt;
===Example code===                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
&#039;The function to be called can look like:&lt;br /&gt;
&lt;br /&gt;
Sub OnMenuItemClick(Item)&lt;br /&gt;
  &#039; Some code here&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBMenuItem|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBMenuItem&amp;diff=8382</id>
		<title>SDBMenuItem</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBMenuItem&amp;diff=8382"/>
		<updated>2013-04-23T15:03:10Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: deprecated OnClickFunc, UseScript.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBMenuItem ==&lt;br /&gt;
&lt;br /&gt;
MediaMonkey menus and toolbars are represented by same structure. Both menu items and toolbar buttons are represented by SDBMenuItem objects. [[SDBUI|SDB.UI]] object provides references to existing toolbars and menus and also contains toolbar/menu manipulation methods.&lt;br /&gt;
&lt;br /&gt;
=== ISDBMenuItem members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBMenuItem::Caption|Caption]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::Enabled|Enabled]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::Hint|Hint]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::Checked|Checked]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::IconIndex|IconIndex]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::OnClickFunc|OnClickFunc]] |Property Get/Let | Deprecated&lt;br /&gt;
|[[ISDBMenuItem::ShortCut|ShortCut]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::UseScript|UseScript]] |Property Get/Let | Deprecated &lt;br /&gt;
|[[ISDBMenuItem::Visible|Visible]] |Property Get/Let |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ISDBMenuItemEvents members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBMenuItemEvents::OnClick|OnClick]] |Event |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
=== Related Topics ===&lt;br /&gt;
*[[ISDBUI::Menu Compendium]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::AddMenuItemSub&amp;diff=8381</id>
		<title>ISDBUI::AddMenuItemSub</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::AddMenuItemSub&amp;diff=8381"/>
		<updated>2013-04-23T15:01:52Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: related topics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBUI|ISDBUI|Function AddMenuItemSub(ParentItem As [[SDBMenuItem#ISDBMenuItem_members|ISDBMenuItem]], InSection As Long, ItemOrder As Long) As [[SDBMenuItem]]}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |ParentItem |[[SDBMenuItem#ISDBMenuItem_members|ISDBMenuItem]] |Specifies where to add the new item, it can either be any of Menu_xxx properties or a value returned from a previous call to [[ISDBUI::AddMenuItemSub]]&lt;br /&gt;
 |InSection |Long |To which section of the ParentItem to add the new item (section is a part separated by two separator items). Last section(0), The first(1), The second(2), ..., The first from bottom, i.e.the last(-1), The second from bottom(-2), ...&lt;br /&gt;
 |ItemOrder |Long |Where will the item appear within the section: The last(0), The first(1), The second(2), ..., The first from bottom i.e.the last(-1), The second from bottom (-2), ...}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Works as [[ISDBUI::AddMenuItem]], only the created item contains sub-menu.&lt;br /&gt;
&lt;br /&gt;
=== Related Topics === &lt;br /&gt;
&lt;br /&gt;
*[[ISDBUI::Menu Compendium]]&lt;br /&gt;
*[[ISDBUI::AddMenuItem]] &lt;br /&gt;
*[[ISDBUI::AddMenuItemSep]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::AddMenuItemSep&amp;diff=8380</id>
		<title>ISDBUI::AddMenuItemSep</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::AddMenuItemSep&amp;diff=8380"/>
		<updated>2013-04-23T15:01:48Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: related topics&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBUI|ISDBUI|Function AddMenuItemSep(ParentItem As [[SDBMenuItem#ISDBMenuItem_members|ISDBMenuItem]], InSection As Long, ItemOrder As Long) As [[SDBMenuItem]]}}&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
{{MethodParameters &lt;br /&gt;
 |ParentItem |[[SDBMenuItem#ISDBMenuItem_members|ISDBMenuItem]] |Specifies where to add the new item, it can either be any of Menu_xxx properties or a value returned from a previous call to [[ISDBUI::AddMenuItemSub]]&lt;br /&gt;
 |InSection |Long |To which section of the ParentItem to add the new item (section is a part separated by two separator items). Last section(0), The first(1), The second(2), ..., The first from bottom, i.e.the last(-1), The second from bottom(-2), ...&lt;br /&gt;
 |ItemOrder |Long |Where will the item appear within the section: The last(0), The first(1), The second(2), ..., The first from bottom i.e.the last(-1), The second from bottom (-2), ...}}&lt;br /&gt;
&lt;br /&gt;
===Method description===&lt;br /&gt;
&lt;br /&gt;
Works as [[ISDBUI::AddMenuItem]], only the created item is a separator (=a horizontal line).&lt;br /&gt;
&lt;br /&gt;
=== Related Topics === &lt;br /&gt;
&lt;br /&gt;
*[[ISDBUI::Menu Compendium]]&lt;br /&gt;
*[[ISDBUI::AddMenuItem]] &lt;br /&gt;
*[[ISDBUI::AddMenuItemSub]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::Menu_Compendium&amp;diff=8379</id>
		<title>ISDBUI::Menu Compendium</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::Menu_Compendium&amp;diff=8379"/>
		<updated>2013-04-23T14:55:25Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: added related topics, better description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Menu items can be added by [[ISDBUI::AddMenuItem|SDB.UI.AddMenuItem]] method, sub items are added through [[ISDBUI::AddMenuItemSub|SDB.UI.AddMenuItemSub]] and menu separator is added by [[ISDBUI::AddMenuItemSep|SDB.UI.AddMenuItemSep]].&lt;br /&gt;
&lt;br /&gt;
Pop-up menus (right-click):&lt;br /&gt;
(NP = now playing, Tracklist = list browser, tree = tree on the left with artist, album, podcast, etc...)&lt;br /&gt;
*[[ISDBUI::Menu Pop NP]]&lt;br /&gt;
*[[ISDBUI::Menu Pop NP MoreFrom]]&lt;br /&gt;
*[[ISDBUI::Menu Pop NP SendTo]]&lt;br /&gt;
*[[ISDBUI::Menu Pop TrackList]]&lt;br /&gt;
*[[ISDBUI::Menu Pop TrackList MoreFrom]]&lt;br /&gt;
*[[ISDBUI::Menu Pop TrackList SendTo]]&lt;br /&gt;
*[[ISDBUI::Menu Pop Tree]]&lt;br /&gt;
*[[ISDBUI::Menu Pop Tree SendTo]]&lt;br /&gt;
&lt;br /&gt;
Tray icon right-click menu:&lt;br /&gt;
*[[ISDBUI::Menu TrayIcon]]&lt;br /&gt;
&lt;br /&gt;
Menus:&lt;br /&gt;
*[[ISDBUI::Menu Edit]]&lt;br /&gt;
*[[ISDBUI::Menu Export]]&lt;br /&gt;
*[[ISDBUI::Menu Help]]&lt;br /&gt;
*[[ISDBUI::Menu Play]]&lt;br /&gt;
*[[ISDBUI::Menu Scripts]]&lt;br /&gt;
*[[ISDBUI::Menu Tools]]&lt;br /&gt;
*[[ISDBUI::Menu View]]&lt;br /&gt;
&lt;br /&gt;
Toolbars:&lt;br /&gt;
*[[ISDBUI::Menu TbStandard]]&lt;br /&gt;
*[[ISDBUI::Menu TbAdvanced]]&lt;br /&gt;
*[[ISDBUI::Menu TbCategorize]]&lt;br /&gt;
*[[ISDBUI::Menu TbEdit]]&lt;br /&gt;
*[[ISDBUI::Menu TbNavigation]]&lt;br /&gt;
*[[ISDBUI::Menu TbNPEdit]]&lt;br /&gt;
&lt;br /&gt;
===Related Topics===&lt;br /&gt;
*[[ISDBUI::AddMenuItem]] &lt;br /&gt;
*[[ISDBUI::AddMenuItemSep]] &lt;br /&gt;
*[[ISDBUI::AddMenuItemSub]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::MainWindowFocus&amp;diff=8378</id>
		<title>ISDBUI::MainWindowFocus</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUI::MainWindowFocus&amp;diff=8378"/>
		<updated>2013-04-23T14:52:01Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBUI|ISDBUI|Property Get/Let MainWindowFocus As Int}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Returns or sets the currently focused control of the main window. Possible values are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;0&#039;&#039;&#039;: Undefined&lt;br /&gt;
* &#039;&#039;&#039;1&#039;&#039;&#039;: Tree&lt;br /&gt;
* &#039;&#039;&#039;2&#039;&#039;&#039;: Tracklist&lt;br /&gt;
* &#039;&#039;&#039;3&#039;&#039;&#039;: Search&lt;br /&gt;
* &#039;&#039;&#039;4&#039;&#039;&#039;: Now Playing&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1210}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::MainTree&amp;diff=8377</id>
		<title>ISDBApplication::MainTree</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBApplication::MainTree&amp;diff=8377"/>
		<updated>2013-04-23T14:47:35Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: link to SDBTree object&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBApplication|ISDBApplication|Property Get MainTree As [[SDBTree]]}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Returns [[SDBTree]] object for operations on the main tree.&lt;br /&gt;
&lt;br /&gt;
===Example code===&lt;br /&gt;
This example shows how to hide some main tree nodes                    &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Dim Tree&lt;br /&gt;
Set Tree = SDB.MainTree&lt;br /&gt;
&lt;br /&gt;
Tree.Node_MyComputer.Visible = False&lt;br /&gt;
Tree.Node_Web.Visible = False&lt;br /&gt;
Tree.Node_Radio.Visible = False&lt;br /&gt;
Tree.Node_Library.Visible = False&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBApplication|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBApplication|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBUI&amp;diff=8376</id>
		<title>SDBUI</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBUI&amp;diff=8376"/>
		<updated>2013-04-23T14:45:22Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: MainWindowFocus introduced in…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBUI ==&lt;br /&gt;
&lt;br /&gt;
Object for manipulation of User Interface elements.&lt;br /&gt;
&lt;br /&gt;
=== ISDBUI members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUI::AddMenuItem|AddMenuItem]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddMenuItemSep|AddMenuItemSep]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddMenuItemSub|AddMenuItemSub]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddOptionSheet|AddOptionSheet]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddOptionSheetEx|AddOptionSheetEx]] |Method |  &lt;br /&gt;
|[[ISDBUI::AddPropertiesSheet|AddPropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::AddToolbar|AddToolbar]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::GetToolbar|GetToolbar]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::DeleteOptionSheet|DeleteOptionSheet]] |Method |  &lt;br /&gt;
|[[ISDBUI::DeletePropertiesSheet|DeletePropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::HidePropertiesSheet|HidePropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
|[[ISDBUI::MainWindowFocus|MainWindowFocus]] |Property Get/Let | From 3.1.0 &lt;br /&gt;
|[[ISDBUI::Menu_Edit|Menu_Edit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Export|Menu_Export]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_File|Menu_File]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Help|Menu_Help]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Play|Menu_Play]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow|Menu_Pop_NP_MainWindow]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow_MoreFrom|Menu_Pop_NP_MainWindow_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MainWindow_SendTo|Menu_Pop_NP_MainWindow_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP|Menu_Pop_NP]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_MoreFrom|Menu_Pop_NP_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_NP_SendTo|Menu_Pop_NP_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList|Menu_Pop_TrackList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList_MoreFrom|Menu_Pop_TrackList_MoreFrom]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_TrackList_SendTo|Menu_Pop_TrackList_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_Tree|Menu_Pop_Tree]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Pop_Tree_SendTo|Menu_Pop_Tree_SendTo]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Scripts|Menu_Scripts]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbAdvanced|Menu_TbAdvanced]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbCategorize|Menu_TbCategorize]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbEdit|Menu_TbEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNavigation|Menu_TbNavigation]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPEdit|Menu_TbNPEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPList|Menu_TbNPList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbNPMain|Menu_TbNPMain]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbSearch|Menu_TbSearch]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TbStandard|Menu_TbStandard]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_Tools|Menu_Tools]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_TrayIcon|Menu_TrayIcon]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::Menu_View|Menu_View]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewActiveX|NewActiveX]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewButton|NewButton]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewCheckBox|NewCheckBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDockablePanel|NewDockablePanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDockablePersistentPanel|NewDockablePersistentPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewDropDown|NewDropDown]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewEdit|NewEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewForm|NewForm]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewGroupBox|NewGroupBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewLabel|NewLabel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewListBox|NewListBox]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewMultiLineEdit|NewMultiLineEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewPanel|NewPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewRadioButton|NewRadioButton]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewSpinEdit|NewSpinEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTrackBar|NewTrackBar]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTranspPanel|NewTranspPanel]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewTreeList|NewTreeList]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::NewMaskEdit|NewMaskEdit]] |Property Get |  &lt;br /&gt;
|[[ISDBUI::ShowOptions|ShowOptions]] |Method |  &lt;br /&gt;
|[[ISDBUI::ShowPropertiesSheet|ShowPropertiesSheet]] |Method | From 4.0 &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUI|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBMenuItem&amp;diff=8375</id>
		<title>SDBMenuItem</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBMenuItem&amp;diff=8375"/>
		<updated>2013-04-23T14:42:58Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: clarified description, hints for manipulation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBMenuItem ==&lt;br /&gt;
&lt;br /&gt;
MediaMonkey menus and toolbars are represented by same structure. Both menu items and toolbar buttons are represented by SDBMenuItem objects. [[SDBUI|SDB.UI]] object provides references to existing toolbars and menus and also contains toolbar/menu manipulation methods.&lt;br /&gt;
&lt;br /&gt;
=== ISDBMenuItem members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBMenuItem::Caption|Caption]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::Enabled|Enabled]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::Hint|Hint]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::Checked|Checked]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::IconIndex|IconIndex]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::OnClickFunc|OnClickFunc]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::ShortCut|ShortCut]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::UseScript|UseScript]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBMenuItem::Visible|Visible]] |Property Get/Let |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ISDBMenuItemEvents members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBMenuItemEvents::OnClick|OnClick]] |Event |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBMenuItem|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
=== Related Topics ===&lt;br /&gt;
*[[ISDBUI::Menu Compendium]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBUIListBox&amp;diff=8369</id>
		<title>SDBUIListBox</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBUIListBox&amp;diff=8369"/>
		<updated>2013-04-20T23:35:52Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBUIListBox ==&lt;br /&gt;
&lt;br /&gt;
Listbox (UI element).&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1208}}&lt;br /&gt;
&lt;br /&gt;
=== ISDBUIListBox members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUIListBox::Common|Common]] |Property Get |  &lt;br /&gt;
|[[ISDBUIListBox::ItemIndex|ItemIndex]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIListBox::Items|Items]] |Property Get/Let |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ISDBUIListBoxEvents members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUIListBoxEvents::OnChange|OnChange]] |Event |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUIListBox|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=SDBUIEdit&amp;diff=8368</id>
		<title>SDBUIEdit</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=SDBUIEdit&amp;diff=8368"/>
		<updated>2013-04-20T23:33:01Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: introduced&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AutomationObjectsList}}&lt;br /&gt;
== CoClass SDBUIEdit ==&lt;br /&gt;
&lt;br /&gt;
Edit Box (UI element).&lt;br /&gt;
&lt;br /&gt;
=== ISDBUIEdit members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUIEdit::Common|Common]] |Property Get |  &lt;br /&gt;
|[[ISDBUIEdit::Text|Text]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIEdit::MaxLength|MaxLength]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIEdit::PasswordChar|PasswordChar]] |Property Get/Let |  &lt;br /&gt;
|[[ISDBUIEdit::SelLength|SelLength]] |Property Get/Let | From 3.1.0.&lt;br /&gt;
|[[ISDBUIEdit::SelStart|SelStart]] |Property Get/Let | From 3.1.0.&lt;br /&gt;
|[[ISDBUIEdit::SelText|SelText]] |Property Get/Let | From 3.1.0. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ISDBUIEditEvents members ===&lt;br /&gt;
   &lt;br /&gt;
{{MethodsList &lt;br /&gt;
|[[ISDBUIEditEvents::OnChange|OnChange]] |Event |  &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUIEdit|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=ISDBUIEdit::SelText&amp;diff=8367</id>
		<title>ISDBUIEdit::SelText</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=ISDBUIEdit::SelText&amp;diff=8367"/>
		<updated>2013-04-20T23:32:27Z</updated>

		<summary type="html">&lt;p&gt;Michal.kocarek: introduced&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MethodDeclaration|SDBUIEdit|ISDBUIEdit|Property Get/Let SelText As String}}&lt;br /&gt;
&lt;br /&gt;
===Property description===&lt;br /&gt;
&lt;br /&gt;
Selected text (can&#039;t be edited using this property).&lt;br /&gt;
&lt;br /&gt;
{{Introduced|3.1.0.1207}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripting|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Automation objects|{{PAGENAME}}]]&lt;br /&gt;
[[Category:CoClass SDBUIEdit|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Interface ISDBUIEdit|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Michal.kocarek</name></author>
	</entry>
</feed>