Messenger Plus! Live - Scripting Documentation

Messenger Plus! Live

Introduction to Scripting

Welcome to the documentation of the Messenger Plus! Live scripting system. This technical documentation is intended to be read by script developers. Whether it is to make your first script, to get more information on a scripting subject or to know the parameters for a given function, you've come to the right place!

The Messenger Plus! Live scripting system is based on Microsoft's JScript 5.6. If you've ever created scripts for web pages then you probably know what JScript, or its cousin JavaScript, is. If not, you don't have to worry, JScript is an easy language to work with for anybody who's done some coding before and that can be learned quickly for those interested in the subject. Despite being simple, JScript also has the advantage of being an object-oriented language that also comes with native support for ActiveX controls, regular expressions and more. For more information about JScript's fundamentals, please visit the MSDN web site. You should spend about an hour reading about the language if you have no idea how it works, don't spend too much time on it though, the best way to learn is by practicing! Just keep the JScript's documentation opened for future reference or find some good tutorials on the web.

Another technology you should be familiar with before you can create full featured Messenger Plus! scripts is XML. XML stands for eXtensible Markup Language and looks a lot like HTML. It is basically a way to define data in text form. If you've never worked with XML before, you'll quickly see how straightforward it can be. A lot of tutorials can be found on the internet and despite the fact that XML can be typed in any text editor, it is highly recommended that you get a good XML editor that will be able to validate your syntax. The Messenger Plus! Live scripting system requires XML in several places that are optional for script beginners like the ScriptInfo configuration file and the script's Windows Interface files. Each of them is defined in an XML Schema file that's meant to be read in graphic form, do not try to read it in XML text form as this will make your task more difficult than it should be. A very good XML editor capable of perfectly rendering XML Schema files is XMLSpy from Altova (the Standard Edition is available as a free trial).

Aside from the language and the technology, what you mostly need is the will to learn how to work with the system. Scripting is "easy" as long as you don't mind spending the first couple of hours wondering how things work. This documentation includes explanation pages, references, examples, ... use them! If you do, you'll be able to script anything you want in Messenger in no time and get exactly what you expect from the software. If you don't feel easy about scripting, just take it one step at a time, spend time in the various topics/examples available, and stick to reproducing what you see while bringing your own small modifications to the existing code. Your first lesson awaits you in what's a Messenger Plus! script.

If you need help about anything related to scripting, whether it's about JScript, XML or one of the functions, feel free to visit the official Messenger Plus! forum. Please remember to search if somebody posted a similar question before you and if the answer was already given: you'll get your answer faster and it will save us some time to help other members. Also, if you become a more advanced scripter with time, it would be appreciated if you could help on the forum and answer people's questions when you know the answer :).

Enjoy!
Patchou

Last update: March 2nd 2009
Documented version: Messenger Plus! Live 4.81
Latest update available at msgpluslive.net.


Messenger Plus! Live

Getting Started

The following topics should be read in the specified order if you want to learn how to create scripts in Messenger Plus!.

What's a Messenger Plus! Script?

Scripting Environment

Your First Script


Getting Started

What's a Messenger Plus! Script?

Messenger Plus! scripts are text files loaded and interpreted by Messenger Plus! to add new functionalities to Windows Live Messenger. These additions can range from simple automated tasks for your own personal use to more complex windows based features similar to what can be found in Messenger Plus! Live. For example, one could create a 5 line script that changes his sign-in name based on the location where he's signing in. Someone else could write a multi-page script to create an automated screenshot sender. A lot can be done with the Messenger Plus! Live scripting system but as developer, you're the one who'll ultimately decide what to do with it.

Messenger Plus! scripts replace the old Messenger Plus! plugins that were available in Messenger Plus! 3. If you used to develop plugins for the previous version of Messenger Plus!, please read from Plugins to Scripts. Scripts are easier to develop, easier to distribute and much more powerful than the old plugins. Messenger Plus! Live also comes with its own Script Packaging system that eliminates the need for custom installation procedures. A basic script editor has even been integrated to Messenger Plus! making the creation of simple scripts a matter of minutes!

Scripts are organized in folders and files, by default located in the "Scripts" subdirectory of the main Messenger Plus! Live installation directory (by default: C:\Program Files\Messenger Plus! Live\Scripts). Each script has its own directory and the name of the directory is used by default as script's name. The actual JScript code of the scripts is kept in ".js" files saved in Unicode. Having Unicode files reduces the time it takes to load the file (as JScript works internally in Unicode) and also insures complete international compatibility.

By default, every script is created with one file named like the script's directory. The file can be renamed and more can be added if necessary. Having more than one file for a script can be useful to re-use existing portion of codes without mixing them with your own. Every ".js" file present in the directory is automatically loaded, in alphabetical order, and interpreted when Messenger Plus! loads the script so make sure to keep your file count to its strict as more files means more code and more code means longer loading times. Note that ".js" files present in subdirectories will not be loaded. Scripts are loaded when Messenger starts and are not dependant on who is the current active Messenger user. This means that if a script is enabled, it is enables for anybody using Messenger on a given Windows account.

In addition to ".js" files, scripts can add any file they want in their directory to be used while the script is loaded. However, some files/directories have a special meaning to Messenger Plus!, here are they:

  • ScriptInfo.xml. This file is loaded when the script is started and contains information about the script such as its name, its description, the menus it should display... for more information, please read Packaging your Script.
  • Images. This is the default directory where Messenger Plus! searches for images when loading an interface window created by the script. However, you can put any other file you want in this directory.

Now that you know what's a Messenger Plus! script, let's discover your scripting environment.

See Also

Introduction to Scripting, Scripting Environment.


Getting Started

Scripting Environment

Having a capable scripting system is not enough if what's surrounding it is not adapted to rapid development scenarios. That's why Messenger Plus! Live was designed with a special developer's mode. This option makes developing scripts an easier task while shielding end-users from boring technicalities at the same time. When debugging options are enabled, developers get access to a special debug window as well as special advantages designed to help them get what they want, how they want.

Your main point of entry in the scripting system is the Preferences panel (you'll need to be signed in to access it). From the Plus! menu of your contact list, select Preferences and click on Scripts in the left section (the Scripts section is available in the General tab). This window lists every script currently installed as well as their running state. Scripts that are not running are generally either disabled or contain syntax errors. End-users will generally stick to the "Import" button when they'll want to add a script to Messenger Plus!. The Import button loads a script pack and installs the script automatically based on the developer's configuration file. The Remove button deletes the whole directory of the script and places it in the Recycle Bin (just in case removing the script was a bad idea after all ;).

Before you create a new script, you'll want to check "Enable debugging options" and exit the Preferences window. If this is the first time you enable this mode, you'll automatically see the Script Debugging window (if not, the option to show/hide this window is accessible from the Plus! menu of your contact list). The Script Debugging window gives you access to every script currently running in Messenger. The "Debug" menu button links to a couple of functions including quick access to your script's source code. That being said, the main purpose of this window is definitively to show debugging information traced by scripts. You'll also see automatic traces for events executed in your script and error codes with the location in your code where the error occurred. When coding scripts in Messenger Plus!, this window will probably be one of your best friends :).

Enabling debugging options also has one more noticeable advantage. Messenger Plus! comes with its own script editor. This editor supports syntax coloring, outlining, basic IntelliSense and many other features designed to help you while you code. It is probably enough for script developers who want to code their scripts quickly without starting an external software. However, we understand that the built-in editor has its limitations and because so many great JScript editors already exist on the market (like Visual Studio), Messenger Plus! lets you use your favorite editor by monitoring changes done in your ".js" script files. When debugging option are enabled, if a script file is modified by an external application, the script is automatically reloaded to apply the changes. This means that every time you save your script, you instantly see the changes without having to perform any extra manipulation. Note however that in order to avoid any possible kind of confusion, this functionality is disabled while the script editor window is displayed. Also, remember that this feature is only intended to be used by developers, this means that you cannot rely on it for public use of your script (so don't code a feature that expects code file changes to be intercepted by Messenger Plus!).

There is also one more thing to remember about restarting your scripts: it is considered to be a good practice to close every window your script may be displaying, including message boxes, before the script is stopped. Because of the way script code is executed, if a script is stopped in its execution while it is displaying a modal window (a window that stops the execution of your script until it's closed), Messenger may completely crash. If you forget to close a window and crash Messenger as a result of stopping/restarting your script, don't worry about possible problems, there isn't any (no need to send an error report either).

If you're new to the Messenger Plus! Live scripting system, it is recommended that you stick with the built-in editor for a while. It will probably help you have a more complete understanding of the system and you'll see that the built-in editor is not that bad either ;). Now that you have enabled the debugging option, you're ready to create your first script!

See Also

What's a Messenger Plus! Script?, Your First Script.


Getting Started

Your First Script

Creating a new script is easy, even for a non-developer. All you have to do is go to the Scripts section in the Preferences and click on "Create New". The script's name will be used to create the new directory for the script as well as the first JScript file. Nothing else will be created as nothing else is necessary. So, start by creating a new script called "My First Script", click on "Create New", enter the name of the script and press OK. The file will be created, the new script automatically enabled and the editor window will popup with the following code:

function OnEvent_Initialize(MessengerStart)
{
}

function OnEvent_Uninitialize(MessengerExit)
{
}

Two empty functions are automatically added to every new script: OnEvent_Initialize and OnEvent_Uninitialize. These functions are event handlers known by Messenger Plus!, they are called in your script automatically when a specific event occurs. Those two are called when your script is started and when it's ended. They both have one parameter, specifying when the script was launched or stopped (you can check the documentation of these events later on for more information).

If the Script Debugging window is not visible, open it now (Plus! menu, check "Show Script Debugging". If you don't have this menu, please read Scripting Environment). Make sure the combo box in the Script Debugging window is set on "My First Script" then, in the editor window, click on "Save All" and "OK" for the confirmation message. Back in the Script Debugging window you'll notice the following entries:

Script has been stopped
Script is starting
Script is now loaded and ready
Function called: OnEvent_Initialize

Each time a script file is modified and saved, the script has to be stopped and restarted to apply the changes. Clicking on "Save All" stops the script, saves the files and displays a confirmation message. When the confirmation message is dismissed, the script is restarted, JScript files are loaded and if no major syntax error is detected, the "Script is now loaded and ready" message is displayed in the debugging window. Global variables and function calls are immediately executed during the loading procedure (your new script does not have any).

The first thing Messenger Plus! does once a script has been loaded is to call the OnEvent_Initialize function, if it exists. When an event is called, it is automatically mentioned in the debugging window. Depending on the kind of event your script is handling, it can be preferable to disable this behavior to avoid getting too many useless traces. To do so, click on the "Debug" menu of the script debugging window and uncheck "Trace Event Calls". The debugging window is the best place for developers to output diagnostic messages to keep track of what's going on in their scripts. Scripts that produce little or no diagnostic text at all are generally harder to debug, that's why you should always remember to send some kind of diagnostic information based on where you are in the script, variables that you are using, etc...

Because JScript alone wouldn't be enough to create scripts that interact well with Messenger, the Messenger Plus! Live scripting system comes with over 100 functions and properties as well as nearly 50 events, all specifically designed for your Messenger needs. Functions and properties are organized into two kinds of objects: global objects and instantiated objects.

  • Global objects are available instantly from anywhere in your script. Global objects act as name spaces for functions of general interest through out the scripts. An example of such object is Debug which allows to send text to the script debugging window.
  • Instantiated objects are returned by some functions of the API or passed as parameters in events. They refer to a particular instance of an object in Messenger that can exist more than once. An example of such object is ChatWnd which lets you interact with the various chat windows of Messenger.

Let's start with the this famous international example of what a good program should say to its creator when emerging from the cyber-void. Simply replace the empty OnEvent_Initialize function of your new script by this one:

function OnEvent_Initialize(MessengerStart)
{
    Debug.Trace("Hello World!");
}

Click on "Save All", dismiss the confirmation message and take a look as the debugging window. The last entry will say "Hello World!". That's because the OnEvent_Initialize function, which is called when the script starts, now calls the Trace function from the Debug object. If you look as the documentation for Trace, you'll see that it takes a single string parameter which is the text that's sent to the debugging window. You can experiment adding calls to Debug.Trace in OnEvent_Uninitialize, you'll see that they are executed when you click on "Save All", before dismissing the confirmation message (because the script has been stopped which triggered the Uninitialize event).

Of course, a script that just says hi to its developer is not very useful to anybody. Let's make it more interesting. Just copy paste the following code after the OnEvent_Uninitialize function, at the end of your script.

function OnEvent_Signin(Email)
{
    var Message = "Hello Master " + Messenger.MyName + "!";
    Message = MsgPlus.RemoveFormatCodes(Message);
    MsgPlus.DisplayToast("", Message);
}

Save the script, sign out from Messenger and sign back in. You'll see a "toast" (a popup window displayed in the corner of your screen) welcoming you personally to Messenger (if Messenger itself displayed a toast after you signed in, you may have to close it to see the one displayed by the script). To achieve this ego-boosting feature, we first needed to locate the proper event in the Events Reference. OnEvent_Initialize was not a good choice here as this event occurs as soon as the script starts, which is generally when Messenger starts and no user is signed in at that time. For that reason, OnEvent_Signin seemed to be the best choice for that feature.

Let's analyze each line of this script.

  • The first line in the OnEvent_Signin function creates the message that will be displayed. A variable called "Message" is declared and is assigned a string composed of two static strings and a property: Messenger.MyName. This property returns a string equivalent to the name of the currently signed in user. The message is simply created by attaching the 3 strings to each others.
  • The second line is something you'll have to remember to do when working with strings that contain contact names or personal messages. Names and personal messages can include control characters used by Messenger Plus! to display color or change various text attributes such as bold, italic, etc... For example, "[i][/i]" displays the text in italic in the contact list and in chat windows, however, these tags are not supported everywhere. That's why "Message" is sent to MsgPlus.RemoveFormatCodes: this function simply parses the string, removes eventual control characters from it and returns the result. Feel free to ignore it for now.
  • The third line is the pièce de resistance, the function that actually displays the toast on screen. MsgPlus.DisplayToast can take several parameters but is used here in its simplest form. The first parameter is the title of the toast (if not specified like in this example, the default title is used) and the second parameter is the actual message to display.

Now, you may think "hey, I'm the only master on this computer, I don't want the script to welcome others in this way". You're right about that so let's change the OnEvent_Signin function to this:

function OnEvent_Signin(Email)
{
    if(Email == "your@email.com") //Change for your sign-in email
    {
        var Message = "Hello Master " + Messenger.MyName + "!";
        Message = MsgPlus.RemoveFormatCodes(Message);
        MsgPlus.DisplayToast("", Message);
    }
}

Just substitute "your@email.com" with your actual sign-in email (in lower case), sign out and sign back in. You'll get the message again however, if somebody else signs-in, the toast won't be displayed as the Email == "your@email.com" condition will be false. This last example demonstrates the user of the parameters sometimes sent along with events. Here, the "Email" parameter is obviously the Email of the user who just signed in, you can use it to adapt the script accordingly.

Your first script is now complete. It is important that you really understand what's been explained in this document before continuing further in the documentation. You should spend some time modifying your first script, try to experiment with some new events, new functions, new parameters, they are all listed in the Reference sections of this documentation.

See Also

Objects Reference, Events Reference.


Messenger Plus! Live

Working with Scripts

The following topics can be read in any order. Each one focuses on a particular subject in the Messenger Plus! Live scripting system.

From Plugins to Scripts (only for people who developed plugins in Messenger Plus! 3)

Packaging your Script

Windows for your Script

Testing your Windows


Working with Scripts

From Plugins to Scripts

This document is intended to be read by developers familiar with the old plugin system of Messenger Plus! 3.

The old plugins system previously offered by Messenger Plus! has been deprecated and is no longer supported by Messenger Plus! Live. Developers of such plugins are faced with two options when upgrading their old plugins for Messenger Plus Live!:

  • Create a script proxy that will call their old plugin DLL.
  • Recreate their features from scratch in the new Messenger Plus! Live scripting system.

If you're in a hurry, solution 1 may sound appealing so you may want to know that this solution comes with a couple of limitations. First, the scripting API does not give direct access to the old Messenger COM object (from the days of Windows Messenger 4) which means that if your plugin was using the "iMessengerObj" or "oMessenger" parameter of Initialize, it will need to be modified to work in the new system. Also, if your plugin was created with the C/C++ interface (as opposed to the VB interface), you will need to use a DataBloc object to create the structure parameters for functions like ParseCommand.

Recreating your features directly in the scripting system may take longer but will bring several new advantages. The main obvious one is the rich API offered by the scripting system compared to the one that was available for plugins. Your script will be able to do much more and with less code. You'll also be able to take advantage of the interface windows feature of Messenger Plus! Live and create windows for your script that will completely blend in Messenger. Nevertheless, if you want to directly load your old plugin DLL, here is how to do it:

//Load a C plugin DLL
function LoadPlugin_Dll(DllPath)
{
    if(Interop.Call(DllPath, "Initialize", 8, "", 0) == 1)
        Debug.Trace("The C plugin has been initialized");
}

//Load a VB ActiveX object
function LoadPlugin_VB(ProgId)
{
    var PluginObj = new ActiveXObject(ProgId);
    if(PluginObj)
    {
        if(PluginObj.Initialize(8, "", undefined) == true)
            Debug.Trace("The VB plugin has been initialized");
    }
}

Here is an upgrade listing that will help you make the switch from the old system to the new one.

C/C++ Developers:

Plugins Interface | Scripting System | Additional Information
Initialize OnEvent_Initialize
OnEvent_Signin 		You should send 8 for the nVersion parameter.
sUserEmail is an empty string when called from OnEvent_Initialize and Email when called from OnEvent_Signin.
iMessengerObj must be null (send 0).
Uninitialize OnEvent_Uninitialize
OnEvent_Signout 		None.
Configure OnGetScriptMenu
OnEvent_MenuClicked 		Scripts create their own menus with OnGetScriptMenu or the ScriptInfo file. You can create your own "Configure" menu from there.
PublishInfo | OnGetScriptCommands | Scripts return the list of commands they support in OnGetScriptCommands or specify them in the ScriptInfo file. This information is used for informational purposes only in windows such as the Command Helper. It is the responsibility of scripts to parse every message sent for eventual commands or tags to replace.
ParseCommand OnEvent_ChatWndSendMessage Messenger Plus! Live does not search for specific script commands in messages sent by the user. Instead, every message is sent to scripts so that they can do their own analysis of the message. This removes the need for all your commands to start with "/x" and gives you much more flexibility for the output.
pParam->iConversationWnd must be null (send 0).
pParam->sContactName should be an empty string.
ParseTag OnEvent_ChatWndSendMessage Messenger Plus! Live does not search for specific script tags in messages sent by the user. Instead, every message is sent to scripts so that they can do their own analysis of the message. This removes the need for all your tags to start with "!X" and gives you much more flexibility for the output.
pParam->iConversationWnd must be null (send 0).
pParam->sContactName should be an empty string.
ReceiveNotify OnEvent_ChatWndReceiveMessage Messenger Plus! Live does not search for specific markers in messages that are received. Instead, every message is sent to scripts so that they can do their own analysis of the message.
pParam->iConversationWnd must be null (send 0).
pParam->sContactName is set to the Origin parameter of the event.
DisplayToast MsgPlus.DisplayToast
MsgPlus.DisplayToastContact 		None.
SetNewName | Messenger.MyName | None.
AddEventEntry | MsgPlus.LogEvent | None.

Additional note: when calling your old C/C++ plugin, make sure to convert your strings to ANSI if your plugin was not using the Unicode handlers. In JScript, every string is Unicode by default.

Visual Basic Developers:

Plugins Interface | Scripting System | Additional Information
Initialize | OnEvent_Initialize OnEvent_Signin | You should send 8 for the nVersion parameter. sUserEmail is an empty string when called from OnEvent_Initialize and Email when called from OnEvent_Signin. oMessenger must be undefined.
Uninitialize | OnEvent_Uninitialize OnEvent_Signout | None.
Configure | OnGetScriptMenu OnEvent_MenuClicked | Scripts create their own menus with OnGetScriptMenu or the ScriptInfo file. You can create your own "Configure" menu from there.
GetPublishInfo GetPublishCommandInfo | OnGetScriptCommands | Scripts return the list of commands they support in OnGetScriptCommands or specify them in the ScriptInfo file. This information is used for informational purposes only in windows such as the Command Helper. It is the responsibility of scripts to parse every message sent for eventual commands or tags to replace.
GetPublishTagInfo | None | Scripts should create entries in their own menu.
ParseCommand | OnEvent_ChatWndSendMessage | Messenger Plus! Live does not search for specific script commands in messages sent by the user. Instead, every message is sent to scripts so that they can do their own analysis of the message. This removes the need for all your commands to start with "/x" and gives you much more flexibility for the output. oConversationWnd must be undefined.
ParseTag | OnEvent_ChatWndSendMessage | Messenger Plus! Live does not search for specific script tags in messages sent by the user. Instead, every message is sent to scripts so that they can do their own analysis of the message. This removes the need for all your tags to start with "!X" and gives you much more flexibility for the output. oConversationWnd must be undefined.
ReceiveNotify | OnEvent_ChatWndReceiveMessage | Messenger Plus! Live does not search for specific markers in messages that are received. Instead, every message is sent to scripts so that they can do their own analysis of the message. oConversationWnd must be undefined. sContactName is set to the Origin parameter of the event.
DisplayToast | MsgPlus.DisplayToast MsgPlus.DisplayToastContact | None.
SetNewName | Messenger.MyName | None.
AddEventEntry | MsgPlus.LogEvent | None.

See Also

Interop Object, DataBloc Object, JScript's ActiveXObject.


Working with Scripts

Packaging your Script

Having the best script in the world is pretty much useless if you can't share it with other people. Because scripts were designed to be rapidly developed, they were also designed to be rapidly shared. For that reason, Messenger Plus! Live comes with its own script installation mechanism called Script Pack.

A Script Pack is a single file, with a ".plsc" extension, containing all the files and sub directories of your script. Creating such a file is ridiculously easy for simple reason: Script Packs are just and only plain zip files with a different extension. This means that you only need to zip all the files in your script directory (with your favorite zip tool, like Winzip) and replace the ".zip" extension with ".plsc". Only one thing is required to make your zip file a valid Script Pack: a ScriptInfo.xml file.

ScriptInfo.xml is a file placed in the script's directory (along with ".js" files). It is read when the script is loaded or imported and contains several information related to the script such as its name, its description, the menus it displays in Messenger, etc... the file does not need to be created for scripts to run locally, however, its presence is mandatory if the script has to be exported into a Script Pack. A full description of the content of the file can be found in the ScriptInfo Schema Reference, here is however an example of a simple ScriptInfo file that you can use for your script:

<ScriptInfo>
    <Information>
        <Name>My First Script</Name>
        <Description>This is my first script.</Description>
        <AboutUrl>http://www.msgpluslive.net</AboutUrl>
        <Version>1.00</Version>
    </Information>
</ScriptInfo>

Just copy paste what's above in a new text file, save it in your script's directory and rename it to "ScriptInfo.xml". The xml file can be saved in Unicode (UTF-16) if your language requires it. Now, select all the files in your script's directory, zip them and rename the zip file with a ".plsc" extension (example: rename "My First Script.zip" to "My First Script.plsc"). Your Script Pack is ready to go! to test it, just sign in Messenger and double click on the plsc file you've just created, if you followed the steps above correctly, you will get the "Import Script" window of Messenger Plus! Live. Once the script is imported, it is automatically activated. If a script with the same name already exists in the user's directory, its files are transparently replaced with the new ones (useful for upgrades).

In the XML code specified above, only <Name> is a required element. <Description>, <AboutUrl>, and <Version> can be removed if not needed. To ensure forward compatibility, specify the version of the script in the <Version> element (Messenger Plus! Live 4.20 and later) and not in the <Name> element. This will prevent duplicated copies of the same script from being installed on a user's system (as the name of the script is used to create the corresponding script's directory). It is also highly recommended to specify an <UpdateId> and a <BuildNumber> so that Messenger Plus! can properly notify the users of your script when you release a new version in the public database.

If you look at the first picture in ScriptInfo Schema Documentation, you'll see that several other elements are also available aside from <Information>. Two of them can be used during import: <OleFiles> and <DotNetFiles>. These are to be used if your script replies on external COM/ActiveX or .NET objects created by yourself or not supposed to come in standard with Windows. Files listed in those two elements will be registered properly in the system when the script is imported. For example, if you created an ActiveX object in VisualBasic for your script called "ExtraFunctionsVB.dll" (loaded with JScript's ActiveXObject object), your ScriptInfo file would have to look like this:

<ScriptInfo>
    <Information>
        <Name>My First Script</Name>
    </Information>

    <OleFiles>
        <FileName>ExtraFunctionsVB.dll</FileName>
    </OleFiles>
</ScriptInfo>

If you still have doubts about how to do something in particular in your ScriptInfo.xml file, you can download existing Script Pack files, change their extension to ".zip" and take a look at how the developer of the script created his own ScriptInfo file. Also, remember to always use a good XML editor to create your XML files as a real XML editor can validate your syntax and insure that your elements conform to the specified schema file. This will save you long hours of searching for errors caused by a missing or invalid tag in your XML file.

See Also

Introduction to Scripting, ScriptInfo Schema Reference.


Working with Scripts

Windows for your Script

Depending on what your script is doing, user input may be required at some point. For that reason, a very special feature was added to the Messenger Plus! Live scripting system called Interface Windows. If you take a look at the various windows of Messenger Plus! Live itself, you'll notice that they tend to blend nicely into Windows Live Messenger, have similar looking controls, use the same background color etc... a brand new User Interface system was created during the conception of Messenger Plus! Live to achieve what you can see in the software, one that's not based on resource files but specially crafted XML files.

The user interface system mentioned above can be accessed through scripting so your scripts can painlessly benefit from the whole interface engine. However, to use the system, you will need to get used to the way XML interface files are constructed and this may require a little bit of time. Interface files are not particularly complicated to understand, however, they contain a lot of different kinds of elements and attributes, some of them may not even be of any use to your scripts. The end result will be worth the trouble though as you won't need to create external DLLs to display your windows and you'll benefit from the current look of Windows Live Messenger as well as possible future updates. Your script will be guaranteed to appear just like any other Messenger Plus! window.

Interface Windows are created and displayed with a single call to MsgPlus.CreateWnd. The only parameters required for this function to succeed are the name of your XML interface file and the identifier of the window you want to create (each interface file can define more than one window). To demonstrate the feature, here is the XML definition of a simple window displaying "Hello World!". For now, don't try to understand the content of the text, just copy paste it to a plain text file called "InterfaceTest.xml" and save it in your script's directory.

<Interfaces xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <Window Id="WndTest" Version="1">
        <Attributes>
            <Caption>Test Window</Caption>
        </Attributes>

        <TitleBar>
            <Title><Text>Hello!</Text></Title>
        </TitleBar>

        <Position ClientWidth="170" ClientHeight="45"/>
        <DialogTmpl/>

        <Controls>
            <Control xsi:type="StaticControl" Id="LblTop">
                <Position Left="10" Top="10" Width="150"/>
                <Caption>Hello world!</Caption>
            </Control>

            <Control xsi:type="ButtonControl" Id="BtnClose">
                <Position Left="115" Top="25" Width="50"/>
                <Caption>Close</Caption>
            </Control>
        </Controls>
    </Window>

</Interfaces>

Now, create a new script called "Window Test" and replace the Initialize event by the following code:

function OnEvent_Initialize(MessengerStart)
{
    var Wnd = MsgPlus.CreateWnd("InterfaceTest.xml", "WndTest");
}

Save the script. If you did alright, you'll see a window titled "Test Window" in your task bar (it may have been displayed below the script editor). This window's title show "Window Test - Hello!", with a "Hello world!" message and a "Close" button. Note that because every window created by Messenger Plus! is modeless, your script continues to run as soon as the window gets created. Now let's take a closer look to the XML file.

First, a <Window> element is declared with two attributes: Id (used in your call to MsgPlus.CreateWnd to identify which window to show) and Version (just set it to "1" for now, this parameter will be used by future versions of Messenger Plus!). Inside the <Window> element are a couple of interesting sub elements:

  • <Attributes>. You'll often see this element in various other places. In a <Window> element it is used to define optional attributes for the window such as <Caption> (which is the caption of the window displayed in the task bar), <TopMost> (to make the window appear above every other), ...
  • <TitleBar>. Most Messenger Plus! windows display a title bar baring a Messenger Plus! logo, the name of the window and system buttons to minimize, maximum or close the window. Everything related to the title bar is defined in this element. If not specified otherwise, the name of the script will automatically be inserted in the title.
  • <Position>. Used to define the default width and height of the client area, this element can also be used to specify that the window can be resized. You may want to notice that the size is specified in Dialog Units, not Pixels. Every positions and sizes defined in interface files uses Dialog Units by default which allows the windows to adapt on various dpi settings (if this does not make any sense to you, forget about it).
  • <DialogTmpl>. This empty element is very important as it defines one of possible three choices for each window: dialog, window or child window. Most of your windows will probably be based on the dialog template which defines a double border and allows different kinds of extra settings such as a bottom bar.
  • <Controls>. This is where you'll define all the controls displayed in the window like static controls (text labels), buttons, checkboxes, lists, ...

Let's take a look at the controls defined in this window:

  • Each control has the same basic structure. A control is always defined with a <Control> element and two mandatory attributes: xsi:type and Id. xsi::type specifies the kind of control that's being defined, like a a static control or a button. Id is the unique identifier of the control in the window. No control can have the same Id in a given window or the creation of the window will fail (remember that as it can easily be the cause of copy/paste frustrations). The Id can be anything you want but cannot contain any space character. Although it is considered to be a good practice to prefix your identifiers with the kind of control you're defining (like "Btn" for buttons), it is not mandatory.
  • Next comes <Position>. This element is required for any kind of control. The Left and Top attributes are always mandatory, Width is generally required too, however, Height can be optional for controls that don't need it. For example, in the case of a single line static control and a button, the Height parameter is automatically computed by Messenger Plus! to prevent inconsistencies through out the windows. You can always specify your own value though.
  • Elements that come after <Position> are generally type dependant, meaning that each kind of control has its own set of possible elements and attributes. Here, we see <Caption> being used in both controls, however, we could also have used <BackgroundColor> for the static control and <Image> for the button which are elements reserved for each type of control respectively.

Now, you may be wondering "how am I supposed to know and remember all these elements and attributes names?"... the good news is that you don't have to, as long as you're using a good XML editor such as XMLSpy from Altova. Every XML file can be paired with its corresponding schema file which defines every possible element and attribute that can be inserted in the XML. Schema files also come with various comments to help you understand the purpose of some elements and attributes, when deemed necessary. In the case of XMLSpy, the editor also provides contextual help so you'll get lists of choices while you type your XML. These are all good reasons NOT to code your windows inside notepad so please, do yourself a favor and use a specialized XML editor to do the job :). The Interface Windows schema file and its documentation can be found in the schema reference section of this documentation.

Of course, the windows would be useless if you had no way to hear back from them. A special set of events was created for that occasion prefixed "OnWindowidEvent_". Notice how "WindowId" is written in italic: to avoid mixing the events coming from different windows, Messenger Plus! fires events named after the corresponding window's Id. In the case of our test window, all events will be prefixed "OnWndTestEvent_". A list of available events can be found in the events' reference but let's test this simply with a common purpose event: "CtrlClicked". This event is fired every time a control such as a button is clicked. You may already have noticed that clicking on "Close" in the test window currently does nothing, that's because the current code does not catch the "clicked" event for the button. Let's fix this by adding the following function at the end of the script:

function OnWndTestEvent_CtrlClicked(Wnd, ControlId)
{
    if(ControlId == "BtnClose")
        Wnd.Close(1);
}

The first parameter of the event is a PlusWnd object (the object representing your window) and the second one is the Id of the control that fired the clicked event. The function above checks if the event comes from the "Close" button (which has an Id equal to "BtnClose") and if so, calls the Close function of the PlusWnd object. The numeric parameter sent in Close is of no consequence and is just passed to the Destroyed event in case you would want to handle different types of close scenarios.

You can now experiment working with different kinds of controls and calling various functions from the PlusWnd object. A lot of possibilities are offered by this system and it is now up to you to discover them. Because this subject is an important and complex one, you should not hesitate to seek help in the official Messenger Plus! forum. Remember to spend time in the Interface Windows Reference too and practice! And finally, a special tool is also available to help you test your windows out of the Messenger environment, for more information, check out Testing your Windows.

See Also

Testing your Windows, Interface Windows Reference, PlusWnd Object, Interface Windows Events Reference.


Windows for your Script

Working with Scripts

Testing your Windows

Complex windows created with XML data can quickly become difficult to visualize and testing your windows in Messenger itself can sometimes cause additional complications and unnecessary delays. For those reasons, a special tool called "Interface Tester" is provided with the scripting API to help developers preview their creations quickly and without hassle.

The software can be downloaded and run from any directory and Messenger Plus! Live needs to be properly installed on the system (Messenger does not need to run). "Interface Tester" will be able to preview any file that is located in a sub-directory of the Messenger Plus!'s "Scripts" directory or in the "Interface" directory (for those interested in skinning Messenger Plus! itself).

In addition to displaying your windows on screen, "Interface Tester" is also capable of validating your XML files if the schema file is copied in the same directory and if MSXML 5.0 or above is installed on your system (you can get MSXML at microsoft.com). It is highly recommended that you do not redistribute any file that does not validate against the most current version of the Interface Windows' Schema File. If a file is considered to be invalid, "Interface Tester" will refuse to load it and will display an error message explaining the problem.

Download "Messenger Plus! Live - Interface Tester"

Note that this software is provided as-is as a development tool only. It is not meant for general public use and must not be redistributed without direct authorization.

See Also

Windows for your Script, Interface Windows Reference.


Messenger Plus! Live

Objects Reference

The Messenger Plus! Live scripting system comes with over 100 functions and properties, all specifically designed for your Messenger needs. The functions and properties are organized into two kinds of objects: global objects and instantiated objects. Global Objects are available instantly from anywhere in your script, they act as name spaces for functions of general interest through out the scripts. Instantiated Objects are returned by some functions of the API or passed as parameter in events, they refer to a particular instance of an object in Messenger that can exist more than once.

Global Objects:

Name | Description
Debug | Used by script developers to help find potential problems in their scripts.
Messenger | Gives access to various properties and functions of general internet in Messenger.
MsgPlus | Gives access to various properties and functions related to Messenger Plus!.
Interop | Allows developers to interact with outside libraries.

Instantiated Objects:

Name | Description
ChatWnds | Used to iterate a list of chat windows returned by a function of the API.
ChatWnd | Represents a chat window in Messenger.
Contacts | Used to iterate a list of contacts returned by a function of the API.
Contact | Holds the properties associated with one contact.
PlusWnd | Allows developers to control windows created with MsgPlus.Createwnd.
DataBloc | Represents a memory block created by Interop.Allocate.
Emoticons | Used to iterate a list of emoticons returned by a function of the API.
Emoticon | Holds the properties associated with one custom emoticon.

Note: every function and properties of every object listed here is intended to be called from the main thread of the application. Functions and properties will fail or may create unexpected bugs if called from a different thread.


Debug Object

Objects Reference

The Debug Object

The Debug object is a global object used by script developers to help find potential problems in their scripts. It does not affect end-user experience nor does it slow down scripts when debugging options are disabled.

Functions:

Name | Description
Trace | Sends text to the debug window.
ClearDebuggingWindow | Clears the content of the Script Debugging window.

Properties:

Name | Description
DebuggingWindowVisible | Allows script developers to show or hide the Script Debugging window.


Objects Reference - Debug

Debug::Trace

The Debug::Trace function sends text to the Script Debugging window. If the debugging options are not enabled, the function does nothing.

Syntax

Trace(
    [string] Text
);

Parameters

Text
[string] Text to send to the debug window. A carriage return is automatically added to the end of the string.

Return Value

No value is returned by this function.

Remarks

The Script Debugging window is visible when debugging options are enabled in the Preferences. For more information, please read Scripting Environment.

Function Information

Object | Debug
Availability | Messenger Plus! Live 4.00

See Also

Debug Object, Scripting Environment.


Objects Reference - Debug

Debug::ClearDebuggingWindow

The Debug::ClearDebuggingWindow function clears the content of the Script Debugging window for the current script.

Syntax

ClearDebuggingWindow();

Parameters

None.

Return Value

No value is returned by this function.

Remarks

The Script Debugging window is visible when debugging options are enabled in the Preferences. For more information, please read Scripting Environment.

Function Information

Object | Debug
Availability | Messenger Plus! Live 4.50

See Also

Debug Object, Scripting Environment.


Objects Reference - Debug

Debug::DebuggingWindowVisible

The Debug::DebuggingWindowVisible property allows script developers to show or hide the Script Debugging window. You can use this property to popup the window when a specific event or error occurs in your script.

This is a read/write property.
[boolean] DebuggingWindowVisible;

Data Type

A boolean value specifying whether or not the Script Debugging window is displayed.

Remarks

If "debugging options" are not enabled in the user's preferences, this property does nothing.

Property Information

Object | Debug
Availability | Messenger Plus! Live 4.00

See Also

Debug Object.


Messenger Object

Objects Reference

The Messenger Object

The Messenger object is a global object that gives access to various properties and functions of general internet in Messenger. The properties of the current Messenger user can also be accessed through this object.

Functions:

Name | Description
AutoSignin | Automatically signs-in the current user on Messenger.
Signout | Signs out the current user from the Messenger service.
OpenChat | Opens a chat window with the specified contact.

Properties:

Name | Description
Version | Current version of the Windows Live Messenger client.
VersionBuild | Build number of the Windows Live Messenger client.
MyEmail | Sign-in email address of the current user.
MyUserId | Messenger User ID of the current user.
ReceiveFileDir | Directory where files received by file transfer are stored.
MyStatus | Status of the current user.
MyName | Name of the current user.
MyPersonalMessage | Personal message of the current user.
MyCurrentMedia | Current "media" associated with the the current user.
MyDisplayPicture | Path to the current display picture file used by the current user.
MyContacts | List of all the contacts present in the current user's contact list.
CurrentChats | List of chat windows currently opened.
ContactListWndHandle | Window's handle of the contact list window.
CustomEmoticons | List of all the custom emoticons associated with the current user's account.


Objects Reference - Messenger

Messenger::AutoSignin

The Messenger::AutoSignin function automatically signs-in the current user on Messenger, if possible.

Syntax

[boolean] AutoSignin();

Parameters

None.

Return Value

A boolean value specifying if the auto-signin request was successfully sent to Messenger. See Remarks.

Remarks

For this function to succeed, the user must have checked "Remember my Password" and "Sign me in automatically" in Messenger.

Function Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object.


Objects Reference - Messenger

Messenger::Signout

The Messenger::Signout function signs out the current user from the Messenger service.

Syntax

Signout();

Parameters

None.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

None.

Function Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object.


Objects Reference - Messenger

Messenger::OpenChat

The Messenger::OpenChat function opens a chat window with the specified contact. If a chat window with this contact is already opened, the window is activated.

Syntax

[object] OpenChat(
    [var] Contact
);

Parameters

Contact
[var] A string containing the email of the contact or a Contact object.

Return Value

A ChatWnd object if the function succeeds or null if it fails.

This function typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

By default, if an email string is specified for Contact, this function searches for both Windows Live and Yahoo Messenger contacts. If the current user has twice the same contact in its list, both using the same sign-in email for Windows Live and Yahoo, the contact object returned by default will always be the one connected on Windows Live. You can force a request for contacts on the Yahoo network by prefixing the email with "yahoo:".

Function Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object, ChatWnd Object, Contact::Network.


Objects Reference - Messenger

Messenger::Version

The Messenger::Version property returns the current version of the Windows Live Messenger client.

Syntax

This is a read-only property.
[number] Version;

Data Type

A floating point number representing the major and minor version part of the version string. Example: 8.00.

Remarks

Because of the way floating point values are stored in memory, you should never check for equality and use ranges instead. For example, "if(Messenger.Version == 8.10)" should be replaced by "if(Messenger.Version >= 8.10)" as the exact value of the version as returned by this property may differ a bit (always returning slightly bigger numbers). For a more precise value, use VersionBuild.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object, VersionBuild.


Objects Reference - Messenger

Messenger::VersionBuild

The Messenger::VersionBuild property returns the build number of the Windows Live Messenger client.

Syntax

This is a read-only property.
[number] VersionBuild;

Data Type

A number representing the build number part of the version string. Example: 689.

Remarks

For safety reasons, the build number should always be paired with the major/minor version number of the client. Build numbers are not guaranteed to stay sequential between two new major versions of the Windows Live Messenger client.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object, Version.


Objects Reference - Messenger

Messenger::ContactListWndHandle

The Messenger::ContactListWndHandle property returns the window's handle of the contact list window, if currently opened.

Syntax

This is a read-only property.
[handle] ContactListWndHandle;

Data Type

If the contact list is closed, the return value is 0. The handle is a HWND object and must be used as is. It can be passed as parameter of various Windows API functions like SendMessage.

Remarks

The window's handle is provided for advanced developers only. Please use extra caution when sending messages to the contact list window as they could cause Messenger to function improperly or crash. For more information about how to call Windows API functions, see Interop Object.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object, Interop Object.


Objects Reference - Messenger

Messenger::CurrentChats

The Messenger::CurrentChats property returns the list of chat windows currently opened.

Syntax

This is a read-only property.
[object] CurrentChats;

Data Type

A ChatWnds object that can be iterated to get ChatWnd objects. If no chat window is currently opened, a ChatWnds object is still returned but it's Count property will return 0.

This property typically fails for the following reason:

  • The Messenger object refers to a window that has been destroyed.

Remarks

None.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object, ChatWnds Object, ChatWnd Object.


Objects Reference - Messenger

Messenger::ReceiveFileDir

The Messenger::ReceiveFileDir property returns the path of the directory where files copied by Messenger when a file transfer request is accepted are stored.

Syntax

This is a read-only property.
[string] ReceiveFileDir;

Data Type

A string containing the full path to the directory. The path does not end with a backslash.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

None.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object.


Objects Reference - Messenger

Messenger::MyContacts

The Messenger::MyContacts property returns a list of all the contacts present in the current user's contact list.

Syntax

This is a read-only property.
[object] MyContacts;

Data Type

A Contacts object that can be iterated to get Contact objects.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

None.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object, Contacts Object, Contact Object.


Objects Reference - Messenger

Messenger::MyEmail

The Messenger::MyEmail property returns the sign-in email address of the current user.

Syntax

This is a read-only property.
[string] MyEmail;

Data Type

A string containing the email address of the contact.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

The email address returned by this property is the sign-in email of the current user (its Passport or Windows Live ID).

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object.


Objects Reference - Messenger

Messenger::MyUserId

The Messenger::MyUserId property returns the Messenger User ID of the current user.

Syntax

This is a read-only property.
[string] MyUserId;

Data Type

A string specifying the Messenger User ID of the current user. See Remarks.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

The Messenger User ID is a number generated from the email of the user. It is used by Messenger internally in several places like the registry to store user specific information. If your script must save account specific information, it is recommended to use this property instead of he actual email of the user.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object.


Objects Reference - Messenger

Messenger::MyStatus

The Messenger::MyStatus property sets or gets the status of the current Messenger user.

Syntax

This is a read/write property.
[number] MyStatus;

Data Type

A number taken from the following enumeration:

STATUS_INVISIBLE (2)
STATUS_ONLINE (3)
STATUS_BUSY (4)
STATUS_BRB (5)
STATUS_IDLE (6)
STATUS_AWAY (7)
STATUS_INCALL (8)
STATUS_OUTLUNCH (9)

Appear Offline
Online
Busy
Be Right Back
Idle
Away
In a Call
Out to Lunch

If no user is currently signed-in or if Messenger Plus! fails to get the current's user status for any reason, the return value is:

STATUS_UNKNOWN (0)

Unknown

Remarks

You can use this property to check if the current Messenger user is signed-in (the property returns 2 or above). Use this property before calling a function in the API that requires the current user to be signed-in.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object.


Objects Reference - Messenger

Messenger::MyName

The Messenger::MyName property sets or gets the name of the current user.

Syntax

This is a read/write property.
[string] MyName;

Data Type

A string containing the name of the current user. If the name is being set and the string is longer than 129 characters, it is truncated.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

None.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object.


Objects Reference - Messenger

Messenger::MyPersonalMessage

The Messenger::MyPersonalMessage property sets or gets the personal message of the current user.

Syntax

This is a read/write property.
[string] MyPersonalMessage;

Data Type

A string specifying the personal message of the current user. If the personal message is being set and the string is longer than 129 characters, it is truncated.

This property typically fails for the following reason:

  • The current user is not signed in.

Remarks

Despite the fact that Windows Live Messenger mixes both properties, the MyPersonalMessage property is different from MyCurrentMedia. When a MyCurrentMedia is associated to a contact, Messenger simply hides the personal message to display the media's name.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object, MyCurrentMedia.


Objects Reference - Messenger

Messenger::MyCurrentMedia

The Messenger::MyCurrentMedia property returns the current "media" associated with the the current Messenger user. It is typically a song's title or a game's name.

Syntax

This is a read-only property.
[string] MyCurrentMedia;

Data Type

A string specifying the current media. This string is the raw text sent by Messenger identifying the media, it is up to you to decode it appropriately. An example of such string would be "\0Music\01\0{0} - {1}\0Return to Tatooine\0John Williams\0Star Wars Episode II Soundtrack\0\0".

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

Despite the fact that Windows Live Messenger mixes both properties, the MyCurrentMedia property is different from MyPersonalMessage. When a MyCurrentMedia is associated to a contact, Messenger simply hides the personal message to display the media's name.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object, MyPersonalMessage.


Objects Reference - Messenger

Messenger::MyDisplayPicture

The Messenger::MyDisplayPicture property returns the path to the display picture file used by the current Messenger user. It can also be used to change the display picture of the current user based on an existing file.

Syntax

This is a read/write property.
[string] MyDisplayPicture;

Data Type

A string containing the full path to the display picture, if any. If no display picture is currently associated to the current user, the property returns an empty string. Display pictures are usually PNG files but not assumption should be made regarding their format. When setting a new display picture, JPG, GIF, BMP and PNG files can be used.

Messenger Plus! Live 4.60 and above: you can set this property to an empty string to remove the current display picture of the user.

This property typically fails for the following reason:

  • The current Messenger is not signed in.

Remarks

The file path returned by this function is temporary, must not be stored for future use and must not be locked. If the file needs to be accessed after the current script's function returns (to be displayed in an interface window for example), it must be copied to a safe location. Dynamic pictures accessed through this property return a static, non animated image.

When a new display picture is set, the file is resized, converted to the proper format and saved in the Messenger's cache directory. Messenger doesn't keep a reference to the original file used to create the picture.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Object.


Objects Reference - Messenger

Messenger::CustomEmoticons

The Messenger::CustomEmoticons property returns a list of all the custom emoticons associated with the current user's account.

Syntax

This is a read-only property.
[object] CustomEmoticons;

Data Type

An Emoticons object that can be iterated to get Emoticon objects. See Emoticons' Iterator for an example of use.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

The Emoticons object returned by this property is a snapshot of the custom emoticons list of the current user at the time of the call. Future modifications to the user's emoticons list won't be reflected in the object (the property will need to be called again to generate a new object containing a new snapshot). This means that you should not store the object for later use except if you're expecting the list to be identical and not necessarily up to date.

Property Information

Object | Messenger
Availability | Messenger Plus! Live 4.10

See Also

Messenger Object, Emoticons Object, Emoticon Object.


MsgPlus Object

Objects Reference

The MsgPlus Object

The MsgPlus object is a global object that gives access to various properties and functions related to Messenger Plus!. It also brings cool features for your script such as DisplayToast and CreateWnd.

Functions:

Name | Description
LockMessenger | Triggers the Lock Messenger feature of Messenger Plus!.
LogEvent | Generates an event to be added in the Event Viewer of Messenger Plus!.
RemoveFormatCodes | Removes Messenger Plus! Live formatting attributes from a string.
AddTimer | Creates a new timer event for your script.
CancelTimer | Cancels a timer event.
DisplayToast | Displays a toast with the specified message.
DisplayToastContact | Displays a toast with the specified contact's name and message.
CreateWnd | Creates a new window based on an Interface XML file.
CreateChildWnd | Creates a child window for an existing interface window.
PlaySound | Plays a sound asynchronously.
DownloadFile | Downloads a file asynchronously.
LoadScriptFile | Loads additional JScript code in your script.
UploadFileFTP | Uploads a file asynchronously to a FTP server.
ExtractFromZIP | Extracts files from a ZIP archive.

Properties:

Name | Description
Version | Current version of Messenger Plus! Live.
VersionBuild | Build number of Messenger Plus! Live.
ScriptRegPath | Full registry path to the current script's settings.
ScriptFilesPath | Full path to the current script's files.
MessengerIsLocked | Specifies if the Lock Messenger feature is currently active.
UILangCode | Language used in the Messenger Plus! user interface.


Objects Reference - MsgPlus

MsgPlus::DisplayToast

The MsgPlus::DisplayToast function displays a toast (popup window in the corner of the screen) with the specified message.

Syntax

[boolean] DisplayToast(
    [string] Title,
    [string] Message,
    [string,optional] SoundFile,
    [string,optional] Callback,
    [var,optional] CallbackParam
);

Parameters

Title
[string] Title displayed on top of the toast. If an empty string is sent in this parameter, "Messenger Plus! Live" is used.
Message
[string] Message displayed in the toast. Carriage returns can be used to force line breaks. A maximum of 4 lines can be displayed in the toast created by this function. Format codes are not parsed in this parameter and must be filtered out with RemoveFormatCodes.
SoundFile
[string,optional] Path to the sound file that will be played when the toast is shown on screen. The path is relative to the script's directory by default, to override this behavior, prefix the path with "\". Example: "\C:\directory\sound.mp3". If the parameter is missing or the string is empty, no sound is played.
Callback
[string,optional] Name of the function in your script that will be called if the toast is clicked by the user. If the parameter is missing or the string is empty, the toast won't be clickable. For more information, see ToastCallbackTemplate.
CallbackParam
[var,optional] Parameter of variable type (can be a number, a string, an object, ...). This value will be sent as parameter of the function specified in Callback when the toast is clicked. It can be omitted if not needed.

Return Value

A boolean value specifying if the toast is going to be displayed. The toast is not guaranteed to be displayed immediately when the function returns, if Windows Live Messenger is already displaying a toast, Messenger Plus! wait for its turn. Here is a list (not exhaustive) of possible reasons why this function may return false:

  • The user's status is Busy and "Show Messenger Plus! popup notifications when Busy" is unchecked in the user's preferences.
  • The user has locked out his Windows session.
  • A screensaver is currently running.
  • The user is playing to a full screen DirectX game.

Remarks

A variety of sound file types is supported by Messenger Plus!, for a complete list, see PlaySound. To display toasts supporting format codes, use DisplayToastContact.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, DisplayToastContact, PlaySound, ToastCallbackTemplate.


Objects Reference - MsgPlus

MsgPlus::DisplayToastContact

The MsgPlus::DisplayToastContact function displays a toast (popup window in the corner of the screen) with the specified contact's name and message.

Syntax

[boolean] DisplayToastContact(
    [string] Title,
    [string] ContactName,
    [string] Message,
    [string,optional] SoundFile,
    [string,optional] Callback,
    [var,optional] CallbackParam,
    [var,optional] Contact
);

Parameters

Title
[string] Title displayed on top of the toast. If an empty string is sent in this parameter, "Messenger Plus! Live" is used.
ContactName
[string] First line displayed in the toast. Although this parameter is generally used to display contact's names with their formatting attributes, it can be any text you want.
Message
[string] Message displayed in the toast. Carriage returns can be used to force line breaks. A maximum of 2 lines can be displayed in the toast created by this function in addition to the line for ContactName. Format codes are not parsed in this parameter and must be filtered out with RemoveFormatCodes.
SoundFile
[string,optional] Path to the sound file that will be played when the toast is shown on screen. The path is relative to the script's directory by default, to override this behavior, prefix the path with "\". Example: "\C:\directory\sound.mp3". If the parameter is missing or the string is empty, no sound is played.
Callback
[string,optional] Name of the function in your script that will be called if the toast is clicked by the user. If the parameter is missing or the string is empty, the toast won't be clickable.
CallbackParam
[var,optional] Parameter of variable type (can be a number, a string, an object, ...). This value will be sent as parameter of the function specified in Callback when the toast is clicked. It can be omitted if not needed.
Contact
[var,optional] A string containing the email of a contact or a Contact object to let Messenger Plus! colorize the toast according to the contact's profile. This parameter requires Messenger Plus! Live version 4.80 or above.

Return Value

A boolean value specifying if the toast is going to be displayed. The toast is not guaranteed to be displayed immediately when the function returns, if Windows Live Messenger is already displaying a toast, Messenger Plus! wait for its turn. Here is a list (not exhaustive) of possible reasons why this function may return false:

  • The user's status is Busy and "Show Messenger Plus! popup notifications when Busy" is unchecked in the user's preferences.
  • The user has locked out his Windows session.
  • A screensaver is currently running.
  • The user is playing to a full screen DirectX game.

Remarks

A variety of sound file types is supported by Messenger Plus!, for a complete list, see PlaySound. To display toasts that can contain more text, use DisplayToast.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, DisplayToast, PlaySound.


Objects Reference - MsgPlus

MsgPlus::CreateWnd

The MsgPlus::CreateWnd function creates a new window based on an Interface XML file. For more information, see Windows for your Script.

Syntax

[object] CreateWnd(
    [string] XmlFile,
    [string] WindowId,
    [number,optional] Options
);

Parameters

XmlFile
[string] Path to the Interface XML file. This is where the entire window is defined. The path is relative to the script's directory by default, to override this behavior, prefix the path with "\". Example: "\C:\directory\windows.xml".
WindowId
[string] Unique identifier of the window to create. A window with the same identifier has to be found in the XML file for the function to succeed.
Options

[number,optional] If specified, this parameter can be one of the following numbers:

WNDOPT_NORMAL (0)
WNDOPT_INVISIBLE (1)
WNDOPT_NOACTIVATE (2)

Display the window normally (default)
Don't show the window after it's been created
Don't activate the window after its creation

The following flags can also be added to specify additional characteristics:

WNDOPT_RTL (128)

Display the window with a right-to-left layout (if supported by the system).
Requires Messenger Plus! 4.10 or above.

Return Value

A PlusWnd object that you can use to control every aspect of the new window. If the window cannot be created, the return value is null.

This function typically fails for the following reason:

  • The specified XML interface file is not valid.

Remarks

Interface XML files should always be validated for both syntax and compliance with the interface windows' schema file. In some occasions, the file can appear to be validated but still fail to load. This can be caused by a missing required attribute (like Height for some controls), duplicated control/element identifiers and other runtime specific reasons.

Images specified in a script's interface file are searched in two places. First, Messenger Plus! looks in the "Images" sub-directory of the script's directory. That's where you should store all your custom made pictures. If the image cannot be found there, Messenger Plus! looks in its own resources for a matching name. This can be useful to reuse pictures seen in Messenger Plus! windows without having to bundle them with your script. Be careful to check if the images are still there when an update of Messenger Plus! is released though.

You should refrain from creating windows when the user has enabled Messenger Lock. This can be checked with MessengerIsLocked.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, Windows for your Script, Interface Windows Reference.


Objects Reference - MsgPlus

MsgPlus::CreateChildWnd

The MsgPlus::CreateChildWnd function creates a child window for an existing interface window. It can be used to create wizards or any other kind of more complex windows.

Syntax

[object] CreateChildWnd(
    [object] Parent,
    [string] XmlFile,
    [string] WindowId,
    [number] PosX,
    [number] PosY,
    [boolean,optional] Visible
);

Parameters

Parent
[object] Existing PlusWnd object previously created with CreateWnd.
XmlFile
[string] Path to the Interface XML file. This is where the entire window is defined. The path is relative to the script's directory by default, to override this behavior, prefix the path with "\". Example: "\C:\directory\windows.xml".
WindowId
[string] Unique identifier of the window to create. A window with the same identifier has to be found in the XML file for the function to succeed.
PosX
[number] Horizontal position of the child window in the parent, in pixels.
PosY
[number] Vertical position of the child window in the parent, in pixels.
Visible
[boolean,optional] Specifies if the window is to be shown automatically after creation (default) or not.

Return Value

A PlusWnd object that you can use to control every aspect of the new child window. If the window cannot be created, the return value is null.

This function typically fails for the following reason:

  • The specified XML interface file is not valid.

Remarks

This function is to be used by advanced users, used to creating interface windows with CreateWnd.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, CreateWnd.


Objects Reference - MsgPlus

MsgPlus::AddTimer

The MsgPlus::AddTimer function creates a new timer event for your script. The OnEvent_Timer event will be fired once after the specified time interval elapses.

Syntax

AddTimer(
    [string] TimerId,
    [number] Elapse
);

Parameters

TimerId
[string] Unique string identifying the new timer. Every script can create up to 100 timers, each one with their own unique identifier. When a timer event occurs, the Id is passed as parameter. You can specify any string you want for TimerId apart from an empty string. Different scripts can use identical TimerId without worrying of possible conflicts.
Elapse
[number] Amount of time that has to elapse, in milliseconds, before the event is fired. This number needs to be in the range of 100 to 86,400,000 (one day).

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The maximum number of timers allowed for this script has been reached.
  • The Elapse parameter is not in the valid range of accepted values.

Remarks

Messenger Plus! timers are generated only once. When the event is fired, the timer is removed from the list. If you desire the event to be generated on regular intervals, simply call AddTimer in OnEvent_Timer. If AddTimer is called with the TimerId of an existing timer event, the event is reset with the new Elapse time.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, CancelTimer, OnEvent_Timer.


Objects Reference - MsgPlus

MsgPlus::CancelTimer

The MsgPlus::CancelTimer function cancels a timer event previously set with AddTimer.

Syntax

CancelTimer(
    [string] TimerId
);

Parameters

TimerId
[string] Unique string identifying the timer to delete.

Return Value

No value is returned by this function.

Remarks

No error is returned if the specified TimerId does not exist.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, AddTimer.


Objects Reference - MsgPlus

MsgPlus::PlaySound

The MsgPlus::PlaySound function plays a sound asynchronously. It can also be used to stop the current sound from playing.

Syntax

[boolean] PlaySound(
    [string] SoundFile
    [number,optional] MaxPlayTime
);

Parameters

SoundFile
[string] Path to the sound file to play. The path is relative to the script's directory by default, to override this behavior, prefix the path with "\". Example: "\C:\directory\sound.mp3". If this string is empty, the current sound playing is stopped and the function returns.
MaxPlayTime
[number, optional] If specified, this parameter sets a maximum play time for the sound, in milliseconds. If the time specified is longer than the sound, the sound will be played to its end.

Return Value

A boolean value specifying if the sound started to play successfully (or if a sound was stopped when SoundFile is an empty string).

This function typically fails for the following reason:

  • The sound file type is not supported. See Remarks.

Remarks

If a sound that was started by this function is already playing, it is stopped before the new sound starts playing.

Here is a list of sound file types supported by Messenger Plus!. This support is possible thanks in part to the LibSndFile and Lame MP3 libraries:

  • Microsoft WAV, Sphere Nist (*.wav)
  • MPEG Audio (*.mp1;*.mp2;*.mp3)
  • Amiga (*.iff;*.svx)
  • Apple/SGI (*.aif)
  • Berkeley/Ircam (*.sf)
  • Creative Labs (*.voc)
  • Ensoniq Paris (*.paf)
  • GNU Octave (*.mat4;*.mat5)
  • Sound Forge (*.w64)
  • Sun/Next (*.au;*.snd)
  • Free Lossless Audio Codec (*.fla;*.flac)
  • Apple CAF (*.caf)

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object.


Objects Reference - MsgPlus

MsgPlus::LockMessenger

The MsgPlus::LockMessenger function triggers the Lock Messenger feature of Messenger Plus!. It can also be used to unlock Messenger.

Syntax

LockMessenger(
    [boolean] Lock
);

Parameters

Lock
[boolean] Specifies whether to lock or unlock Messenger.

Return Value

No value is returned by this function.

Remarks

When called to unlock Messenger, normal restrictions apply. This means for example that if the user configured a password to unlock Messenger, the password will be requested.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, MessengerIsLocked.


Objects Reference - MsgPlus

MsgPlus::LogEvent

The MsgPlus::LogEvent function generates an event to be added in the Event Viewer of Messenger Plus! and the Event File if configured.

Syntax

LogEvent(
    [string] Origin,
    [string] Description,
    [enum] Icon
);

Parameters

Origin
[string] Origin of the event. Typically, this parameter should be set to the name of the script.
Description
[string] Description of the event. It is recommended to keep the text short, although no size limit is enforced.
Icon

[enum] Number specifying the icon to use in the Event Viewer for this event. Can be one of the following:

EVICON_ONLINE (0)
EVICON_OFFLINE (1)
EVICON_AWAY (2)
EVICON_BUSY (3)
EVICON_BLOCKED (4)
EVICON_PLUS (5)
EVICON_NAME (6)
EVICON_PSM (7)
EVICON_MEDIA (8)
EVICON_EMAIL (9)
EVICON_MUSIC (10)

Online Buddy Icon
Offline Buddy Icon
Away Buddy Icon
Busy Buddy Icon
Blocked Buddy Icon
Messenger Plus! Logo
Name Change Icon
Personal Message Change Icon
Media Change Icon
New Emails Icon
Music Change Icon

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The number specified for Icon is not in the range of accepted values.

Remarks

Only meaningful events should be reported with this function. If you plan on having a lot of different notifications, it is considered good practice to create a configuration window to let the user filter the list of possible events.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object.


Objects Reference - MsgPlus

MsgPlus::RemoveFormatCodes

The MsgPlus::RemoveFormatCodes function removes Messenger Plus! Live formatting attributes from a string.

Syntax

[string] RemoveFormatCodes(
    [string] Text
);

Parameters

Text
[string] Text to filter.

Return Value

A string containing the "cleaned" version of the text. If no format code was detected, the return value is identical to the Text parameter.

This function typically fails for the following reason:

  • The MsgPlus object refers to a window that has been destroyed.

Remarks

Through out its existence, Messenger Plus! came up with three different sets of control codes (each born from a specific necessity):

  • IRC codes. These are control characters using special ASCII values. They were modeled on mIRC.
  • IRC codes for contact names. Derived from IRC codes, these codes were added to bypass new filters set for contact names on the Messenger servers.
  • BBCode. These tags resemble the way formatting is added in HTML documents. They were modeled on phpBB.

Because of the list of tags and their possible combinations would be pretty long and because new control codes may be added in the future, it is recommended that you use this function to filter out every possible code from the strings your script manipulates.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object.


Objects Reference - MsgPlus

MsgPlus::DownloadFile

The MsgPlus::DownloadFile function downloads a file asynchronously from an ftp, http or https source and generates an event when the download is complete.

Syntax

[boolean] DownloadFile(
    [string] Url,
    [string,optional] OutFile,
    [string,optional] User,
    [string.optional] Password
);

Parameters

Url
[string] Address of the file to download. The string must begin by either "ftp://", "http://" or "https://".
OutFile
[string,optional] Full path to the file that will be created to receive the downloaded data. If no path is specified, Messenger Plus! automatically generates a unique file name in the user's temporary directory.
User
[string,optional] User name sent to the server to log on, valid only for FTP connections. This parameter requires Messenger Plus! Live version 4.60 or above.
Password
[string,optional] Password sent to the server to log on, valid only for FTP connections. This parameter requires Messenger Plus! Live version 4.60 or above.

Return Value

A boolean value specifying if the download was initiated. If the returned value is true, an OnEvent_DownloadFileComplete event will be generated once the download operation has completed (whether it succeeds or not). Here is a list of possible reasons why this function may return false:

  • The specified Url is empty.
  • Not enough system resources to complete the operation.

Remarks

It is highly recommended to use this function whenever your script needs to download a file. This function returns as soon as the download request has been sent to a different thread of execution, guaranteeing that Messenger will not freeze while the server is being contacted. It is important as various network issues can occur while downloading a file on an external server. If the download is done synchronously with another method, it can result in Messenger freezing for an unspecified amount of time, blocking the user, disturbing Messenger's own network communications and giving the impression that the whole application crashed.

If no path is specified in OutFile, a temporary file will be created and its path will be sent in parameter of OnEvent_DownloadFileComplete. Deleting the temporary file is your responsibility, Messenger Plus! will not do it automatically.

Example

Here is an example that shows how to download a file to check for updates.

function DownloadUpdateFile()
{
    var Started = MsgPlus.DownloadFile("http://server.com/file.txt");
    if(Started)
        Debug.Trace("Downloading file, waiting for event");
    else
        Debug.Trace("Couldn't start the download");
}

function OnEvent_DownloadFileComplete(Url, OutFile, Success)
{
    Debug.Trace("DownloadFileComplete event received for " + Url);
    Debug.Trace("   Success: " + Success);
    if(Success)
    {
        Debug.Trace("   Result file path: " + OutFile);
        /* Read the file, do what needs to be done */

        //Delete the temporary file
        var File = new ActiveXObject("Scripting.FileSystemObject");
        File.DeleteFile(OutFile);
    }
}

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.20

See Also

MsgPlus Object, OnEvent_DownloadFileComplete.


Objects Reference - MsgPlus

MsgPlus::UploadFileFTP

The MsgPlus::UploadFileFTP function uploads a file asynchronously to a FTP server. An event is automatically generated when the upload is complete. The function can also be used to test an FTP connection without uploading anything.

Syntax

[boolean] UploadFileFTP(
    [string] SourceFile,
    [string] Server,
    [string] User,
    [string] Password,
    [string] Destination,
    [boolean,optional] PassiveMode,
    [number,optional] Port
);

Parameters

SourceFile
[string] Full path of the file to upload. The file must exist for the upload to succeed. If an empty string is sent in this parameter, the function only checks if the FTP server can be contacted properly.
Server
[string] Host name of the FTP server. It can be an IP address.
User
[string] User name sent to the server to log on.
Password
[string] Password sent to the server to log on.
Destination
[string] Name of the file to create on the FTP server. If SourceFile is empty, this parameter represents the path to check on the server (it can be empty). See remarks.
PassiveMode
[boolean,optional] Specifies if passive mode should be used to connect to the server. Default is true.
Port
[number,optional] Port to connect to on the FTP server. Default is 21.

Return Value

A boolean value specifying if the operation was initiated (file upload of connection check). If the returned value is true, an OnEvent_UploadFileComplete event will be generated once the operation has completed (whether it succeeds or not). Here is a list of possible reasons why this function may return false:

  • The specified SourceFile does not exist.
  • The specified Server is empty.
  • The specified Destination is empty and a SourceFile is specified.
  • Not enough system resources to complete the operation.

Remarks

It is highly recommended to use this function whenever your script needs to upload a file to a FTP server. This function returns as soon as the upload request has been sent to a different thread of execution, guaranteeing that Messenger will not freeze while the server is being contacted. It is important as various network issues can occur while uploading a file on an external server. If the upload is done synchronously with another method, it can result in Messenger freezing for an unspecified amount of time, blocking the user, disturbing Messenger's own network communications and giving the impression that the whole application crashed.

When uploading a file, the specified destination can include a path valid on the server. For example, to create a file called "newfile.dat" in "/dir1/dir2", you would need to specify "/dir1/dir2/newfile.dat" in the Destination parameter. Note that if a path is specified, it must exist on the server. Directories are not created by this function. If a file already exists on the server at the specified destination, it is deleted before the upload of the new file begins. When testing an FTP connection, only directories can be specified here, if needed, to check if a given path exists on the server.

Example

Here is an example that shows how to upload a file to a known FTP server.

function UploadFileToServer(SrcFile)
{
    var Started = MsgPlus.UploadFileFTP(SrcFile, "ftp.srv.com", "user", "pwd", "dest.dat");
    if(Started)
        Debug.Trace("Uploading file, waiting for event");
    else
        Debug.Trace("Couldn't start the upload");
}

function OnEvent_UploadFileComplete(Server, Destination, Source, Success)
{
    Debug.Trace("UploadFileComplete event received for " + Destination);
    Debug.Trace("   Success: " + Success);
}

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.60

See Also

MsgPlus Object, OnEvent_UploadFileComplete.


Objects Reference - MsgPlus

MsgPlus::LoadScriptFile

The MsgPlus::LoadScriptFile function loads additional JScript code into your running script. The whole content of the file is parsed and immediately placed in a running state (newly defined functions can be executed from anywhere in your script and lines belonging to the global scope are executed).

Syntax

[boolean] LoadScriptFile(
    [string] ScriptFile
);

Parameters

ScriptFile
[string] Name of the JScript file to be loaded. It is recommended to use Unicode text files. The path is relative to the script's directory by default, to override this behavior, prefix the path with "\". Example: "\C:\directory\script.js".

Return Value

A boolean value specifying if the code was parsed and run successfully.

Remarks

The use of this function should be weighted carefully. For clarity reasons, all the files of your script should be loaded when the script is started. This function is only meant to be used if parts of your script are optional or don't require to be started immediately. Remember that all the files with a .js extension placed in your main script's directory are always automatically loaded before the script is started.

For security reasons, never use this function to run code you dynamically downloaded from the internet.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.50

See Also

MsgPlus Object.


Objects Reference - MsgPlus

MsgPlus::ExtractFromZIP

The MsgPlus::ExtractFromZIP function extracts files from a ZIP archive. Encrypted ZIP files are supported and file patterns can be used to specify what to extract.

Syntax

[boolean] ExtractFromZIP(
    [string] ZipFile,
    [string] DestDirectory,
    [string] FileNames,
    [string,optional] Password
);

Parameters

ZipFile
[string] Full path of the ZIP archive file.
DestDirectory
[string] Path of a directory where the files will be extracted. The directory must exist.
FileNames
[string] One or more file name patterns specifying what files to extract. Wildcard characters can be used. See remarks.
Password
[string,optional] Password to use if the archive is encrypted.

Return Value

A boolean value specifying if the operation succeeded. The function returns true if at least one file was extracted. Here is a list of possible reasons why this function may return false:

  • The specified ZipFile does not exist.
  • The specified DestDirectory is empty.
  • No files were extracted from the ZIP file even though the call succeeded.
  • Not enough system resources to complete the operation.

Remarks

To extract all the files from an archive, specify "*.*" for the FileNames parameter. If needed, more than one file name can be specified in this parameter, each one separated by a space character. To specify a file name that contains a space itself, enclose the file name in double quotes. Examples:

  • "*.jpg"
  • "file1.dat file2.dat"
  • "*.jpg *.gif pics*.*"
  • "file1.dat \"long file name.dat\""

Because the call is made synchronously, you should avoid using this function on ZIP archive files that are relatively large (bigger than 20MB). Doing so may give the impression to the user that Messenger froze and Messenger may be disconnected from the server.

Function Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.60

See Also

MsgPlus Object.


Objects Reference - MsgPlus

MsgPlus::Version

The MsgPlus::Version property returns the current version of Messenger Plus! Live.

Syntax

This is a read-only property.
[version] Version;

Data Type

A floating point number representing the major and minor version part of the version string. Example: 4.00.

Remarks

Because of the way floating point values are stored in memory, you should never check for equality and use ranges instead. For example, "if(MsgPlus.Version == 4.10)" should be replaced by "if(MsgPlus.Version >= 4.10)" as the exact value of the version as returned by this property may differ a bit (always returning slightly bigger numbers). For a more precise value, use VersionBuild.

Property Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, VersionBuild.


Objects Reference - MsgPlus

MsgPlus::VersionBuild

The MsgPlus::VersionBuild property returns the build number of Messenger Plus! Live.

Syntax

This is a read-only property.
[number] VersionBuild;

Data Type

A number representing the build number part of the version string. Example: 230.

Remarks

For safety reasons, the build number should always be paired with the major version number of Messenger Plus!. Build numbers are not guaranteed to stay sequential between two new major versions of Messenger Plus!.

Property Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, Version.


Objects Reference - MsgPlus

MsgPlus::ScriptRegPath

The MsgPlus::ScriptRegPath property returns the full registry path to the current script's settings. You can use this key as you see fit (add values, create sub keys, etc...) to store settings pertinent to your script.

Syntax

This is a read-only property.
[string] ScriptRegPath;

Data Type

A string containing the path to the script's registry key. The path begins with "HKCU\" to designate the HKEY_CURRENT_USER key and ends with a backslash.

Remarks

It is highly recommended that your script uses this key to save data in the registry. It will help keeps things organized for the user and the data will be controlled by Messenger Plus! (for uninstallation for example). For more information about the registry functions available for your script, see Windows Scripting Host Functions.

Example

The following example writes a value called "EnableOpt" in the registry and read it back.

//Write the value
var Shell = new ActiveXObject("WScript.Shell");
var ValRegPath = MsgPlus.ScriptRegPath + "EnableOpt";
Shell.RegWrite(ValRegPath, 1);

//Read the value
var EnableOpt = Shell.RegRead(ValRegPath);
Debug.Trace("EnableOpt current value: " + EnableOpt);

Property Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, Windows Scripting Host Functions.


Objects Reference - MsgPlus

MsgPlus::ScriptFilesPath

The MsgPlus::ScriptFilesPath property returns the full path to the current script's files.

Syntax

This is a read-only property.
[string] ScriptFilesPath;

Data Type

A string containing the full path to the current script's files on the disk. It does not end with a backslash.

Remarks

You should never assume to know where the files of your script are stored on the user's disk. The current location may change in future versions of Messenger Plus!, that's why this property must always been used when necessary. Also, when making calls outside of the Messenger Plus! Live scripting system, never assume that the "current" directory is the directory of your script.

Property Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object.


Objects Reference - MsgPlus

MsgPlus::MessengerIsLocked

The MsgPlus::MessengerIsLocked property specifies if Windows Live Messenger is currently locked using the Lock Messenger feature of Messenger Plus!.

Syntax

This is a read-only property.
[boolean] MessengerIsLocked;

Data Type

A boolean value specifying if Messenger is locked.

Remarks

Script should adapt their user interaction methods when Messenger Lock is enabled. Some features are automatically disabled by Messenger Plus! such as toast popups.

Property Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.00

See Also

MsgPlus Object, LockMessenger.


Objects Reference - MsgPlus

MsgPlus::UILangCode

The MsgPlus::UILangCode property returns the ISO code of the language currently selected to display the Messenger Plus! user interface.

Syntax

This is a read-only property.
[string] UILangCode;

Data Type

A string containing the ISO code of the language. The code is generally represented with two letters that may be followed by a '-' and another set of two letters.

Remarks

You can use this property to adapt the language displayed by your script to the one displayed by Messenger Plus!. Do not assume that a specific language is always available. The default recommended language is English (code: "en").

Property Information

Object | MsgPlus
Availability | Messenger Plus! Live 4.20

See Also

MsgPlus Object.


ChatWnds Object

Objects Reference

The ChatWnds Object

The ChatWnds object is used to iterate a list of chat windows returned by a function of the API such as Messenger::CurrentChats.

Functions:

Name | Description
Iterator | This object can be iterated with an Enumerator.

Properties:

Name | Description
Count | Count of chat windows contained by this object.


Objects Reference - ChatWnds

ChatWnds' Iterator

The ChatWnds object can be iterated through the Enumerator object of JScript.

Return Value

A ChatWnd object.

Remarks

Each ChatWnds object keeps track of its own iterator. This means that even if two objects refer to the same collection of chat windows, they'll contain two different iterators. This is why ChatWnds objects must first be assigned to variables before being used in an Enumerator.

Example

The current user must be signed for this code to succeed.

Debug.Trace("Currently opened chat windows:");
var Windows = Messenger.CurrentChats;
var e = new Enumerator(Windows);
for(; !e.atEnd(); e.moveNext())
{
    var ChatWindow = e.item();
    Debug.Trace(" Handle: " + ChatWindow.Handle);
}

Function Information

Object | ChatWnds
Availability | Messenger Plus! Live 4.00

See Also

ChatWnds Object, ChatWnd Object, JScript's Enumerator Object.


Objects Reference - ChatWnds

ChatWnds::Count

The ChatWnds::Count property returns the count of ChatWnds contained by this object.

Syntax

This is a read-only property.
[number] Count;

Data Type

A number with a minimum value of 0.

Remarks

The count should not be stored for later use and always requested from the object when needed.

Property Information

Object | ChatWnds
Availability | Messenger Plus! Live 4.00

See Also

ChatWnds Object.


ChatWnd Object

Objects Reference

The ChatWnd Object

The ChatWnd object represents a chat window in Messenger. It is sent as parameter of OnEvent_ChatWnd* events and the collection of existing ChatWnd objects can be obtained through Messenger.CurrentChats.

Functions:

Name | Description
EditText_SetCurSel | Selects text in the typing area of the chat window.
EditText_ReplaceSel | Replaces the text currently selected in the typing area by a new one.
EditText_GetCurSelStart | Returns the index of the first character currently selected in the typing area.
EditText_GetCurSelEnd | Returns the index following the last character currently selected in the typing area.
SendMessage | Sends a message to the contacts currently present in the chat window.
SendFile | Sends a file the current contact in the chat window.
AddContact | Invites a contact to join the current conversation.
HistoryText_GetCurSelStart | Returns the index of the first character currently selected in the message history area.
HistoryText_GetCurSelEnd | Returns the index following the last character currently selected in the message history area.
HistoryText_GetTextRange | Returns a portion of text from the message history area.
DisplayInfoMessage | Displays a message in the "information area" of the chat window.
ResetInfoMessage | Resets the message currently displayed in the "information area" of the chat window.

Properties:

Name | Description
Handle | Window's handle of the chat window.
EditChangeAllowed | Specifies whether or not text can be entered in the typing area of the chat window.
Contacts | List of contacts currently participating in the chat.
ChatLogEnabled | "Logging" option of the chat window.
OverrideFmtEnabled | "Override Contact's Font" option.
EditText | Text in the typing area of the chat window.
IsMobileChat | Indicates if the window represents a Mobile Device chat.


Objects Reference - ChatWnd

ChatWnd::SendMessage

The ChatWnd::SendMessage function sends a message to the contacts currently present in the chat window.

Syntax

[boolean] SendMessage(
    [string] Message
);

Parameters

Message
[string] Text message to be sent. The message is parsed for commands and tags like any other message sent by the user.

Return Value

If the message is sent successfully, the return value is true, else, the return value is false.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.
  • The property is being set while the edit control is disabled. See EditChangeAllowed.

Remarks

If the text being set is longer than the maximum allowed (typically 1100 characters), it is truncated. If the typing area already contains text when this function is called, it is saved before the message is sent and automatically restored after that. The EditChangeAllowed property should be checked before this function is called.

Messenger Plus! Live 4.81 and above: if Message is empty, Messenger Plus! sends the text currently present in the text area of the chat window.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object, EditChangeAllowed, EditText.


Objects Reference - ChatWnd

ChatWnd::SendFile

The ChatWnd::SendFile function sends a file the current contact in the chat window. The function fails if the chat is connected to more than one contact.

Syntax

[boolean] SendFile(
    [string] FilePath
);

Parameters

FilePath
[string] Path to the file to send. This must be the full path of the file, no current directory is guaranteed.

Return Value

If the file transfer request is sent successfully, the return value is true, else, the return value is false. The function returns false automatically if more than one contact is present in the chat. Also, note that a positive return value does not guarantee that the contact has accepted the file transfer.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object


Objects Reference - ChatWnd

ChatWnd::AddContact

The ChatWnd::AddContact function invites a contact to join the current conversation. If the invitation succeeds, every message sent in the chat will be received by the new contact as well.

Syntax

AddContact(
    [string] Email
);

Parameters

Email
[string] Email of the contact who will be added to the conversation.

Return Value

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

Messenger can limit the number of contacts who can participate simultaneously to a same chat. Invitations are never guaranteed to be successful, use the ChatWndContactAdded event to confirm the addition.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.10

See Also

ChatWnd Object, OnEvent_ChatWndContactAdded.


Objects Reference - ChatWnd

ChatWnd::DisplayInfoMessage

The ChatWnd::DisplayInfoMessage function displays a message in the "information area" of the chat window. This is the area where the "user is typing" message is displayed. If a message from Messenger Plus! (including any script) is already displayed, the message is placed in queue.

Syntax

DisplayInfoMessage(
    [string] Message,
    [int,optional] Duration,
    [boolean,optional] ForceNow
);

Parameters

Message
[string] Message to display. Emoticons will not be rendered, however, formatting codes (like [b][/b] for bold) can be used.
Duration
[int,optional] Duration of the message on screen, in milliseconds. If 0 or not specified, the default duration of Messenger Plus! is used (8 seconds, can be customized by the user).
ForceNow
[boolean,optional] Specifies if the message should be forced to be displayed right away (false by default). If true and a message is currently being displayed by Messenger Plus!, it is discarded and replaced by the new message. If more messages were already in queue, they are also discarded.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

This function can be used to easily notify the user of an event related to the current chat window. It is particularly effective in Windows Live Messenger 8.5 and above as the "information area" in these versions of Messenger is more visible to the user.

It is recommended to leave the duration to its default. Also, the ForceNow parameter should be used in very specific situations only. Because it will clear the current queue of messages waiting to be displayed, this will possibly cause annoyances to the user as some messages may be missed.

Note: Messenger Plus! may restrict the maximum number of messages waiting in the queue. There is one queue per chat window, shared by Messenger Plus! and all the scripts. If the maximum number of messages is reached, new messages will be discarded automatically until the current message times-out to make room for new additions (notification messages are supposed to have a meaning in the near present only).

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.50

See Also

ChatWnd Object, ResetInfoMessage.


Objects Reference - ChatWnd

ChatWnd::ResetInfoMessage

The ChatWnd::ResetInfoMessage function resets the message currently displayed in the "information area" of the chat window. The current message is replaced by the default message normally displayed by Messenger. If no custom message is currently being displayed, the function does nothing.

Syntax

ResetInfoMessage(
);

Parameters

None.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

This function should be used to force the default message of Messenger to be put back in the chat window after a call to DisplayInfoMessage. If more messages are in queue, they are also discarded, that's why this function should be used for very specific reasons only.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.50

See Also

ChatWnd Object, DisplayInfoMessage.


Objects Reference - ChatWnd

ChatWnd::EditText_GetCurSelStart

The ChatWnd::EditText_GetCurSelStart function returns the index of the first character currently selected in the typing area. If nothing is selected, the index of the caret is returned.

Syntax

[number] EditText_GetCurSelStart(
);

Parameters

None.

Return Value

A numeric value representing a position in the text, ranging from 0 to the size of the text currently in the typing area.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object, EditText_GetCurSelEnd, EditText_SetCurSel.


Objects Reference - ChatWnd

ChatWnd::EditText_GetCurSelEnd

The ChatWnd::EditText_GetCurSelEnd function returns the index following the last character currently selected in the typing area. If nothing is selected, the index of the caret is returned.

Syntax

[number] EditText_GetCurSelEnd(
);

Parameters

None.

Return Value

A numeric value representing a position in the text, ranging from 0 to the size of the text currently in the typing area.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object, EditText_GetCurSelStart, EditText_SetCurSel.


Objects Reference - ChatWnd

ChatWnd::EditText_SetCurSel

The ChatWnd::EditText_SetCurSel function selects text in the typing area of the chat window.

Syntax

EditText_SetCurSel(
    [number] Start,
    [number] End
);

Parameters

Start
[number] Index of the first character to select.
End
[number] Index following the last character to select.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object, EditText_GetCurSelStart, EditText_GetCurSelEnd.


Objects Reference - ChatWnd

ChatWnd::EditText_ReplaceSel

The ChatWnd::EditText_ReplaceSel function replaces the text currently selected in the typing area by a new one. If no text is selected, the new text is inserted at the position of the caret.

Syntax

EditText_ReplaceSel(
    [string] Text
);

Parameters

Text
[string] Text that will replace the text currently selected in the typing area.

Return Value

No value is returned by this function.

This function typically fails for one of the following reasons:

  • The ChatWnd object refers to a window that has been destroyed.
  • The edit control is disabled. See EditChangeAllowed.

Remarks

None.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object, EditText_SetCurSel.


Objects Reference - ChatWnd

ChatWnd::HistoryText_GetCurSelStart

The ChatWnd::HistoryText_GetCurSelStart function returns the index of the first character currently selected in the message history area (where received messages are displayed).

Syntax

[number] HistoryText_GetCurSelStart(
);

Parameters

None.

Return Value

A numeric value representing a position in the text, ranging from 0 to the size of the text currently in the message history area. If nothing is selected, the return value is 0.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

Some versions of Messenger clear the selection in the message history as soon as the control loses focus. Windows Live Messenger 8.1 is known to keep the selection intact.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.20

See Also

ChatWnd Object, HistoryText_GetCurSelEnd.


Objects Reference - ChatWnd

ChatWnd::HistoryText_GetCurSelEnd

The ChatWnd::HistoryText_GetCurSelEnd function returns the index following the last character currently selected in the message history area (where received messages are displayed).

Syntax

[number] HistoryText_GetCurSelEnd(
);

Parameters

None.

Return Value

A numeric value representing a position in the text, ranging from 0 to the size of the text currently in the message history area. If nothing is selected, the return value is 0.

This function typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

Some versions of Messenger clear the selection in the message history as soon as the control loses focus. Windows Live Messenger 8.1 is known to keep the selection intact.

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.20

See Also

ChatWnd Object, HistoryText_GetCurSelStart.


Objects Reference - ChatWnd

ChatWnd::HistoryText_GetTextRange

The ChatWnd::HistoryText_GetTextRange function returns the desired portion of text from the message history area (where received messages are displayed), with or without emoticon codes.

Syntax

[string] HistoryText_GetTextRange(
    [number] StartIdx,
    [number] EndIdx,
    [boolean,optional] AddObjectCodes,
);

Parameters

StartIdx
[number] Index of the first character included in the text range.
EndIdx
[number] Index following the last character included in the text range.
AddObjectCodes
[boolean,optional] Specifies if objects such as emoticons are to be replaced by their text representation. The default for this parameter is true. If this parameter is true, the length of the text returned may be different than the specified text range as objects normally count for 1 blank character.

Return Value

The portion of text corresponding to the range specified in the parameters.

This function typically fails for the following reason:

  • The StartIdx or EndIdx parameter is inferior to 0.
  • The range specified is inferior to 0.
  • The ChatWnd object refers to a window that has been destroyed.

Remarks

An "object" is anything that is not text. For example, file transfers and separator lines are represented with objects in the message history. Such objects may have no text representation at all of internal character codes such as "*".

Function Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.20

See Also

ChatWnd Object, HistoryText_GetCurSelStart, HistoryText_GetCurSelEnd.


Objects Reference - ChatWnd

ChatWnd::Handle

The ChatWnd::Handle property returns the window's handle of the chat window.

Syntax

This is a read only property.
[handle] Handle;

Data Type

The handle is a HWND object and must be used as is. It can be passed as parameter of various Windows API functions like SendMessage.

This property typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

The window's handle is provided for advanced developers only. Please use extra caution when sending messages to the chat window as they could cause Messenger to function improperly or crash. For more information about how to call Windows API functions, see Interop Object.

Property Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object, Interop Object.


Objects Reference - ChatWnd

ChatWnd::Contacts

The ChatWnd::Contacts property returns the list of contacts currently participating in the chat, excluding the active Messenger user.

Syntax

This is a read-only property.
[object] Contacts;

Data Type

A Contacts object that you can iterate to get access to Contact objects.

This property typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

None.

Property Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object, Contacts Object.


Objects Reference - ChatWnd

ChatWnd::EditText

The ChatWnd::EditText property sets or gets the text in the typing area of the chat window.

Syntax

This is a read/write property.
[string] EditText;

Data Type

A string containing the text of the typing area. See Remarks.

This property typically fails for one of the following reasons:

  • The ChatWnd object refers to a window that has been destroyed.
  • The property is being set while the edit control is disabled. See EditChangeAllowed.

Remarks

If the text being set is longer than the maximum allowed (typically 1100 characters), it is truncated. When getting text containing emoticons, Messenger Plus! tries to convert the emoticon objects to their text counter part. If it fails, the object is replaced by an empty string which means that setting back the same text will remove the emoticon. The EditChangeAllowed property should be checked before this property is set.

Property Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object, EditChangeAllowed, SendMessage.


Objects Reference - ChatWnd

ChatWnd::EditChangeAllowed

The ChatWnd::EditChangeAllowed property specifies whether or not text can be entered in the typing area of the chat window.

Syntax

This is a read-only property.
[boolean] EditChangeAllowed;

Data Type

The boolean value which is false if the edit control is disabled (grayed out) and true otherwise.

This property typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

The most common reason for this property to return false is talking to a contact who's been blocked.

Property Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object.


Objects Reference - ChatWnd

ChatWnd::ChatLogEnabled

The ChatWnd::ChatLogEnabled property sets or gets the "Logging" option of the chat window. This affects whether or not Messenger Plus! saves the content of the chat in a log file. This does not affect Messenger's own XML logs.

Syntax

This is a read/write property.
[boolean] ChatLogEnabled;

Data Type

A boolean value specifying if the chat is currently being logged.

This property typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

Messenger Plus! saves the content of the chat at regular intervals or on specific occasions like when a chat log is opened from the chat window. If the property is changed, it takes affects immediately and only for messages received after that. Also, if the window is closed and re-opened, the property is set back to its original value based on the user's preferences.

Property Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object.


Objects Reference - ChatWnd

ChatWnd::OverrideFmtEnabled

The ChatWnd::OverrideFmtEnabled property sets or gets the "Override Contact's Font" (Override Text Format) option of the chat window. When enabled, this option replaces the contact's font if different from the one used by the active Messenger user.

Syntax

This is a read/write property.
[boolean] OverrideFmtEnabled;

Data Type

A boolean value specifying if the "Override Format" option is currently enabled for this chat.

This property typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

If the window is closed and re-opened, the property is set back to its original value based on the user's preferences.

Property Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.00

See Also

ChatWnd Object.


Objects Reference - ChatWnd

ChatWnd::IsMobileChat

The ChatWnd::IsMobileChat property indicates if the window represents a Mobile Device chat. These chat windows are more limited than normal Messenger ones, still, most Messenger Plus! features are supported in them.

Syntax

This is a read-only property.
[boolean] IsMobileChat;

Data Type

A boolean value specifying if the window is a Mobile Device chat.

This property typically fails for the following reason:

  • The ChatWnd object refers to a window that has been destroyed.

Remarks

Chat windows are created as being associated with a Mobile Device or not. This property cannot change for the duration of the window's life. It is possible for the user to open two windows (or more) with the same contact: a mobile chat one, and a normal Messenger chat one.

Property Information

Object | ChatWnd
Availability | Messenger Plus! Live 4.60

See Also

ChatWnd Object.


Contacts Object

Objects Reference

The Contacts Object

The Contacts object is used to iterate a list of contacts returned by a function of the API such as Messenger::MyContacts or ChatWnd::Contacts.

Functions:

Name | Description
Iterator | This object can be iterated with an Enumerator.
GetContact | Returns a Contact object based on its email address.

Properties:

Name | Description
Count | Count of contacts contained by the object.


Objects Reference - Contacts

Contacts' Iterator

The Contacts object can be iterated through the Enumerator object of JScript.

Return Value

A Contact object.

The iterator typically fails for the following reason:

  • The Contacts object was generated by a different active user than the one currently signed-in (when the object refers to the entire user's contact list).

Remarks

Each Contacts object keeps track of its own iterator. This means that even if two objects refer to the same collection of contacts, they'll contain two different iterators. This is why Contacts objects must first be assigned to variables before being used in an Enumerator.

Example

The current user must be signed for this code to succeed.

Debug.Trace("Contacts in the user's contact list:");
var Contacts = Messenger.MyContacts;
var e = new Enumerator(Contacts);
for(; !e.atEnd(); e.moveNext())
{
    var Contact = e.item();
    Debug.Trace(" " + Contact.Email);
}

Function Information

Object | Contacts
Availability | Messenger Plus! Live 4.00

See Also

Contacts Object, Contact Object, JScript's Enumerator Object.


Objects Reference - Contacts

Contacts::GetContact

The Contacts::GetContact function returns a Contact object based on its email address.

Syntax

[object] GetContact(
    [string] Email
);

Parameters

Email
[string] The email of the user. Character case doesn't matter.

Return Value

A Contact object if the contact is found in the object's list, null otherwise.

This function typically fails for the following reason:

  • The Contacts object was generated by a different active user than the one currently signed-in (when the object refers to the entire user's contact list).

Remarks

By default, this function searches for both Windows Live and Yahoo Messenger contacts. If the current user has twice the same contact in its list, both using the same sign-in email for Windows Live and Yahoo, the contact object returned by default will always be the one connected on Windows Live. You can force a request for contacts on the Yahoo network by prefixing the email with "yahoo:".

Function Information

Object | Contacts
Availability | Messenger Plus! Live 4.00

See Also

Contacts Object, Contact Object, Contact::Network.


Objects Reference - Contacts

Contacts::Count

The Contacts::Count property returns the count of contact contained by this object.

Syntax

This is a read only property.
[number] Count;

Data Type

A number with a minimum value of 0.

This property typically fails for the following reason:

  • The Contacts object was generated by a different active user than the one currently signed-in (when the object refers to the entire user's contact list).

Remarks

The count should not be stored for later use and always requested from the object when needed.

Property Information

Object | Contacts
Availability | Messenger Plus! Live 4.00

See Also

Contacts Object.


Contact Object

Objects Reference

The Contact Object

The Contact object holds the properties associated with one contact. It is generally returned by iterating a Contacts object or calling Contacts::GetContact from an object returned by Messenger::MyContacts.

Properties:

Name | Description
Blocked | Block status of the contact in the current Messenger user's contact list.
CurrentMedia | Current "media" associated with the contact.
DisplayPicture | Path to the current display picture file used by the contact.
Email | Sign-in email address of the contact.
IsFloating | Controls the appearance of the contact on the desktop.
Name | Current name of the contact.
Network | Messenger network that the contact is using.
PersonalMessage | Current personal message of the contact.
Status | Current Messenger status of the contact.
ProfileColor | Color associated to the contact.


Objects Reference - Contact

Contact::Email

The Contact::Email property returns the sign-in email address of the contact.

Syntax

This is a read only property.
[string] Email;

Data Type

A string containing the email address of the contact.

Remarks

The email address returned by this property is the sign-in email of the contact (its Passport, Windows Live ID, ...). It uniquely identifies a contact in a given network. Because two contacts can exist with the same Email property on different networks, you must use both Email and Network to uniquely identify a contact in the current user's contact list.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.00

See Also

Contact Object, Network property.


Objects Reference - Contact

Contact::Network

The Contact::Network property identifies the Messenger network that the contact is using.

Syntax

This is a read only property.
[enum] Network;

Data Type

A number taken from the following enumeration:

NETWORK_MSN (1)
NETWORK_YAHOO (2)

Windows Live network (MSN)
Yahoo Messenger network

Remarks

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.01

See Also

Contact Object.


Objects Reference - Contact

Contact::Status

The Contact::Status property returns the current Messenger status of the contact.

Syntax

This is a read only property.
[enum] Status;

Data Type

A number taken from the following enumeration:

STATUS_OFFLINE (1)
STATUS_ONLINE (3)
STATUS_BUSY (4)
STATUS_BRB (5)
STATUS_IDLE (6)
STATUS_AWAY (7)
STATUS_INCALL (8)
STATUS_OUTLUNCH (9)

Offline
Online
Busy
Be Right Back
Idle
Away
In a Call
Out to Lunch

If Messenger Plus! fails to get the contact's status for any reason, the return value is:

STATUS_UNKNOWN (0)

Unknown

Remarks

The Idle status can be interpreted like Away if needed. Messenger automatically sets the status of a user to Idle after a period of inactivity.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.00

See Also

Contact Object.


Objects Reference - Contact

Contact::Name

The Contact::Name property returns the current name of the contact.

Syntax

This is a read-only property.
[string] Name;

Data Type

A string containing the name of the contact. See Remarks.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

This property returns the name of the contact as published by the contact. It does not return the eventual nickname associated with the contact.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.00

See Also

Contact Object.


Objects Reference - Contact

Contact::PersonalMessage

The Contact::PersonalMessage property returns the current personal message of the contact.

Syntax

This is a read-only property.
[string] PersonalMessage;

Data Type

A string specifying the personal message.

Remarks

Despite the fact that Windows Live Messenger mixes both properties, the PersonalMessage property is different from CurrentMedia. When a CurrentMedia is associated to a contact, Messenger simply hides the personal message to display the media's name.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.00

See Also

Contact Object, CurrentMedia.


Objects Reference - Contact

Contact::CurrentMedia

The Contact::CurrentMedia property returns the current "media" associated with the contact. It is typically a song's title or a game's name.

Syntax

This is a read-only property.
[string] CurrentMedia;

Data Type

A string specifying the current media. This string is the raw text received by Messenger identifying the media, it is up to you to decode it appropriately. An example of such string would be "\0Music\01\0{0} - {1}\0Return to Tatooine\0John Williams\0Star Wars Episode II Soundtrack\0\0".

Remarks

Despite the fact that Windows Live Messenger mixes both properties, the CurrentMedia property is different from PersonalMessage. When a CurrentMedia is associated to a contact, Messenger simply hides the personal message to display the media's name.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.00

See Also

Contact Object, PersonalMessage.


Objects Reference - Contact

Contact::Blocked

The Contact::Blocked property sets or gets the block status of the contact in the current Messenger user's contact list.

Syntax

This is a read/write property.
[boolean] Blocked;

Data Type

A boolean value specifying if the contact is blocked or not.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

None.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.00

See Also

Contact Object.


Objects Reference - Contact

Contact::DisplayPicture

The Contact::DisplayPicture property returns the path to the current display picture file used by the contact.

Syntax

This is a read-only property.
[string] DisplayPicture;

Data Type

A string containing the full path to the display picture, if any. If no display picture is currently associated to this contact, the property returns an empty string. Display pictures are usually PNG files but no assumption should be made regarding their format.

Remarks

The file path returned by this function is temporary, must not be stored for future use and must not be locked. If the file needs to be accessed after the current script's function returns (to be displayed in an interface window for example), it must be copied to a safe location. Dynamic pictures accessed through this property return a static, non animated image.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.00

See Also

Contact Object.


Objects Reference - Contact

Contact::IsFloating

The Contact::IsFloating property controls the appearance of the contact on the desktop using the "Contacts on Desktop" feature of Messenger Plus!.

Syntax

This is a read/write property.
[boolean] IsFloating;

Data Type

A boolean value specifying if the contact is displayed on the desktop in a small floating window.

This property typically fails for the following reason:

  • The current Messenger user is not signed in.

Remarks

Even when this property is true, the contact may not appear on the desktop of the "Contacts on Desktop" feature is disabled in the current user's preferences.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.00

See Also

Contact Object.


Emoticons Object

Objects Reference

The Emoticons Object

The Emoticons object is used to iterate a list of Emoticons returned by the Messenger::CustomEmoticons function.

Functions:

Name | Description
Iterator | This object can be iterated with an Enumerator.
GetEmoticon | Returns an Emoticon object based on its text shortcut.

Properties:

Name | Description
Count | Count of emoticons contained by the object.


Objects Reference - Emoticons

Emoticons' Iterator

The Emoticons object can be iterated through the Enumerator object of JScript.

Return Value

A Emoticon object.

Remarks

Each Emoticons object keeps track of its own iterator. This means that even if two objects refer to the same collection of Emoticons, they'll contain two different iterators. This is why Emoticons objects must first be assigned to variables before being used in an Enumerator.

Example

The current user must be signed for this code to succeed.

Debug.Trace("Custom emoticons of the current user:");
var Emoticons = Messenger.CustomEmoticons;
var e = new Enumerator(Emoticons);
for(; !e.atEnd(); e.moveNext())
{
    var Emoticon = e.item();
    Debug.Trace(" " + Emoticon.Shortcut);
}

Function Information

Object | Emoticons
Availability | Messenger Plus! Live 4.10

See Also

Emoticons Object, Emoticon Object, JScript's Enumerator Object.


Objects Reference - Emoticons

Emoticons::GetEmoticon

The Emoticons::GetEmoticon function returns an Emoticon object based on its text shortcut.

Syntax

[object] GetEmoticon(
    [string] Shortcut
);

Parameters

Email
[string] Text shortcut associated with the emoticon to retrieve (case sensitive).

Return Value

An Emoticon object if the Emoticon is found in the object's list, null otherwise.

Remarks

None.

Function Information

Object | Emoticons
Availability | Messenger Plus! Live 4.10

See Also

Emoticons Object, Emoticon Object.


Objects Reference - Emoticons

Emoticons::Count

The Emoticons::Count property returns the count of emoticon contained by this object.

Syntax

This is a read only property.
[number] Count;

Data Type

A number with a minimum value of 0.

Remarks

None.

Property Information

Object | Emoticons
Availability | Messenger Plus! Live 4.10

See Also

Emoticons Object.


Emoticon Object

Objects Reference

The Emoticon Object

The Emoticon object holds the properties associated with one custom emoticon. It is generally returned by iterating an Emoticons object or calling Emoticons::GetEmoticon from an object returned by Messenger::CustomEmoticons.

Properties:

Name | Description
Shortcut | Text shortcut associated with the emoticon.
Name | Name associated with the emoticon.
PictureFile | Path to the picture file associated with the emoticon.


Objects Reference - Emoticon

Emoticon::Shortcut

The Emoticon::Shortcut property returns the text shortcut associated with the emoticon. Messenger uses this string to replace text in a message with the corresponding emoticon. Each emoticon has a unique shortcut.

Syntax

This is a read-only property.
[string] Shortcut;

Data Type

A string specifying the text shortcut for the emoticon. The default Messenger's maximum size for this string is 7 characters, however no assumption should be made on the size of the string (except that it's at least 1 character long).

Remarks

Custom emoticons shortcuts are case sensitive.

Property Information

Object | Emoticon
Availability | Messenger Plus! Live 4.10

See Also

Emoticon Object.


Objects Reference - Emoticon

Emoticon::Name

The Emoticon::Name property returns the name associated with the emoticon. Names are optional and may not be specified for every custom emoticon.

Syntax

This is a read-only property.
[string] Name;

Data Type

A string containing the name of the emoticon, if any.

Remarks

None.

Property Information

Object | Emoticon
Availability | Messenger Plus! Live 4.10

See Also

Emoticon Object.


Objects Reference - Emoticon

Emoticon::PictureFile

The Emoticon::PictureFile property returns the path to the picture file associated with the emoticon.

Syntax

This is a read-only property.
[string] PictureFile;

Data Type

A string containing the full path to the custom emoticon's file. Emoticons are generally PNG files (for static emoticons) or GIF files (for animated emoticons).

Remarks

The file path returned by this function is temporary, must not be stored for future use and must not be locked. If the file needs to be accessed after the current script's function returns (to be displayed in an interface window for example), it must be copied to a safe location.

Property Information

Object | Emoticon
Availability | Messenger Plus! Live 4.10

See Also

Emoticon Object.


PlusWnd Object

PlusWnd Plus! Live - Scripting Documentation

Objects Reference

The PlusWnd Object

The PlusWnd object is associated to every window created with MsgPlus.CreateWnd or MsgPlus.CreateChildWnd. It allows developers to control the window itself and the controls is contains. Some helper functions are also available for quick access to common controls' properties.

Functions:

Name | Description
Close | Destroys the window.
RegisterMessageNotification | Hooks specific messages in the window.
GetControlHandle | Returns the window's handle of any kind of control present in the window.
SendControlMessage | Sends a raw message to a control in the window.
GetControlText | Returns the text property of a variety of controls.
SetControlText | Sets the text property of a variety of controls.
GetElementPos | Gets the position of an element embedded in the window.
Button_IsChecked | Returns the check state of a CheckBoxControl or a RadioControl.
Button_SetCheckState | Sets the check state of a CheckBoxControl or a RadioControl.
Button_SetElementText | Sets the text of a sub-element defined in a control.
Combo_AddItem | Adds an item in a ComboBoxControl.
Combo_RemoveItem | Removes an item from a ComboBoxControl.
Combo_GetCurSel | Current selection in a ComboBoxControl.
Combo_SetCurSel | Changes the selection in a ComboBoxControl.
Combo_GetItemData | Data number associated with an item of a ComboBoxControl.
Combo_GetCount | Count of items in a ComboBoxControl.
LstBox_AddItem | Adds an item in a ListBoxControl.
LstBox_GetItemText | Returns the item's label of a ListBoxControl.
LstBox_RemoveItem | Removes an item from a ListBoxControl.
LstBox_GetCurSel | Returns the current selection in a ListBoxControl.
LstBox_SetCurSel | Changes the selection in a ListBoxControl.
LstBox_GetItemData | Returns the data number associated with an item of a ListBoxControl.
LstBox_GetCount | Returns the count of items in a ListBoxControl.
LstView_AddItem | Adds an item in a ListViewControl.
LstView_SetItemText | Sets one of the labels of a ListViewControl item.
LstView_GetItemText | Returns one of the labels associated with a ListViewControl item.
LstView_RemoveItem | Removes an item from a ListViewControl.
LstView_GetItemData | Returns the data number associated with an item of a ListViewControl.
LstView_GetCount | Returns the count of items in a ListViewControl.
LstView_GetSelectedState | Returns the selection state of an item in a ListViewControl.
LstView_SetSelectedState | Selects or unselects an item in a ListViewControl.
LstView_GetCheckedState | Returns the checked state of an item in a ListViewControl.
LstView_SetCheckedState | Checks or unchecks an item in a ListViewControl.
LstView_SetItemIcon | Sets the icon displayed with an item in a ListViewControl.
ImageElmt_SetImageFile | Sets the image file to be displayed by an ImageElement.
EditBox_SetCurSel | Sets the current selection of an EditControl or a RichEditControl.
EditBox_ReplaceSel | Replaces the text selected in an EditControl or a RichEditControl.
EditBox_GetCurSelStart | Returns the first selected character of an EditControl or a RichEditControl.
EditBox_GetCurSelEnd | Returns the last selected character of an EditControl or a RichEditControl.
RichEdit_GetTextRange | Returns a portion of text from a RichEditControl.
RichEdit_SetCharFormat | Sets the formatting attributes of the characters in a RichEditControl.
Browser_GetInterface | Get the InternetExplorer object associated with a BrowserControl.

Properties:

Name | Description
WindowId | Unique identifier of the window.
Handle | Handle of the window controlled by this object
Visible | Controls whether the window is visible on screen or not.
BaseColor | Changes the base color displayed in the window.


Objects Reference - PlusWnd

PlusWnd::Close

The PlusWnd::Close function destroys the window.

Syntax

Close(
    [number] ExitCode
);

Parameters

ExitCode
[number] A number specifying the exit code for the window. It has no particular meaning for Messenger Plus! and can be anything the script's developer wishes it to be. The following enumeration lists some standard exit codes that can be used, if needed:

EXITCODE_OK (1)
EXITCODE_CANCEL (2)
EXITCODE_ABORT (3)
EXITCODE_RETRY (4)
EXITCODE_IGNORE (5)
EXITCODE_YES (6)
EXITCODE_NO (7)

OK
Cancel
Abort
Retry
Ignore
Yes
No

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

The object generates an OnWindowidEvent_Destroyed event when the destruction occurs.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::RegisterMessageNotification

The PlusWnd::RegisterMessageNotification function allows advanced script developers to hook specific messages in their windows. Any message can be specified for custom processing.

Syntax

RegisterMessageNotification(
    [number] Message,
    [boolean,optional] Enable
);

Parameters

Message
[number] Identifier of the message that will generate the notification. Check out the MSDN Library and the Platform SDK include files for more details.
Enable
[boolean,optional] Set this parameter to false to remove a previous registration and disable notifications for a specific message. This parameter is true by default, to create the registration.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The Message parameter is not valid.

Remarks

This function needs to be called for each message you want to hook. Each time one of those messages is received by the window, an OnWindowidEvent_MessageNotification event is generated.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.10

See Also

PlusWnd Object, OnWindowidEvent_MessageNotification.


Objects Reference - PlusWnd

PlusWnd::GetControlHandle

The PlusWnd::GetControlHandle function returns the window's handle of any kind of control present in the window.

Syntax

[handle] GetControlHandle(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

The window's handle of the control specified in parameter. If the control cannot be found, the return value is null.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object


Objects Reference - PlusWnd

PlusWnd::SendControlMessage

The PlusWnd::SendControlMessage function sends a raw message to a control in the window.

Syntax

[number] SendControlMessage(
    [string] ControlId,
    [number] Message,
    [number] wParam,
    [number] lParam
);

Parameters

ControlId
[string] Unique identifier of the control.
Message
[number] Identifier of the message to send. Each type of a control has different message identifiers. Check out the MSDN Library and the Platform SDK include files for more details.
wParam
[number] First parameter (wParam) sent with the message. This is generally a number, a pointer to a string or a pointer to some raw data.
lParam
[number] Second parameter (lParam) sent with the message. This is generally a number, a pointer to a string or a pointer to some raw data.

Return Value

The return value is the result of the call to the SendMessage function of the Windows API.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

This function is to be used by more advanced developers who want to send specific messages to a control in the window. Please use caution when specifying the parameters for each message as incorrect values may result in crashing Messenger.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, Windows API SendMessage.


Objects Reference - PlusWnd

PlusWnd::GetControlText

The PlusWnd::GetControlText function returns the text property of a ButtonControl, a CheckBoxControl, a RadioControl, a LinkControl, an EditControl, a RichEditControl, a RichStaticControl or a StaticControl.

Syntax

[string] GetControlText(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A string containing the text property of the control specified in parameter. The meaning of this string is specific to each type of control.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, SetControlText.


Objects Reference - PlusWnd

PlusWnd::SetControlText

The PlusWnd::SetControlText function sets the text property of a ButtonControl, a CheckBoxControl, a RadioControl, a LinkControl, an EditControl, a RichEditControl, a RichStaticControl or a StaticControl.

Syntax

SetControlText(
    [string] ControlId,
    [string] Text
);

Parameters

ControlId
[string] Unique identifier of the control.
Text
[string] Text to set in the control.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, GetControlText.


Objects Reference - PlusWnd

PlusWnd::GetElementPos

The PlusWnd::GetElementPos function returns the X position, Y position, width or height of the specified element. To get the position of a control instead, call the GetWindowRect API function.

Syntax

[number] GetElementPos(
    [string] ElementId,
    [number] PosInfo
);

Parameters

ElementId
[string] Unique identifier of the element.
PosInfo

[enum] Requested property of the element, represented by a number taken from the following enumeration:

POSINFO_X (1)
POSINFO_Y (2)
POSINFO_WIDTH (3)
POSINFO_HEIGHT (4)

Position on the X axis
Position on the Y axis
Width of the element
Height of the element

Return Value

A number containing the property requested in PosInfo. Values are all expressed in pixels and are client coordinates relative to the upper-left corner of the window.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.
  • The enumeration value specified in PosInfo is unknown.

Remarks

This function is particularly useful when adding a PlaceHolderElement element in your window to create things like child windows. It helps find the appropriate position and size to use as elements are best declared, like controls, with dialog units instead of pixel units.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.60

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::Button_IsChecked

The PlusWnd::Button_IsChecked function returns the check state of a CheckBoxControl or a RadioControl.

Syntax

[boolean] Button_IsChecked(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A boolean value that's true is the button is checked and false if it's unchecked

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, Button_SetCheckState.


Objects Reference - PlusWnd

PlusWnd::Button_SetCheckState

The PlusWnd::Button_SetCheckState function sets the check state of a CheckBoxControl or a RadioControl.

Syntax

Button_SetCheckState(
    [string] ControlId,
    [boolean] Checked
);

Parameters

ControlId
[string] Unique identifier of the control.
Checked
[boolean] True is the button must be checked, false if it must be unchecked.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, Button_IsChecked.


Objects Reference - PlusWnd

PlusWnd::Button_SetElementText

The PlusWnd::Button_SetElementText function sets the text of a sub-element defined in the <CustomLook> section of a ButtonControl, a CheckBoxControl or a RadioControl.

Syntax

Button_SetElementText(
    [string] ControlId,
    [string] ElementId,
    [string] Text
);

Parameters

ControlId
[string] Unique identifier of the control.
ElementId
[string] Unique identifier of the sub-element. This must be a Text Element.
Text
[string] Text to set in the specified Text Element.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

This function only changes the text of controls that are drawn in a special way. To change the caption of a standard control, use SetControlText.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.60

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::Combo_AddItem

The PlusWnd::Combo_AddItem function adds an item in a ComboBoxControl.

Syntax

[number] Combo_AddItem(
    [string] ControlId,
    [string] Label,
    [number, optional] ItemData,
    [string, optional] ImageId
);

Parameters

ControlId
[string] Unique identifier of the control.
Label
[string] Text label of the new item.
ItemData
[number, optional] If used, a number associated with the new item. It can be anything the developer wishes it to be.
ImageId
[string, optional] Identifier of the image to associate with the item. Accepted only in Messenger Plus! Live 4.50 and above. See remarks.

Return Value

If the new item is added successfully, the return value is the index of the new item in the combo's list. If not, the return value is -1.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.
  • The ImageId specified in parameter is not valid.

Remarks

Messenger Plus! Live 4.50 and above: to associate an icon with an item, the image must be specified in the ComboBox properties in the XML file ("Images" element). The height of the first image in the list defines the height of every item in the list. Also, remember that the ImageId parameter is the Id attribute specified with the image and not the image's name (its file name).

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::Combo_RemoveItem

The PlusWnd::Combo_RemoveItem function removes an item from a ComboBoxControl.

Syntax

Combo_RemoveItem(
    [string] ControlId,
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item that is to be removed from the combo's list.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::Combo_GetCurSel

The PlusWnd::Combo_GetCurSel function returns the current selection in a ComboBoxControl.

Syntax

[number] Combo_GetCurSel(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A number specifying the index of the item currently selected in the combo's list. If no item is selected, the return value is -1.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, Combo_SetCurSel.


Objects Reference - PlusWnd

PlusWnd::Combo_SetCurSel

The PlusWnd::Combo_SetCurSel function changes the selection in a ComboBoxControl.

Syntax

Combo_SetCurSel(
    [string] ControlId
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item to select in the combo's list.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, Combo_GetCurSel.


Objects Reference - PlusWnd

PlusWnd::Combo_GetItemData

The PlusWnd::Combo_GetItemData function returns the data number associated with an item of a ComboBoxControl.

Syntax

[number] Combo_GetItemData(
    [string] ControlId
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which data will be retrieved.

Return Value

A number specifying the data associated with the item in parameter. The number can be anything you chose to assign to the item when adding it to the combo's list.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, Combo_AddItem.


Objects Reference - PlusWnd

PlusWnd::Combo_GetCount

The PlusWnd::Combo_GetCount function returns the count of items in a ComboBoxControl.

Syntax

[number] Combo_GetCount(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A number specifying the count of items in the combo's list.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::LstBox_AddItem

The PlusWnd::LstBox_AddItem function adds an item in a ListBoxControl.

Syntax

[number] LstBox_AddItem(
    [string] ControlId,
    [string] Label,
    [number, optional] ItemData
);

Parameters

ControlId
[string] Unique identifier of the control.
Label
[string] Text label of the new item.
ItemData
[number, optional] If used, a number associated with the new item. It can be anything the developer wishes it to be.

Return Value

If the new item is added successfully, the return value is the index of the new item in the list. If not, the return value is -1.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::LstBox_GetItemText

The PlusWnd::LstBox_GetItemText function returns the item's label of a ListBoxControl.

Syntax

[string] LstBox_GetItemText(
    [string] ControlId,
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which label will be retrieved.

Return Value

A string containing the label of the item specified in parameter.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::LstBox_RemoveItem

The PlusWnd::LstBox_RemoveItem function removes an item from a ListBoxControl.

Syntax

LstBox_RemoveItem(
    [string] ControlId,
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item that is to be removed from the list.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::LstBox_GetCurSel

The PlusWnd::LstBox_GetCurSel function returns the current selection in a ListBoxControl.

Syntax

[number] LstBox_GetCurSel(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A number specifying the index of the item currently selected in the combo's list. If no item is selected, the return value is -1.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

If "MultipleSel" is set to true in the List Box's attributes, this function returns the index of the item that has the focus rectangle.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstBox_SetCurSel.


Objects Reference - PlusWnd

PlusWnd::LstBox_SetCurSel

The PlusWnd::LstBox_SetCurSel function changes the selection in a ListBoxControl.

Syntax

LstBox_SetCurSel(
    [string] ControlId
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item to select in the list.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

If "MultipleSel" is set to true in the List Box's attributes, this function has no effect.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstBox_GetCurSel.


Objects Reference - PlusWnd

PlusWnd::LstBox_GetItemData

The PlusWnd::LstBox_GetItemData function returns the data number associated with an item of a ListBoxControl.

Syntax

[number] LstBox_GetItemData(
    [string] ControlId
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which data will be retrieved.

Return Value

A number specifying the data associated with the item in parameter. The number can be anything you chose to assign to the item when adding it to the list.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstBox_AddItem.


Objects Reference - PlusWnd

PlusWnd::LstBox_GetCount

The PlusWnd::LstBox_GetCount function returns the count of items in a ListBoxControl.

Syntax

[number] LstBox_GetCount(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A number specifying the count of items in the list.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::LstView_AddItem

The PlusWnd::LstView_AddItem function adds an item in a ListViewControl.

Syntax

[number] LstView_AddItem(
    [string] ControlId
    [string] MainText
    [number,optional] ItemData
    [number,optional] Position
);

Parameters

ControlId
[string] Unique identifier of the control.
MainText
[string] Text to be inserted in the first column of the list for this item.
ItemData
[number,optional] If used, a number associated with the new item. It can be anything the developer wishes it to be.
Position
[number,optional] If used, the 0 based position of the new item. If this parameter is not specified, the new item is added at the end of the list.

Return Value

If the new item is added successfully, the return value is the index of the new item in the list. If not, the return value is -1.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::LstView_SetItemText

The PlusWnd::LstView_SetItemText function sets one of the labels of a ListViewControl item.

Syntax

LstView_SetItemText(
    [string] ControlId,
    [number] ItemIdx,
    [number] ColumnIdx,
    [string] Text
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which label is to be set.
ColumnIdx
[number] Index of the column which label is to be set.
Text
[string] Text to set in the specified item's column.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstView_GetItemText.


Objects Reference - PlusWnd

PlusWnd::LstView_GetItemText

The PlusWnd::LstView_GetItemText function returns one of the labels associated with a ListViewControl item.

Syntax

[string] LstView_GetItemText(
    [string] ControlId,
    [number] ItemIdx,
    [number] ColumnIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which label will be retrieved.
ColumnIdx
[number] Index of the column which label will be retrieved.

Return Value

A string containing the label of the specified item's column.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstView_SetItemText.


Objects Reference - PlusWnd

PlusWnd::LstView_RemoveItem

The PlusWnd::LstView_RemoveItem function removes an item from a ListViewControl.

Syntax

LstView_RemoveItem(
    [string] ControlId,
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item that is to be removed from the list.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::LstView_GetItemData

The PlusWnd::LstView_GetItemData function returns the data number associated with an item of a ListViewControl.

Syntax

[number] LstView_GetItemData(
    [string] ControlId,
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which data will be retrieved.

Return Value

A number specifying the data associated with the item in parameter. The number can be anything you chose to assign to the item when adding it to the list.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstView_AddItem.


Objects Reference - PlusWnd

PlusWnd::LstView_GetCount

The PlusWnd::LstView_GetCount function returns the count of items in a ListViewControl.

Syntax

[number] LstView_GetCount(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A number specifying the count of items in the list.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::LstView_GetSelectedState

The PlusWnd::LstView_GetSelectedState function returns the selection state of an item in a ListViewControl.

Syntax

[boolean] LstView_GetSelectedState(
    [string] ControlId,
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which selection state will be retrieved.

Return Value

A boolean value that's true if the item is selected and false is the item is not.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstView_SetSelectedState.


Objects Reference - PlusWnd

PlusWnd::LstView_SetSelectedState

The PlusWnd::LstView_SetSelectedState function selects or unselects an item in a ListViewControl.

Syntax

LstView_SetSelectedState(
    [string] ControlId,
    [number] ItemIdx,
    [boolean] SelectedState
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which check state is to be retrieved.
SelectedState
[boolean] True if the item is to be selected, false if the item is to be unselected.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstView_GetSelectedState.


Objects Reference - PlusWnd

PlusWnd::LstView_GetCheckedState

The PlusWnd::LstView_GetCheckedState function returns the checked state of an item in a ListViewControl.

Syntax

[boolean] LstView_GetCheckedState(
    [string] ControlId,
    [number] ItemIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which check state is to be retrieved.

Return Value

A boolean value. The return is true if the item is checked and false if it's unchecked.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

This function will only work if the List View control is in Report View mode with the "HasCheckboxes" attribute set to true.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstView_SetCheckedState.


Objects Reference - PlusWnd

PlusWnd::LstView_SetCheckedState

The PlusWnd::LstView_SetCheckedState function checks or unchecks an item in a ListViewControl.

Syntax

LstView_SetCheckedState(
    [string] ControlId,
    [number] ItemIdx,
    [boolean] CheckedState
);

Parameters

ControlId
[string] Unique identifier of the control
ItemIdx
[number] Index of the item which check state is to be retrieved.
CheckedState
[boolean] True is the item is to be checked, false if it is to be unchecked.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

This function will only work if the List View control is in Report View mode with the "HasCheckboxes" attribute set to true.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, LstView_GetCheckedState.


Objects Reference - PlusWnd

PlusWnd::LstView_SetItemIcon

The PlusWnd::LstView_SetItemIcon function sets the icon displayed with an item in a ListViewControl.

Syntax

LstView_SetItemIcon(
    [string] ControlId,
    [number] ItemIdx,
    [string] ImageId,
    [boolean] SmallIconsList
);

Parameters

ControlId
[string] Unique identifier of the control.
ItemIdx
[number] Index of the item which icon will be set.
ImageId
[string] Identifier of the image to associate with the item. See remarks.
SmallIconsList
[boolean] True if the image is in the "SmallIcons" list, false if the image is in the "LargeIcons" list. see remarks.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

To associate an icon with an item, the image must be specified in the List View properties in the XML file. This can be done in the "Images\LargeIcons" element or the "Image\SmallIcons" element. For the Report View mode, images must be specified in the "SmallIcons" list. The height of the first image in the list defines the height of every item in the list. Also, remember that the ImageId parameter is the Id attribute specified with the image and not the image's name (its file name).

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::EditBox_SetCurSel

The PlusWnd::EditBox_SetCurSel function sets the current selection of an EditControl or a RichEditControl.

Syntax

EditBox_SetCurSel(
    [string] ControlId,
    [number] Start,
    [number] End
);

Parameters

ControlId
[string] Unique identifier of the control.
Start
[number] Index of the first character to select.
End
[number] Index following the last character to select.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.21

See Also

PlusWnd Object, EditBox_GetCurSelStart, EditBox_GetCurSelEnd.


Objects Reference - PlusWnd

PlusWnd::EditBox_ReplaceSel

The PlusWnd::EditBox_ReplaceSel function replaces the text selected in an EditControl or a RichEditControl.

Syntax

EditBox_ReplaceSel(
    [string] ControlId,
    [string] Text
);

Parameters

ControlId
[string] Unique identifier of the control.
Text
[string] New text to be inserted in place of the current selection. Set this parameter to an empty string to delete the text currently selected.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.21

See Also

PlusWnd Object, EditBox_SetCurSel.


Objects Reference - PlusWnd

PlusWnd::EditBox_GetCurSelStart

The PlusWnd::EditBox_GetCurSelStart function returns the index of the first character currently selected in an EditControl or a RichEditControl. If nothing is selected, the index of the caret is returned.

Syntax

EditBox_GetCurSelStart(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A numeric value representing a position in the text, ranging from 0 to the size of the text currently in the control.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.21

See Also

PlusWnd Object, EditBox_GetCurSelEnd.


Objects Reference - PlusWnd

PlusWnd::EditBox_GetCurSelEnd

The PlusWnd::EditBox_GetCurSelEnd function returns the index following the last character currently selected in an EditControl or a RichEditControl.

Syntax

EditBox_GetCurSelEnd(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A numeric value representing a position in the text, ranging from 0 to the size of the text currently in the control.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.21

See Also

PlusWnd Object, EditBox_GetCurSelStart.


Objects Reference - PlusWnd

PlusWnd::RichEdit_GetTextRange

The PlusWnd::RichEdit_GetTextRange function returns a portion of text from a RichEditControl.

Syntax

RichEdit_GetTextRange(
    [string] ControlId,
    [number] StartIdx,
    [number] EndIdx
);

Parameters

ControlId
[string] Unique identifier of the control.
StartIdx
[number] Index of the first character included in the text range.
EndIdx
[number] Index following the last character included in the text range.

Return Value

The portion of text corresponding to the range specified in the parameters.

This function typically fails for the following reason:

  • The StartIdx or EndIdx parameter is inferior to 0.
  • The range specified is inferior to 0.
  • The PlusWnd object refers to a window that has been destroyed.

Remarks

This function can only be used with a RichEditControl, it has no effect on an EditControl.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.21

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::RichEdit_SetCharFormat

The PlusWnd::RichEdit_SetCharFormat function changes the formatting attributes of the characters in a RichEditControl. The change can be applied on a selection or on the whole text of the control.

Syntax

RichEdit_SetCharFormat(
    [string] ControlId,
    [boolean] SetOnSel,
    [number] Bold,
    [number] Italic,
    [number] Underline,
    [number] Strikeout,
    [number] Height,
    [number] TextColor,
    [string] FaceName
);

Parameters

ControlId
[string] Unique identifier of the control.
SetOnSel
[boolean] If this parameter is true, the new attributes are set to the current selection. If it is false, the new attributes are set on the whole text of the control. See remarks.
Bold
[number] 1 to set bold, 0 to remove bold, -1 to ignore this parameter.
Italic
[number] 1 to set italic, 0 to remove italic, -1 to ignore this parameter.
Underline
[number] 1 to set underline, 0 to remove underline, -1 to ignore this parameter.
Strikeout
[number] 1 to set strikeout, 0 to remove strikeout, -1 to ignore this parameter.
Height
[number] Size of the text in device units, -1 to ignore this parameter.
TextColor
[number] Color of the text, in RGB format (0x00bbggrr), -1 to ignore this parameter.
FaceName
[string] Font name, set to an empty string to ignore this parameter.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • FaceName has a length bigger than 31 characters.
  • The PlusWnd object refers to a window that has been destroyed.

Remarks

This function can only be used with a RichEditControl, it has no effect on an EditControl.

To change the formatting of a portion of text only (when SetOnSel is true), the control's XML attributes must specify "Rich Text" for <TextMode>. If it isn't specified, the function fails silently.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.21

See Also

PlusWnd Object, EditBox_SetCurSel.


Objects Reference - PlusWnd

PlusWnd::Browser_GetInterface

The PlusWnd::Browser_GetInterface function returns an interface to the InternetExplorer object associated with a Browser Control. This interface allows you to interact with the control in various ways, like changing the current page.

Syntax

Browser_GetInterface(
    [string] ControlId
);

Parameters

ControlId
[string] Unique identifier of the control.

Return Value

A dispatch interface to the internal InternetExplorer object. For more information, check out the documentation of the control in the MSDN Library.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Example

This code creates an interface window, gets a reference to its browser control and navigates to msgpluslive.net.

var MyWindow = MsgPlus.CreateWnd("Interface.xml", "MyWindow");

var WebControl = MyWindow.Browser_GetInterface("BroInternet");
WebControl.Navigate2("http://www.msgpluslive.net");

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.50

See Also

PlusWnd Object, MSDN Library's documentation of InternetExplorer objects.


Objects Reference - PlusWnd

PlusWnd::ImageElmt_SetImageFile

The PlusWnd::ImageElmt_SetImageFile function sets the image file to be displayed by an ImageElement.

Syntax

ImageElmt_SetImageFile(
    [string] ElementId,
    [string] File
);

Parameters

ElementId
[string] Unique identifier of the element.
File
[string] Path to the image's file to use. It can be a PNG, a JPG, a GIF or a BMP file. The path is relative to the script's "Images" sub-directory by default, to override this behavior, prefix the path with "\". Example: "\C:\directory\picture.png".

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

If a picture appears deformed when displayed, it may be the result of the "Mosaic" attribute of the image element combined with the specified Width and Height.

Function Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::Handle

The PlusWnd::Handle property returns the handle of the window controlled by this object

Syntax

This is a read-only property.
[handle] Handle;

Data Type

A window's handle.

This property typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Property Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::Visible

The PlusWnd::Visible property controls whether the window is visible on screen or not.

Syntax

This is a read/write property.
[boolean] Visible;

Data Type

A boolean value specifying if the window is visible.

This property typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Property Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object.


Objects Reference - PlusWnd

PlusWnd::WindowId

The PlusWnd::WindowId property returns the unique identifier of the window.

Syntax

This is a read-only property.
[string] WindowId;

Data Type

A string containing the identifier of the window. This is the identifier that was used to create the window in MsgPlus::CreateWnd or MsgPlus::CreateChildWnd.

This property typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

None.

Property Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.00

See Also

PlusWnd Object, MsgPlus::CreateWnd, MsgPlus::CreateChildWnd.


Interop Object

Interop Plus! Live - Scripting Documentation

Objects Reference

The Interop Object

The Interop object allows developers to interact with outside libraries.

Functions:

Name | Description
Call | Call functions located in external libraries.
Call2 | Call functions located in custom made external libraries and return a string.
FreeDll | Unloads a DLL previously loaded by Call.
Allocate | Allocates a memory block for low level operations.
GetLastError | Returns the result of the GetLastError Windows API function.
GetCallbackPtr | Returns a pointer to a native function for callback use.


Objects Reference - Interop

Interop::Call

The Interop::Call function allows scripts to call functions located in external libraries. For example, it can be used to call functions from the Windows API.

Syntax

[number] Call(
    [string] DllName,
    [string] FunctionName,
    [var, optional] Param1,
    [var, optional] Param2,
    [var, optional] Param3,
    [var, optional] Param4,
    [var, optional] Param5,
    [var, optional] Param6,
    [var, optional] Param7,
    [var, optional] Param8,
    [var, optional] Param9,
    [var, optional] Param10,
    [var, optional] Param11,
    [var, optional] Param12
);

Parameters

DllName
[string] Path to the DLL file where the function to call is located. If multiple calls are made to the same DLL, the DLL is loaded only once and stays in memory until FreeDll is called or the script is terminated. The DLL file will be located by using the standard "LoadLibrary" mechanism described here. As no "current directory" is guaranteed for your script, you'll need to use MsgPlus.ScriptFilesPath to load a library from your script's directory.
FunctionName
[string] Name of the function as specified in the export table of the library. The function must use the __stdcall calling convention. See Remarks.
Param1
[var, optional] First parameter to send to the function, if any.
Here is how the data will be sent to the function depending on its type:

  • If the parameter is a plain number (positive or negative), it is sent as is.

  • If the parameter is a floating point number, it is rounded up and sent as a plain number.

  • If the parameter is a boolean, a number is sent: 1 for true, 0 for false.

  • If the parameter is null, 0 is sent.

  • If the parameter is a string, a pointer to a Unicode string is sent.

  • If the parameter is a DataBloc object, a pointer to its underlying data is sent.

  • If the parameter is any other object, a pointer to its IDispatch interface is sent. The reference count of the object is not increased.

Param2
[var, optional] Second parameter to send to the function, if any. See Param1.
Param3
[var, optional] Third parameter to send to the function, if any. See Param1.
Param4
[var, optional] Fourth parameter to send to the function, if any. See Param1.
Param5
[var, optional] Fifth parameter to send to the function, if any. See Param1.
Param6
[var, optional] Sixth parameter to send to the function, if any. See Param1.
Param7
[var, optional] Seventh parameter to send to the function, if any. See Param1.
Param8
[var, optional] Eighth parameter to send to the function, if any. See Param1.
Param9
[var, optional] Ninth parameter to send to the function, if any. See Param1.
Param10
[var, optional] Tenth parameter to send to the function, if any. Accepted only in Messenger Plus! Live 4.21 and above. See Param1.
Param11
[var, optional] Eleventh parameter to send to the function, if any. Accepted only in Messenger Plus! Live 4.21 and above. See Param1.
Param12
[var, optional] Twelfth parameter to send to the function, if any. Accepted only in Messenger Plus! Live 4.21 and above. See Param1.

Return Value

A number, returned by the function. The meaning of this number depends on the function called.

This function typically fails for the following reasons:

  • The DLL couldn't be located on the system.
  • The function couldn't be located in the specified DLL.
  • An exception was thrown during the function call.

Messenger Plus! Live 4.10 and above: an error is logged in the Script Debugging window when an exception is thrown during the call (often caused by incorrect parameters).

Remarks

Developers who use this function must be very careful about the functions they call and the parameters they accept. Here is a list of requirements for this function to succeed:

  • The function called must use the __stdcall calling convention, also referred as WINAPI in some places.
  • The function must return something (it can't be "void") even if the value has no particular meaning.
  • The function must not take more than 12 parameters in Messenger Plus! Live 4.21+ and 9 parameters in older versions.
  • The function must accept Unicode string (although ANSI string may be sent with a DataBloc).

Most functions from the Windows API use the __stdcall convention, although you have to be careful to always use the "wide" version of each function. This means for example that to display a message box, you need to call "MessageBoxW". Calling a function with incorrect parameters will corrupt the Messenger memory space and eventually crash the program.

Messenger Plus! Live 4.10 and above: Messenger Plus! tries to detect bad calling conventions (when __stdcall was not used to declare the function that's being called) and logs the corresponding error in the Script Debugging window. Do NOT ignore these errors, they will cause instabilities and eventually crash Messenger in random places.

Example

This code displays a "Hello!" message box.

Interop.Call("User32.dll", "MessageBoxW", 0, "Hello!", "Example Message", 0);

Function Information

Object | Interop
Availability | Messenger Plus! Live 4.00

See Also

Interop Object, DataBloc Object, Call2.


Objects Reference - Interop

Interop::Call2

The Interop::Call2 function allows scripts to call functions located in custom made external libraries and return a string. It acts exactly like Call except that it expects a BSTR as return value.

Syntax

[string] Call2(
    [string] DllName,
    [string] FunctionName,
    [var, optional] Param1,
    [var, optional] Param2,
    [var, optional] Param3,
    [var, optional] Param4,
    [var, optional] Param5,
    [var, optional] Param6,
    [var, optional] Param7,
    [var, optional] Param8,
    [var, optional] Param9,
    [var, optional] Param10,
    [var, optional] Param11,
    [var, optional] Param12
);

Parameters

DllName
[string] Path to the DLL file where the function to call is located.
FunctionName
[string] Name of the function as specified in the export table of the library.
Param1
[var, optional] First parameter to send to the function, if any.
Param2
[var, optional] Second parameter to send to the function, if any.
Param3
[var, optional] Third parameter to send to the function, if any.
Param4
[var, optional] Fourth parameter to send to the function, if any.
Param5
[var, optional] Fifth parameter to send to the function, if any.
Param6
[var, optional] Sixth parameter to send to the function, if any.
Param7
[var, optional] Seventh parameter to send to the function, if any.
Param8
[var, optional] Eighth parameter to send to the function, if any.
Param9
[var, optional] Ninth parameter to send to the function, if any.
Param10
[var, optional] Tenth parameter to send to the function, if any. Accepted only in Messenger Plus! Live 4.21 and above.
Param11
[var, optional] Eleventh parameter to send to the function, if any. Accepted only in Messenger Plus! Live 4.21 and above.
Param12
[var, optional] Twelfth parameter to send to the function, if any. Accepted only in Messenger Plus! Live 4.21 and above.

Return Value

A BSTR string. This kind of string is constructed in a particular way and must be created with a function such as SysAllocString.

In addition to the reasons listed in Call, this function may fail for the following reason:

  • The returned value is not a pointer to a BSTR string.

Remarks

Because of its special nature, this function is generally only useful for custom made DLL files distributed with the script. It allows developers to easily design functions that return a string to the script. For more information, check the documentation of Call.

Function Information

Object | Interop
Availability | Messenger Plus! Live 4.00

See Also

Interop Object, Call.


Objects Reference - Interop

Interop::FreeDll

The Interop::FreeDll function unloads a DLL previously loaded by a call to Call or Call2.

Syntax

FreeDll(
    [string] DllName,
);

Parameters

DllName
[string] Path to the DLL file to unload. This must be the exact same string that was sent in Call.

Return Value

No value is returned by this function.

No error is returned and the function does nothing if the DLL was not currently loaded by the script.

Remarks

Scripts don't have to call this function if they don't have a particular reason for unloading the DLL. Also, note that the DLL will not be unloaded if it used by Windows Live Messenger, Messenger Plus! or another script. Calling FreeDll multiple times for the same DLL does not have any effect and won't lower down its reference count.

If a DLL is unloaded and Call is called again for the same library, it is automatically loaded back.

Function Information

Object | Interop
Availability | Messenger Plus! Live 4.00

See Also

Interop Object, Call.


Objects Reference - Interop

Interop::GetLastError

The Interop::GetLastError function returns the result of the GetLastError Windows API function as returned after the last call to Call or Call2.

Syntax

[number] GetLastError();

Parameters

None.

Return Value

A number representing the last error value recorded by the Windows API. Its meaning depends on the last function from the Windows API that was called. Remember that the value returned by this function only has a meaning for the last function called by either Call or Call2.

This function typically fails for the following reason:

  • The Interop object refers to a window that has been destroyed.

Remarks

Use this function instead of Interop.Call("Kernel32.dll", "GetLastError"). Because Messenger Plus! performs several actions when Call is called, the LastError value is modified before the actual call is made.

Example

The following code displays a readable error message based on the last error code registered in the Windows API. Remember that these codes are not set by every function in Windows, you should check out the MSDN documentation for more information about the errors returned by the functions you are using.

function TraceWin32Error()
{
    var LastError = Interop.GetLastError();
    if(LastError != 0)
    {
        var MsgBuffer = Interop.Allocate(1024);
        Interop.Call("Kernel32", "FormatMessageW", 0x1000, 0,
                LastError, 0, MsgBuffer, 1024, 0);
        Debug.Trace(MsgBuffer.ReadString(0));
        MsgBuffer.Size = 0; //Release the allocated memory now
    }
}

Function Information

Object | Interop
Availability | Messenger Plus! Live 4.00

See Also

Interop Object, Windows API GetLastError.


Objects Reference - Interop

Interop::Allocate

The Interop::Allocate function allocates a memory block of the given size for low level operations.

Syntax

[object] Allocate(
    [number] InitialSize
);

Parameters

InitialSize
[number] Initial size allocated for the memory block, in bytes. It must be in the range of 0 to 16MB.

Return Value

A DataBloc object that can be used to access the newly allocated memory.

If memory allocation fails, the return value is null.

Remarks

Use this function to allocate memory for specific constructs sometimes required by functions called in Call. This kind of operation is reserved to more advanced developers used to manipulate raw data in memory and can result in causing serious issues if used incorrectly.

Function Information

Object | Interop
Availability | Messenger Plus! Live 4.00

See Also

Interop Object, DataBloc Object, Call.


Objects Reference - Interop

Interop::GetCallbackPtr

The Interop::GetCallbackPtr function returns a pointer to a native function for callback use. This is useful when calling a function in an external library (like the Windows API) that requires a function address as parameter to send its result.

Syntax

[number] GetCallbackPtr(
    [string] FunctionName
);

Parameters

FunctionName
[string] Name of a function present in your script, used for the callback. Its number of parameters must match exactly the number of parameters needed by the callback or the call may crash Messenger. The callback function can not have more than 6 parameters. See remarks.

Return Value

The address of a function to use as parameter in Call. This value must be used immediately and not stored for later or repeated use.

This function typically fails for the following reasons:

  • The specified function does not exist in the script.
  • The specified function has more than 6 parameters.
  • The function was called from the global scope (GetCallbackPtr must be called from within a function in your script).

Remarks

Developers who use callback functions must be very careful about the functions they call and the parameters they accept. Here is a list of requirements for this function to succeed:

  • The callback function called by the callee must use the __stdcall calling convention, also referred as WINAPI or CALLBACK in some places.
  • The callback function must return something (it can't be "void") even if the value has no particular meaning.
  • The callback function, as declared in the script, must have exactly the same number of parameters as specified in the documentation of the callee.
  • All the parameters sent in the callback function are sent as numbers. This means that parameters like strings will be sent as addresses. Messenger Plus! does not try to interpret any parameter, it is your responsibility to do so.

The address returned by this function must be used immediately. This means that the only place allowed for the call is Interop.Call and Interop.Call2.

Remember that the use of callback functions is restricted to synchronous calls. This means that all the calls made to the callback function must be done before the callee returns. Asynchronous calls are not permitted and must not be attempted in any circumstances.

Example

This code traces the list of handles (numbers) of all the top-level windows currently displayed in the user's session.

function OnEvent_Initialize(MessengerStart)
{
      Debug.Trace("EnumWindows result:");
      Interop.Call("User32.dll", "EnumWindows", Interop.GetCallbackPtr("EnumCallback"), 0);
}

function EnumCallback(hWnd, lParam)
{
      Debug.Trace("   - window handle: " + hWnd);
      return true;
}

Function Information

Object | Interop
Availability | Messenger Plus! Live 4.60

See Also

Interop Object, Call.


DataBloc Object

Objects Reference

The DataBloc Object

The DataBloc object represents a memory block created by Interop.Allocate. It is used to create memory structure, convert data or send/receive parameters to/from external functions. It is to be used by advanced developers only. Every "read" function is paired with an equivalent "write". Every pair can be used in roundtrips, meaning that writing a value and reading it back always recreates the exact same original value.

When a DataBloc object is not used anymore, it is considered good practice to set its Size property to 0. This will free the memory allocated by the object immediately (to bypass the garbage collector of JScript that may take some time before deleting the actual object).

Functions:

Name | Description
SetAt | Writes a single byte in the memory block.
GetAt | Reads a single byte from the memory block.
WriteString | Writes a string in the memory block.
WriteBSTR | Writes a BSTR string in the memory block.
WriteWORD | Writes a double-byte number in the memory block.
WriteDWORD | Writes a 32bits integer in the memory block.
WriteInterfacePtr | Writes an IDispatch pointer in the memory block.
ReadString | Reads a string from the memory block.
ReadBSTR | Reads a BSTR string from the memory block.
ReadWORD | Reads a double-byte number from the memory block.
ReadDWORD | Reads a 32 bits integer from the memory block.
ReadInterfacePtr | Reads an IDispatch pointer from the memory block.

Properties:

Name | Description
Size | Size in bytes of the memory block attached to the object.
DataPtr | Pointer to the actual data managed by this object.


Objects Reference - DataBloc

DataBloc::GetAt

The DataBloc::GetAt function reads a single byte (8bits) from the memory block.

Syntax

[number] GetAt(
    [number] Offset
);

Parameters

Offset
[number] Index in the memory block where the value will be read. It must be between 0 and Size-1.

Return Value

A number representing the value of the byte read in the memory block.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

Messenger Plus! Live 4.10 and above: the return value is unsigned (ranges between 0 and 255).

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, SetAt.


Objects Reference - DataBloc

DataBloc::SetAt

The DataBloc::SetAt function writes a single byte (8bits) in the memory block.

Syntax

SetAt(
    [number] Offset,
    [number] Byte
);

Parameters

Offset
[number] Index in the memory block where the value will be written. It must be between 0 and Size-1.
Byte
[number] 8bits number to write.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

Messenger Plus! Live 4.10 and above: Byte must be unsigned (range between 0 and 255).

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, GetAt.


Objects Reference - DataBloc

DataBloc::ReadString

The DataBloc::ReadString function reads a string (in ANSI or Unicode) from the memory block.

Syntax

[string] ReadString(
    [number] Offset,
    [boolean,optional] ReadUnicode,
    [number,optional] Size
);

Parameters

Offset
[number] Index in the memory block where the string will be read.
ReadUnicode
[boolean,optional] Specifies if the string to read is ANSI or Unicode. The default if not specified is true for Unicode.
Size
[number,optional] The size (in characters) of the string to read. If not specified, Messenger Plus! stops at the first null character.

Return Value

The string read from the memory block. If Size is not specified and no null character is found, the return is an empty string.

This function typically fails for one of the following reasons:

  • The Offset parameter is not in the range of possible valid values.
  • The Size parameter is not in the range of possible valid values.

Remarks

None.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, WriteString.


Objects Reference - DataBloc

DataBloc::WriteString

The DataBloc::WriteString function writes a string (in ANSI or Unicode) in the memory block.

Syntax

WriteString(
    [number] Offset,
    [string] String,
    [number,optional] WriteUnicode
);

Parameters

Offset
[number] Index in the memory block where the string will be written. It must be between 0 and Size - (String.length * 2) - 2 if WriteUnicode is true and between 0 and Size - String.length - 1 if WriteUnicode is false.
String
[string] Text to write to the memory block.
WriteUnicode
[boolean,optional] Specifies if the string to is to be written is ANSI or Unicode. The default if not specified is true for Unicode. If the string is written in ANSI, it is converted with the system's code page.

Return Value

There is no value returned by this function.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

Messenger Plus! writes the entire string stopping at the first null character encountered (or at the end of the string). The ending null character is always written in the memory block.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, ReadString.


Objects Reference - DataBloc

DataBloc::ReadBSTR

The DataBloc::ReadBSTR function reads a BSTR string from the memory block.

Syntax

[string] ReadBSTR(
    [number] Offset
);

Parameters

Offset
[number] Index in the memory block where the string will be read. It must point to the start of a valid BSTR string (must be the same index specified in WriteBSTR).

Return Value

The string read from the memory block. If the Offset specified does not appear to point to a valid BSTR string, the function fails and throws an error.

This function typically fails for the following reason:

  • The Offset parameter is not pointing to a BSTR string.

Remarks

None.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, WriteBSTR.


Objects Reference - DataBloc

DataBloc::WriteBSTR

The DataBloc::WriteBSTR function writes a BSTR string in the memory block.

Syntax

WriteBSTR(
    [number] Offset,
    [string] String,
);

Parameters

Offset
[number] Index in the memory block where the string will be written. It must be between 0 and Size - (String.length * 2) - 6.
String
[string] String to write in the memory block.

Return Value

There is no value returned by this function.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

The BSTR string is written like this: the first 4 bytes indicate the size of the string, in bytes. The following bytes constitute the string itself, in Unicode, ending with a null character. Thanks to that specific way of writing the string, null characters can be embedded in it.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, ReadBSTR.


Objects Reference - DataBloc

DataBloc::ReadWORD

The DataBloc::ReadWORD function reads a double-byte number (16bits) from the memory block.

Syntax

[number] ReadWORD(
    [number] Offset
);

Parameters

Offset
[number] Index in the memory block where the value will be read. It must be between 0 and Size-2.

Return Value

A number representing the value of the two bytes read in the memory block.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

None.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, WriteWORD.


Objects Reference - DataBloc

DataBloc::WriteWORD

The DataBloc::WriteWORD function writes a double-byte number (16bits) in the memory block.

Syntax

WriteWORD(
    [number] Offset,
    [number] Data
);

Parameters

Offset
[number] Index in the memory block where the value will be written. It must be between 0 and Size-2.
Data
[number] 16bits number to write.

Return Value

There is no value returned by this function.

This function typically fails for the following reason:

  • The DataBloc object refers to a window that has been destroyed.

Remarks

None.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, ReadWORD.


Objects Reference - DataBloc

DataBloc::ReadDWORD

The DataBloc::ReadDWORD function reads a 32 bits integer from the memory block.

Syntax

[number] ReadDWORD(
    [number] Offset
);

Parameters

Offset
[number] Index in the memory block where the value will be read. It must be between 0 and Size-4.

Return Value

A number representing the value of the four bytes read in the memory block.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

None.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, WriteDWORD.


Objects Reference - DataBloc

DataBloc::WriteDWORD

The DataBloc::WriteDWORD function writes a 32bits integer in the memory block.

Syntax

WriteDWORD(
    [number] Offset,
    [number] Data
);

Parameters

Offset
[number] Index in the memory block where the value will be written. It must be between 0 and Size-4.
Data
[number] 32bits number to write.

Return Value

There is no value returned by this function.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

None.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, ReadDWORD.


Objects Reference - DataBloc

DataBloc::ReadInterfacePtr

The DataBloc::ReadInterfacePtr function reads an IDispatch pointer (32bits) from the memory block and return the corresponding object.

Syntax

[object] ReadInterfacePtr(
    [number] Offset
);

Parameters

Offset
[number] Index in the memory block where the pointer will be read. It must point to a valid IDispatch pointer.

Return Value

An object based on the IDispatch pointer read from the memory block. Messenger Plus! doesn't check the validity of the pointer, if the data read is not valid, Messenger may crash.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

This function, although marked as being available since Messenger Plus! Live 4.00, was not properly functional before version 4.80.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, WriteInterfacePtr.


Objects Reference - DataBloc

DataBloc::WriteInterfacePtr

The DataBloc::WriteInterfacePtr function writes an IDispatch pointer (32bits) in the memory block.

Syntax

[object] WriteInterfacePtr(
    [number] Offset,
    [object] Object
);

Parameters

Offset
[number] Index in the memory block where the pointer will be written. It must be between 0 and Size-4.
Object
[number] The object which IDispatch interface pointer will be queried and written.

Return Value

No value is returned by this function.

This function typically fails for the following reason:

  • The Offset parameter is not in the range of possible valid values.

Remarks

This function only writes a pointer to an existing object to be used by an external library. It does not store the actual content of any object and does not increase their reference count either.

Function Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object, ReadInterfacePtr.


Objects Reference - DataBloc

DataBloc::Size

The DataBloc::Size property represents the size of the memory block attached to the object. This property can be used to reallocate a new memory block with a different size.

Syntax

This is a read/write property.
[number] Size;

Data Type

A number specifying the size of the memory allocated for this DataBloc object, in bytes.

This property typically fails for the following reason:

  • The DataBloc object refers to a window that has been destroyed.

Remarks

When the property is been set, the following happens:

  • A new memory block is allocated and filled with zeros.
  • All the data from the old memory block is copied to the new one (up to the maximum permitted by the new size).
  • The old memory block is deleted.

Property Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object.


Objects Reference - DataBloc

DataBloc::DataPtr

The DataBloc::DataPtr property returns a pointer to the actual data managed by this object.

Syntax

This is a read-only property.
[number] DataPtr;

Data Type

A number representing the address of the data in memory. This number is a pointer and must be used as is.

Remarks

None.

Property Information

Object | DataBloc
Availability | Messenger Plus! Live 4.00

See Also

DataBloc Object.


Messenger Plus! Live

Events Reference

Events are functions called automatically by Messenger Plus! in your script when something particular happens. They are organized in three categories:

  • Events generated by Windows Live Messenger.
  • Events generated by Messenger Plus!.
  • Events generated by interface windows.

To catch an event, simply add the appropriate function in your script with the exact same name and parameters list specified in this documentation. Messenger Plus! will call the function automatically when the event is generated.


Events Reference

Messenger Events

Here is the collection of events generated by Windows Live Messenger.

Events:

Name | Description
OnEvent_Signin | The current Messenger user signed-in.
OnEvent_SigninReady | The current Messenger user is properly signed in.
OnEvent_Signout | The current Messenger user signed-out.
OnEvent_MyStatusChange | The current user changed its Messenger status
OnEvent_MyNameChange | The current user changed its name.
OnEvent_MyPsmChange | The current user changed its personal message.
OnEvent_MyMediaChange | The current Messenger user changed its "current media".
OnEvent_ContactSignin | A contact signed-in in the current contact's list.
OnEvent_ContactSignout | A contact signed-out from the current contact's list.
OnEvent_ContactStatusChange | A contact changed his Messenger status.
OnEvent_ContactNameChange | A contact changed its name.
OnEvent_ContactPsmChange | A contact changed its personal message.
OnEvent_ContactMediaChange | A contact changed its "current media".
OnEvent_ContactBlocked | A contact has been blocked.
OnEvent_ContactUnblocked | A contact has been unblocked.
OnEvent_ContactListWndCreated | The contact list window is being created and shown.
OnEvent_ContactListWndDestroyed | The contact list window is being destroyed.
OnEvent_ChatWndCreated | A new chat window is being created.
OnEvent_ChatWndDestroyed | A chat window is being destroyed.
OnEvent_ChatWndContactAdded | A contact is added to the list of participants in a chat window.
OnEvent_ChatWndContactRemoved | A contact is removed from the list of participants in a chat window.
OnEvent_ChatWndReceiveMessage | A new message is received in a chat window.
OnEvent_ChatWndSendMessage | The current user sent a message in a chat window.
OnEvent_ChatWndEditKeydown | A key was pressed in the typing area of a chat window.


Events Reference - Messenger Events

OnEvent_Signin

The OnEvent_Signin event is fired as soon as the current Messenger user signs-in.

Syntax

OnEvent_Signin(
    [string] Email
);

Parameters

Email
[string] Email of the new current Messenger user.

Return Value

No value has to be returned by this event.

Remarks

The status used by the current user when signing in can be retrieved with Messenger::MyStatus.

This event is generated immediately after the current user signs in the Messenger service. At that time, information regarding the user's contact list is not accurate. If your script needs to browse the current user's contact list, create a handler for OnEvent_SigninReady.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_SigninReady, OnEvent_Signout.


Events Reference - Messenger Events

OnEvent_SigninReady

The OnEvent_SigninReady event is fired when the current Messenger user signs-in, after information about the contact's list has been received from the server.

Syntax

OnEvent_SigninReady(
    [string] Email
);

Parameters

Email
[string] Email of the current Messenger user.

Return Value

No value has to be returned by this event.

Remarks

This event is generated some time (generally within 10 seconds) after the current user signs in the Messenger service. Messenger Plus! waits until no more "ILN - initially online" message is received from the server. If your script needs to do something as soon as the current user signs in, create a handler for OnEvent_Signin.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_Signin.


Events Reference - Messenger Events

OnEvent_Signout

The OnEvent_Signout event is fired when the current Messenger user signs-out.

Syntax

OnEvent_Signout(
    [string] Email
);

Parameters

Email
[string] Email of the current Messenger user when it signed out.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_Signin.


Events Reference - Messenger Events

OnEvent_MyStatusChange

The OnEvent_MyStatusChange event is fired when the current user changes its Messenger status.

Syntax

OnEvent_MyStatusChange(
    [enum] NewStatus
);

Parameters

NewStatus

[enum] New status of the user, represented by a number taken from the following enumeration:

STATUS_INVISIBLE (2)
STATUS_ONLINE (3)
STATUS_BUSY (4)
STATUS_BRB (5)
STATUS_IDLE (6)
STATUS_AWAY (7)
STATUS_INCALL (8)
STATUS_OUTLUNCH (9)

Appear Offline
Online
Busy
Be Right Back
Idle
Away
In a Call
Out to Lunch

Return Value

No value has to be returned by this event.

Remarks

This event is fired before the change gets recorded by Messenger Plus!. This means that the previous status of the current user can be obtained in the event handler with Messenger::MyStatus.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events.


Events Reference - Messenger Events

OnEvent_MyNameChange

The OnEvent_MyNameChange event is fired when the current user changes its name.

Syntax

OnEvent_MyNameChange(
    [string] NewName
);

Parameters

NewName
[string] New user's name. The name can contain formatting codes.

Return Value

No value has to be returned by this event.

Remarks

This event is fired before the change gets recorded by Messenger Plus!. This means that the previous name of the current user can be obtained in the event handler with Messenger::MyName.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events.


Events Reference - Messenger Events

OnEvent_MyPsmChange

The OnEvent_MyPsmChange event is fired when the current user changes its personal message. The event is generated when the new personal message is sent to the server.

Syntax

OnEvent_MyPsmChange(
    [string] NewPsm
);

Parameters

NewPsm
[string] New user's personal message. The personal message can contain formatting codes.

Return Value

No value has to be returned by this event.

Remarks

This event is fired before the change gets recorded by Messenger Plus!. This means that the previous personal message of the current user can be obtained in the event handler with Messenger::MyPersonalMessage.

The Windows Live Messenger client delays personal message changes made by the current user. This means that a couple of seconds may pass before this event is generated once the personal message has been changed in the user interface.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events.


Events Reference - Messenger Events

OnEvent_MyMediaChange

The OnEvent_MyMediaChange event is fired when the current Messenger user changes or removes its "current media".

Syntax

OnEvent_MyMediaChange(
    [string] NewMedia
);

Parameters

NewMedia
[string] New "current media" text. For more information, see Messenger::MyCurrentMedia.

Return Value

No value has to be returned by this event.

Remarks

This event is fired before the change gets recorded by Messenger Plus!. This means that the previous media text can be obtained in the event handler with Messenger::MyCurrentMedia.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, Messenger::MyCurrentMedia.


Events Reference - Messenger Events

OnEvent_ContactSignin

The OnEvent_ContactSignin event is fired when a contact signs-in in the current contact's list.

Syntax

OnEvent_ContactSignin(
    [string] Email
);

Parameters

Email
[string] Sign-in email of the contact.

Return Value

No value has to be returned by this event.

Remarks

This event will also be generated if the contact unblocked the current user while being online. The status used by the contact when signing in can be retrieved with Contact::Status.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_ContactSignout.


Events Reference - Messenger Events

OnEvent_ContactSignout

The OnEvent_ContactSignout event is fired when a contact signs-out from the current contact's list.

Syntax

OnEvent_ContactSignout(
    [string] Email
);

Parameters

Email
[string] Sign-in email of the contact.

Return Value

No value has to be returned by this event.

Remarks

This event will also be generated if the contact blocked the current user while being online.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_ContactSignin.


Events Reference - Messenger Events

OnEvent_ContactStatusChange

The OnEvent_ContactStatusChange event is fired when a contact changes his Messenger status.

Syntax

OnEvent_ContactStatusChange(
    [string] Email,
    [enum] NewStatus
);

Parameters

Email
[string] Sign-in email of the contact changing its status.
NewStatus

[enum] New status of the contact, represented by a number taken from the following enumeration:

STATUS_ONLINE (3)
STATUS_BUSY (4)
STATUS_BRB (5)
STATUS_IDLE (6)
STATUS_AWAY (7)
STATUS_INCALL (8)
STATUS_OUTLUNCH (9)

Online
Busy
Be Right Back
Idle
Away
In a Call
Out to Lunch

Return Value

No value has to be returned by this event.

Remarks

This event is fired before the change gets recorded by Messenger Plus!. This means that the previous status of the contact can be obtained in the event handler with Contact::Status.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events.


Events Reference - Messenger Events

OnEvent_ContactNameChange

The OnEvent_ContactNameChange event is fired when a contact changes its name.

Syntax

OnEvent_ContactNameChange(
    [string] Email,
    [string] NewName
);

Parameters

Email
[string] Sign-in email of the contact changing its name.
NewName
[string] New contact's name. The name can contain formatting codes.

Return Value

No value has to be returned by this event.

Remarks

This event is fired before the change gets recorded by Messenger Plus!. This means that the previous name of the contact can be obtained in the event handler with Contact::Name.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events.


Events Reference - Messenger Events

OnEvent_ContactPsmChange

The OnEvent_ContactPsmChange event is fired when a contact changes its personal message.

Syntax

OnEvent_ContactPsmChange(
    [string] Email,
    [string] NewPsm
);

Parameters

Email
[string] Sign-in email of the contact changing its personal message.
NewPsm
[string] New contact's personal message. The personal message can contain formatting codes.

Return Value

No value has to be returned by this event.

Remarks

This event is fired before the change gets recorded by Messenger Plus!. This means that the previous personal message of the contact can be obtained in the event handler with Contact::PersonalMessage.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events.


Events Reference - Messenger Events

OnEvent_ContactMediaChange

The OnEvent_ContactMediaChange event is fired when a contact changes or removes its "current media".

Syntax

OnEvent_ContactMediaChange(
    [string] Email,
    [string] NewMedia
);

Parameters

Email
[string] Sign-in email of the contact changing its "current media".
NewMedia
[string] New "current media" text. For more information, see Contact::CurrentMedia.

Return Value

No value has to be returned by this event.

Remarks

This event is fired before the change gets recorded by Messenger Plus!. This means that the previous media text can be obtained in the event handler with Contact::CurrentMedia.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, Contact::CurrentMedia.


Events Reference - Messenger Events

OnEvent_ContactBlocked

The OnEvent_ContactBlocked event is fired after a contact has been blocked.

Syntax

OnEvent_ContactBlocked(
    [string] Email
);

Parameters

Email
[string] Sign-in email of the contact who's been blocked.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_ContactUnblocked.


Events Reference - Messenger Events

OnEvent_ContactUnblocked

The OnEvent_ContactUnblocked event is fired after a contact has been unblocked.

Syntax

OnEvent_ContactUnblocked(
    [string] Email
);

Parameters

Email
[string] Sign-in email of the contact who's been unblocked.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_ContactBlocked.


Events Reference - Messenger Events

OnEvent_ContactListWndCreated

The OnEvent_ContactListWndCreated event is fired when the contact list window is being created and shown.

Syntax

OnEvent_ContactListWndCreated(
);

Parameters

None.

Return Value

No value has to be returned by this event.

Remarks

When the contact list window is "minimized to the tray", it is actually destroyed by the client. When restored, the window is re-created and this event is fired.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_ContactListWndDestroyed, Messenger::ContactListWndHandle.


Events Reference - Messenger Events

OnEvent_ContactListWndDestroyed

The OnEvent_ContactListWndDestroyed event is fired when the contact list window is being destroyed.

Syntax

OnEvent_ContactListWndDestroyed(
);

Parameters

None.

Return Value

No value has to be returned by this event.

Remarks

When the contact list window is "minimized to the tray", it is actually destroyed by the client. When restored, the window is re-created and this event is fired.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, OnEvent_ContactListWndCreated, Messenger::ContactListWndHandle.


Events Reference - Messenger Events

OnEvent_ChatWndCreated

The OnEvent_ChatWndCreated event is fired when a new chat window is created.

Syntax

OnEvent_ChatWndCreated(
    [object] ChatWnd
);

Parameters

ChatWnd
[object] Reference to the ChatWnd object attached to the chat generating the event.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, ChatWnd Object, OnEvent_ChatWndDestroyed.


Events Reference - Messenger Events

OnEvent_ChatWndDestroyed

The OnEvent_ChatWndDestroyed event is fired when a chat window is destroyed.

Syntax

OnEvent_ChatWndDestroyed(
    [object] ChatWnd
);

Parameters

ChatWnd
[object] Reference to the ChatWnd object attached to the chat generating the event.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, ChatWnd Object, OnEvent_ChatWndCreated.


Events Reference - Messenger Events

OnEvent_ChatWndContactAdded

The OnEvent_ChatWndContactAdded event is fired when a contact is added to the list of participants in a chat window.

Syntax

OnEvent_ChatWndContactAdded(
    [object] ChatWnd,
    [string] Email
);

Parameters

ChatWnd
[object] Reference to the ChatWnd object attached to the chat generating the event.
Email
[string] Sign-in email of the contact who has been added to the list of participants.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, ChatWnd Object.


Events Reference - Messenger Events

OnEvent_ChatWndContactRemoved

The OnEvent_ChatWndContactRemoved event is fired when a contact is removed from the list of participants in a chat window.

Syntax

OnEvent_ChatWndContactRemoved(
    [object] ChatWnd,
    [string] Email
);

Parameters

ChatWnd
[object] Reference to the ChatWnd object attached to the chat generating the event.
Email
[string] Sign-in email of the contact who has been removed from the list of participants.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, ChatWnd Object.


Events Reference - Messenger Events

OnEvent_ChatWndReceiveMessage

The OnEvent_ChatWndReceiveMessage event is fired when a new message is received in a chat window. The event is generated for any message added to the history control which includes the messages sent by the current user. It can be used to modify the message before it is displayed to the user.

Syntax

[string] OnEvent_ChatWndReceiveMessage(
    [object] ChatWnd,
    [string] Origin,
    [string] Message,
    [enum] MessageKind
);

Parameters

ChatWnd
[object] Reference to the ChatWnd object attached to the chat generating the event.
Origin
[string] Name of the user that sent the message, as it appears in the chat window (before Messenger Plus! processes the text). You can generally use this parameter and compare it to the current user's name to know if the message came from a different computer. Also, remember that the name of the contacts as reported in Contact::Name can differ from the name displayed in the chat if a nickname was added by the current user. See Remarks.
Message
[string] Message that is being added in the chat window's history control. The value of this parameter depends on MessageKind.
MessageKind

[enum] Number specifying the kind of message received. It can be one of the following identifiers:

MSGKIND_UNKNOWN (0)
MSGKIND_SAYS (1)
MSGKIND_WINKS (2)
MSGKIND_VOICECLIPS (3)
MSGKIND_SEARCHING (4)
MSGKIND_FIND (5)
MSGKIND_SAYSOFFLINE (6)

Unknown
Text message typed by the user
A wink being sent
A voice clip being sent
A search made with the "Search" button
The result of a search made with "Search"
A text message sent while the current user was offline

Return Value

A string containing the message to be displayed in the chat window instead of Message. If you do not want to modify the message, simply return Message without changing it. The new string will be parsed for possible format codes. It is important to remember that the new message cannot be longer than the original one (use Message.length) and will be cut if necessary. Also, Messenger will not re-parse the message for emoticons codes.

Remarks

The value returned by this event handler is ignored if MessageKind specifies a wink or a voice clip.

Because Messenger Plus! analyses received messages only when they reach the chat window, it is not possible to determine exactly from which contact the message came from. However, several methods can be used to guess if the message was actually sent by the current user. For example, to determine whether or not the personalized status messages should be sent when a message is received, Messenger Plus! compares the time of the last ChatWndSendMessage event with the current time. If it is less than 1 second, the message is considered to come from the current user and the previously recorded time is reset. Even if this method of analysis can seem too simplistic, it works in almost every scenario as it is extremely rare to receive a message sent by a contact between the time the "Send" button was pressed and the time the message of the current user was added to the window (as Messenger does not wait to receive a reply from the server before adding the message to the history control).

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, ChatWnd Object.


Events Reference - Messenger Events

OnEvent_ChatWndSendMessage

The OnEvent_ChatWndSendMessage event is fired every time the current user sends a message in a chat window.

Syntax

[string] OnEvent_ChatWndSendMessage(
    [object] ChatWnd,
    [string] Message
);

Parameters

ChatWnd
[object] Reference to the ChatWnd object attached to the chat generating the event.
Message
[string] Message that's being sent to the chat's participants. Emoticons present in the message are converted back to their text code before the event is generated (when possible) and will be re-parsed before the message is actually sent to the server.

Return Value

A string containing the message to be sent instead of Message. If you do not want to modify the message, simply return Message without changing it. No size restriction applies to the new message except for the maximum size allowed by Messenger. If the event handler returns an empty string, the message is ignored and not sent to the server.

Remarks

This event is generated after Messenger Plus! checks the message for quick texts but before searching for commands or tags. The only exception is for the "/text" command, which, if specified, forces the message to be sent without any kind of modification, including those made by scripts.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, ChatWnd Object.


Events Reference - Messenger Events

OnEvent_ChatWndEditKeyDown

The OnEvent_ChatWndEditKeyDown event is fired every time a key is pressed in the typing area of a chat window. It can be used to filter out some keys and use them as shortcuts for a feature of the script.

Syntax

[boolean] OnEvent_ChatWndEditKeyDown(
    [object] ChatWnd,
    [number] KeyCode,
    [boolean] CtrlKeyDown,
    [boolean] ShiftKeyDown
);

Parameters

ChatWnd
[object] Reference to the ChatWnd object attached to the chat generating the event.
KeyCode
[number] Virtual key code of the key that was pressed (as sent in WM_KEYDOWN). The list of possible codes can be found in the Virtual-Key Codes page of the MSDN Library.
CtrlKeyDown
[boolean] True if the Control key was pressed when the event was fired.
ShiftKeyDown
[boolean] True if the Shift key was pressed when the event was fired.

Return Value

A boolean value specifying if the key should be ignored. If the function returns true, the key is not processed by Messenger and not inserted in the typing area. If the function returns false, Messenger Plus! and Messenger continue their own processing of the message.

Remarks

Because this event is fired for every single key pressed by the user, your event handler must return as fast as possible and not slow down the user.

Event Information

Event Source | Windows Live Messenger
Availability | Messenger Plus! Live 4.00

See Also

Messenger Events, ChatWnd Object, Virtual-Key Codes.


Events Reference

Messenger Plus! Events

Here is the collection of events generated by Messenger Plus!.

Events:

Name | Description
OnEvent_Initialize | The script is starting.
OnEvent_Uninitialize | The script is ending.
OnEvent_MessengerLocked | The Messenger Lock feature of Messenger Plus! has been enabled.
OnEvent_MessengerUnlocked | The Messenger Lock feature of Messenger Plus! has been disabled.
OnEvent_Timer | A timer created with MsgPlus::AddTimer reached its specified time.
OnGetScriptMenu | A Messenger Plus! menu is being displayed.
OnEvent_MenuClicked | An item of a script menu has been selected by the current user.
OnGetScriptCommands | Messenger Plus! needs to display a list of commands supported by the script.
EnterPersonalizedStatus | The current user changes its status to a Messenger Plus! personalized status.
LeavePersonalizedStatus | The current user's status is changed back to a normal, non personalized status.
OnEvent_DownloadFileComplete | A download operation initiated by MsgPlus::DownloadFile has completed.
OnEvent_UploadFileComplete | An upload operation initiated by MsgPlus::UploadFileFTP has completed.

Events Templates:

Name | Description
ScriptsCommandTemplate | Shows how to define an event handler for the "/script" command.
ToastCallbackTemplate | Shows how to define an event handler for a "click" event happening in a toast.


Events Reference - Messenger Plus! Events

OnEvent_Initialize

The OnEvent_Initialize event is fired when the script is starting.

Syntax

OnEvent_Initialize(
    [boolean] MessengerStart
);

Parameters

MessengerStart
[boolean] Specifies the reason for the event to occur. If this parameter is true, the event was generated during the startup of Messenger. If it is false, the event was generated after the script was imported, enabled, or restarted.

Return Value

No value has to be returned by this event.

Remarks

Scripts are loaded very early in the life of the Messenger process, before any Messenger window is created and before the user signs in the service. You can use the MessengerStart parameter to adapt the start-up routine of your script when Windows Live Messenger starts. Important: this parameter does not guarantee if a user is currently signed-in or not. Please use the Messenger::MyStatus property for that.

Scripts should keep their initialization to a strict minimum when MessengerStart is true. No window must be displayed at that time and no time consuming task must be launched. As the Messenger process can rapidly exit following this event in several circumstances, without displaying anything to the user, it is imperative that your script follows these guidelines. If a task must be started along with Messenger, it is recommended to create a timer to start it with a a couple of seconds of delay.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, OnEvent_Uninitialize, Messenger::MyStatus.


Events Reference - Messenger Plus! Events

OnEvent_Uninitialize

The OnEvent_Uninitialize event is fired when the script is ending.

Syntax

OnEvent_Uninitialize(
    [boolean] MessengerExit
);

Parameters

MessengerExit
[boolean] Specifies the reason for the event to occur. If this parameter is true, the event was generated during the termination of the Messenger process. If it is false, the event was generated while the script was stopped or removed.

Return Value

No value has to be returned by this event.

Remarks

You can use the MessengerExit parameter to adapt the close-up routine of your script when Windows Live Messenger is closed. For example, no user input should be requested from the user when Messenger is terminating.

This event is guaranteed to be sent when Messenger is closed properly. You can rely on this event to do some last minute clean-up or saving. Do not expect OnEvent_SignOut to always be sent as it is not. Whenever possible, avoid interacting with the user in this event and do not interact with any window.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, OnEvent_Initialize.


Events Reference - Messenger Plus! Events

OnEvent_MessengerLocked

The OnEvent_MessengerLocked event is fired when the Messenger Lock feature of Messenger Plus! is enabled.

Syntax

OnEvent_MessengerLocked(
);

Parameters

None.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, OnEvent_MessengerUnlocked.


Events Reference - Messenger Plus! Events

OnEvent_MessengerUnlocked

The OnEvent_MessengerUnlocked event is fired when the Messenger Lock feature of Messenger Plus! is disabled.

Syntax

OnEvent_MessengerUnlocked(
);

Parameters

None.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, OnEvent_MessengerLocked.


Events Reference - Messenger Plus! Events

OnEvent_Timer

The OnEvent_Timer event is fired when a timer created with MsgPlus::AddTimer reaches its specified time.

Syntax

OnEvent_Timer(
    [string] TimerId
);

Parameters

TimerId
[string] Identifier of the timer as specified in MsgPlus::AddTimer.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, MsgPlus::AddTimer.


Events Reference - Messenger Plus! Events

OnEvent_MenuClicked

The OnEvent_MenuClicked event is fired when an item of a script menu is selected by the current user.

Syntax

OnEvent_MenuClicked(
    [string] MenuItemId,
    [enum] Location,
    [object] OriginWnd
);

Parameters

MenuItemId
[string] Identifier of the menu item that was selected by the current user.
Location

[enum] A number specifying the location of the menu that triggered the event. You can use this parameter to display a different menu depending on what the current user is currently doing.

It can be one of the following values:

MENULOC_CONTACTLIST (1)
MENULOC_CHATWND (2)
MENULOC_MOBILEWND (3)

Contact List
Messenger Chat Window
Mobile Device Chat Window
OriginWnd
[object] If Location is 2 or 3, this parameter is the ChatWnd object attached to the chat window where the menu was displayed. Else, this parameter is undefined.

Return Value

No value has to be returned by this event.

Remarks

The script's menu can be defined statically in the ScriptInfo.xml file or returned by the OnGetScriptMenu event handler.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Messenger Plus! 4.50 and earlier: MENULOC_MOBILEWND is not supported.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, OnGetScriptMenu.


Events Reference - Messenger Plus! Events

OnEvent_EnterPersonalizedStatus

The OnEvent_EnterPersonalizedStatus event is fired when the current user changes its status to a Messenger Plus! personalized status. Personalized statuses are a combination of various Messenger properties changed simultaneously to create the appearance of a more complex status based on a name tag, a personal message and an automatic responder message.

Syntax

OnEvent_EnterPersonalizedStatus(
    [enum] NewStatus,
    [string] NameTag,
    [string] PersonalMessage,
    [string] AutoMessage
);

Parameters

NewStatus

[enum] New status of the contact, represented by a number taken from the following enumeration:

STATUS_ONLINE (3)
STATUS_BUSY (4)
STATUS_BRB (5)
STATUS_IDLE (6)
STATUS_AWAY (7)
STATUS_INCALL (8)
STATUS_OUTLUNCH (9)

Online
Busy
Be Right Back
Idle
Away
In a Call
Out to Lunch
NameTag
[string] A name tag is a string attached to the current name of the current user. It is enclosed in brackets and displayed differently in the contact list to simulate a status' name. If no name tag is associated with the personalized status, this parameter is an empty string.
PersonalMessage
[string] New personal message to be set for the current user. The old personal message is saved and restored when the personalized status is removed. If no personal message is associated with the personalized status, this parameter is an empty string.
AutoMessage
[string] Message that is sent automatically to contacts messaging the current user while in personalized status mode. If no automatic responder message is associated with the personalized status, this parameter is an empty string.

Return Value

No value has to be returned by this event.

Remarks

At least one of NameTag, PersonalMessage and AutoMessage is set when personalized status mode is entered.

Messenger events for status change, name change and personal message change are also generated if necessary.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.10

See Also

Messenger Plus! Events, OnEvent_LeavePersonalizedStatus.


Events Reference - Messenger Plus! Events

OnEvent_LeavePersonalizedStatus

The OnEvent_LeavePersonalizedStatus event is fired when the current user's status is changed back to a normal, non personalized status.

Syntax

OnEvent_LeavePersonalizedStatus(
);

Parameters

  • None.

    • Return Value

    No value has to be returned by this event.

    Remarks

    Messenger events for status change, name change and personal message change are generated if necessary.

    Event Information

    Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.10

    See Also

    Messenger Plus! Events, OnEvent_EnterPersonalizedStatus.


Events Reference - Messenger Plus! Events

OnEvent_DownloadFileComplete

The OnEvent_DownloadFileComplete event is fired when a download operation previously initiated by MsgPlus::DownloadFile completes.

Syntax

OnEvent_DownloadFileComplete(
    [string] Url,
    [string] OutFile,
    [boolean] Success
);

Parameters

Url
[string] Address of the file that was downloaded, as specified in MsgPlus::DownloadFile.
OutFile
[string] Full path to the file that was created to receive the downloaded data.
Success
[boolean] Specifies if the download succeeded or not. The file specified in OutFile exists and contains downloaded data only if this parameter is true.

Return Value

No value has to be returned by this event.

Remarks

In addition to standard access errors, the Success parameter will be false if Url pointed to an existing but empty file.

If the file downloaded had a temporary purpose (to check for updates for example), remember to delete it when you're done reading it.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.20

See Also

Messenger Plus! Events, MsgPlus::DownloadFile.


Events Reference - Messenger Plus! Events

OnEvent_UploadFileComplete

The OnEvent_UploadFileComplete event is fired when an upload operation previously initiated by MsgPlus::UploadFileFTP completes.

Syntax

OnEvent_UploadFileComplete(
    [string] Server,
    [string] Destination,
    [string] SourceFile,
    [boolean] Success
);

Parameters

Server
[string] Host name of the server where the file was uploaded, as specified in MsgPlus::UploadFileFTP.
Destination
[string] Name of the destination file, as specified in MsgPlus::UploadFileFTP.
SourceFile
[string] Full path to the source file, as specified in MsgPlus::UploadFileFTP.
Success
[boolean] Specifies if the upload succeeded or not.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.60

See Also

Messenger Plus! Events, MsgPlus::UploadFile.


Events Reference - Messenger Plus! Events

OnGetScriptMenu

The OnGetScriptMenu event is fired when some of the Messenger Plus! menus are displayed. It allows scripts to return their own menu to be added to Messenger Plus!'s one.

Syntax

[string] OnGetScriptMenu(
    [enum] Location
);

Parameters

Location

[enum] A number specifying the location of the menu that triggered the event. You can use this parameter to display a different menu depending on what the current user is currently doing.

It can be one of the following values:

MENULOC_CONTACTLIST (1)
MENULOC_CHATWND (2)
MENULOC_MOBILEWND (3)

Contact List
Messenger Chat Window
Mobile Device Chat Window

Return Value

An XML data string defining the script's menu. If no menu is required, return an empty string. For more information about the way to define the menu's data, see the ScriptInfo's schema documentation.

Remarks

The script's menu can be defined statically in the ScriptInfo.xml file or returned by this function is its content needs changes at runtime. If a menu is returned by this handler, it gets priority over the menu defined in ScriptInfo.xml.

If an item of the script's menu is selected by the current user, an OnEvent_MenuClicked is fired.

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Messenger Plus! 4.50 and earlier: MENULOC_MOBILEWND is not supported.

Example

Event handler generating a simple menu for the script:

function OnGetScriptMenu(Location)
{
    var ScriptMenu = "<ScriptMenu>";
    ScriptMenu    +=     "<MenuEntry Id=\"MnuFeat1\">Feature 1</MenuEntry>";
    ScriptMenu    +=     "<MenuEntry Id=\"MnuFeat2\">Feature 2</MenuEntry>";
    ScriptMenu    +=     "<Separator/>";
    ScriptMenu    +=     "<MenuEntry Id=\"MnuAbout\">About...</MenuEntry>";
    ScriptMenu    += "</ScriptMenu>";

    return ScriptMenu;
}

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, ScriptInfo's schema documentation, OnEvent_MenuClicked.


Events Reference - Messenger Plus! Events

OnGetScriptCommands

The OnGetScriptCommands event is fired when Messenger Plus! needs to display a list of commands supported by the script. Each command is defined with a name, an optional description and an optional set of parameters. This list is used for information only, commands have to be manually parsed by the script in OnEvent_ChatWndSendMessage.

Syntax

[string] OnGetScriptCommands(
);

Parameters

None.

Return Value

An XML data string defining the script's commands. If no commands are supported by the script, return an empty string. For more information about the way to define the command's data, see the ScriptInfo's schema documentation.

Remarks

The script's commands can be defined statically in the ScriptInfo.xml file or returned by this function is the list can change at runtime. If a list of commands is returned by this handler, it gets priority over the list defined in ScriptInfo.xml.

The list of commands is used in windows such as the command browser. Command names must be defined without the beginning "/" character.

Example

Event handler returning a simple list of commands for the script:

function OnGetScriptCommands()
{
    var ScriptCommands = "<ScriptCommands>";
    ScriptCommands    +=     "<Command>";
    ScriptCommands    +=         "<Name>beep</Name>";
    ScriptCommands    +=         "<Description>Play a beep sound</Description>";
    ScriptCommands    +=     "</Command>";
    ScriptCommands    +=     "<Command>";
    ScriptCommands    +=         "<Name>flash</Name>";
    ScriptCommands    +=         "<Description>Flashes the window</Description>";
    ScriptCommands    +=         "<Parameters>&lt;flash count&gt;</Parameters>";
    ScriptCommands    +=     "</Command>";
    ScriptCommands    += "</ScriptCommands>";

    return ScriptCommands;
}

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, ScriptInfo's schema documentation.


Events Reference - Messenger Plus! Events

ScriptCommandTemplate

ScriptCommandTemplate is a template showing how to define an event handler for the "/script" command. The handler can have any function name and many different handlers can be defined for this command.

Syntax

[string] ScriptCommandTemplate(
    [object] ChatWnd,
    [array] Parameters
);

Parameters

ChatWnd
[object] The ChatWnd object attached to the chat window that generated the event.
Parameters
[array] Array of parameters specified with the command. The parameters are parsed like in a command line: each parameter must be separated by a space character and parameters can be enclosed in "". See example.

Return Value

A string containing the message to send. If no message should be sent in the chat window in response to the command, return an empty string.

Remarks

The /script command of Messenger Plus! calls a function in a script. It is used like this:

/script [script\]function [param1] [param2] ... [paramx]

The user can specify the name of the script where the function is located. If no script name is specified, the function is searched and executed in every script that defines it.

Example

The user sends the following message in a chat window:

/script TestCommand "first text" text2

The script handles the event with the following function, displays the parameters in the debugging window and returns an empty string to prevent any message to be sent in the chat.

function TestCommand(Wnd, Params)
{
    Debug.Trace("TestCommand has been called");

    var array = VBArray(Params).toArray();
    for(i = 0; i < array.length; i++)
        Debug.Trace(" Parameter: " + array[i]);

    return "";
}

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, ChatWnd, JScript's VBArray Object.


Events Reference - Messenger Plus! Events

ToastCallbackTemplate

ToastCallbackTemplate is a template showing how to define an event handler for a "click" event happening in a toast created with MsgPlus::DisplayToast or MsgPlus::DisplayToastContact. The handler can have any function name and many different handlers can be defined for toasts.

Syntax

ToastCallbackTemplate(
    [var] Param
);

Parameters

Param
[var] Parameter specified in CallbackParam when the toast was created.

Return Value

No value has to be returned by this event.

Remarks

The handler is never called if the user does not click on the toast before it disappears.

Example

A toast is displayed with the following call:

MsgPlus.DisplayToast("", "Something happened!\nClick for more information.", "",
                     "OnSomethingHappenedClick", 42);

When the user clicks on the toast, the event is handled by the following handler.

function OnSomethingHappenedClick(Param)
{
    Debug.Trace("The toast was clicked. Parameter: " + Param);
}

Event Information

Event Source | Messenger Plus!
Availability | Messenger Plus! Live 4.00

See Also

Messenger Plus! Events, MsgPlus::DisplayToast, MsgPlus::DisplayToastContact.


Interface WindowsEvents

Events Reference

Interface Windows Events

Here is the collection of events generated by interface windows created by the script.

The event names for interface windows are created based on the window's Id that generated them. For example, a window with an Id of "MyWnd" will generate a "OnMyWndEvent_Destroyed" when it's destroyed. This naming convention helps scripts stay organized when manipulating different kinds of windows.

Events:

Name | Description
OnWindowidEvent_Cancel | The user clicked on the Cancel button.
OnWindowidEvent_Destroyed | A script window is being destroyed.
OnWindowidEvent_MessageNotification | A message is being sent to the window.
OnWindowidEvent_CtrlClicked | A "push" control was clicked.
OnWindowidEvent_ComboSelChanged | The current selection changed in a ComboBoxControl.
OnWindowidEvent_EditTextChanged | The text of an EditControl or a RichEditControl was changed by the user.
OnWindowidEvent_LstBoxSelChanged | The current selection changed in a ListBoxControl.
OnWindowidEvent_LstBoxDblClicked | An item in a ListBoxControl was double clicked.
OnWindowidEvent_LstViewClicked | A ListViewControl was clicked.
OnWindowidEvent_LstViewRClicked | A ListViewControl was right clicked.
OnWindowidEvent_LstViewDblClicked | A ListViewControl was double clicked.
OnWindowidEvent_LstViewSelStateChanged | An item in a ListViewControl was selected or unselected.


Events Reference - Script Windows Events

OnWindowidEvent_Cancel

The OnWindowidEvent_Cancel event is fired when the user chooses to close the window with a system button (like the cross button in the top right corner of the window) or a button which Id is "BtnCancel".

Syntax

[boolean] OnWindowidEvent_Cancel(
    [object] PlusWnd
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.

Return Value

A boolean value used by Messenger Plus! to ignore the request. If the function returns true, the cancel request is ignored, if it returns false (default the event is not handled), the window is destroyed.

Remarks

None.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.00

See Also

Script Windows Events, PlusWnd Object.


OnWindowidEventDestroyed

Events Reference - Script Windows Events

OnWindowidEvent_Destroyed

The OnWindowidEvent_Destroyed event is fired when a script window is destroyed.

Syntax

OnWindowidEvent_Destroyed(
    [object] PlusWnd,
    [number] ExitCode
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ExitCode
[number] A number specifying how the window was destroyed. If the user closed the window with a system command (top right corner of the window, taskbar menu, etc...), this value is EXITCODE_CANCEL (2). Else, it is the value specified in the same parameter when Close was called.

Return Value

No value has to be returned by this event.

Remarks

Messenger Plus! 4.23 and earlier: enumeration names are not available, numbers must be used instead.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.00

See Also

Script Windows Events, PlusWnd Object, Close.


Events Reference - Script Windows Events

OnWindowidEvent_MessageNotification

The OnWindowidEvent_MessageNotification event is fired when a message is sent to the window. Message notifications are only generated for messages specified during a call to RegisterMessageNotification. This event is generated before the message is actually sent to the window or processed by Messenger Plus!.

Syntax

[number] OnWindowidEvent_MessageNotification(
    [object] PlusWnd,
    [number] Message,
    [number] wParam,
    [number] lParam
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
Message
[number] Identifier of the message being received by the window. Check out the MSDN Library and the Platform SDK include files for more details.
wParam
[number] First parameter (wParam) sent with the message. This is generally a number, a pointer to a string or a pointer to some raw data.
lParam
[number] Second parameter (lParam) sent with the message. This is generally a number, a pointer to a string or a pointer to some raw data.

Return Value

Messenger Plus! has two ways to interpret the return value. If the value is -1, the message is processed by the window normally, as if the script notification never occurred. If the value is anything but -1, it is used as the return value for the message and the default processing for the message is skipped.

Remarks

In case of doubt, always return -1 to make sure the message is properly received and interpreted by the window. Preventing standard system messages (like WM_PAINT) to be processed by the window can have disastrous effects.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.10

See Also

Script Windows Events, PlusWnd Object, RegisterMessageNotification.


Events Reference - Script Windows Events

OnWindowidEvent_CtrlClicked

The OnWindowidEvent_CtrlClicked event is fired when a ButtonControl, a CheckBoxControl, a RadioControl, a MenuButtonControl or a LinkControl is clicked.

Syntax

OnWindowidEvent_CtrlClicked(
    [object] PlusWnd,
    [string] ControlId
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.

Return Value

No value has to be returned by this event.

Remarks

None.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.00

See Also

Script Windows Events, PlusWnd Object.


Events Reference - Script Windows Events

OnWindowidEvent_ComboSelChanged

The OnWindowidEvent_ComboSelChanged event is fired when the user changes the current selection in a ComboBoxControl.

Syntax

OnWindowidEvent_ComboSelChanged(
    [object] PlusWnd,
    [string] ControlId
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.

Return Value

No value has to be returned by this event.

Remarks

The index of the newly selected item can be retrieved with PlusWnd::Combo_GetCurSel. This event is not fired when the selection is changed with PlusWnd::Combo_SetCurSel.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.00

See Also

Script Windows Events, PlusWnd Object, PlusWnd::Combo_GetCurSel.


Events Reference - Script Windows Events

OnWindowidEvent_EditTextChanged

The OnWindowidEvent_EditTextChanged event is fired when the text of an EditControl or a RichEditControl is changed by the user.

Syntax

OnWindowidEvent_EditTextChanged(
    [object] PlusWnd,
    [string] ControlId
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.

Return Value

No value has to be returned by this event.

Remarks

The new text of the control can be retrieved with PlusWnd::GetControlText.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.00

See Also

Script Windows Events, PlusWnd Object, PlusWnd::GetControlText.


Events Reference - Script Windows Events

OnWindowidEvent_LstBoxSelChanged

The OnWindowidEvent_LstBoxSelChanged event is fired when the user changes the current selection in a ListBoxControl.

Syntax

OnWindowidEvent_LstBoxSelChanged(
    [object] PlusWnd,
    [string] ControlId
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.

Return Value

No value has to be returned by this event.

Remarks

The index of the newly selected item can be retrieved with PlusWnd::LstBox_GetCurSel and can be -1 if the selection was cleared. This event is not fired when the selection is changed with PlusWnd::LstBox_SetCurSel.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.01

See Also

Script Windows Events, PlusWnd Object, PlusWnd::LstBox_GetCurSel.


Events Reference - Script Windows Events

OnWindowidEvent_LstBoxDblClicked

The OnWindowidEvent_LstBoxDblClicked event is fired when an item in a ListBoxControl is double clicked.

Syntax

OnWindowidEvent_LstBoxDblClicked(
    [object] PlusWnd,
    [string] ControlId
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.

Return Value

No value has to be returned by this event.

Remarks

The index of the newly selected item can be retrieved with PlusWnd::LstBox_GetCurSel.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.01

See Also

Script Windows Events, PlusWnd Object, PlusWnd::LstBox_GetCurSel.


Events Reference - Script Windows Events

OnWindowidEvent_LstViewClicked

The OnWindowidEvent_LstViewClicked event is fired when a ListViewControl is clicked.

Syntax

OnWindowidEvent_LstViewClicked(
    [object] PlusWnd,
    [string] ControlId,
    [number] ItemIdx
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.
ItemIdx
[number] Index of the item that was clicked.

Return Value

No value has to be returned by this event.

Remarks

Messenger Plus! Live 4.20 and above: if the click does not occur on an item, the event is still fired and ItemIdx equals -1.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.00

See Also

Script Windows Events, PlusWnd Object.


Events Reference - Script Windows Events

OnWindowidEvent_LstViewRClicked

The OnWindowidEvent_LstViewRClicked event is fired when a ListViewControl is clicked with the right button of the mouse.

Syntax

OnWindowidEvent_LstViewRClicked(
    [object] PlusWnd,
    [string] ControlId,
    [number] ItemIdx
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.
ItemIdx
[number] Index of the item that was clicked.

Return Value

No value has to be returned by this event.

Remarks

Messenger Plus! Live 4.20 and above: if the click does not occur on an item, the event is still fired and ItemIdx equals -1.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.00

See Also

Script Windows Events, PlusWnd Object.


Events Reference - Script Windows Events

OnWindowidEvent_LstViewDblClicked

The OnWindowidEvent_LstViewDblClicked event is fired when a ListViewControl is double clicked.

Syntax

OnWindowidEvent_LstViewDblClicked(
    [object] PlusWnd,
    [string] ControlId,
    [number] ItemIdx
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.
ItemIdx
[number] Index of the item that was double clicked.

Return Value

No value has to be returned by this event.

Remarks

Messenger Plus! Live 4.20 and above: if the click does not occur on an item, the event is still fired and ItemIdx equals -1.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.00

See Also

Script Windows Events, PlusWnd Object.


Events Reference - Script Windows Events

OnWindowidEvent_LstViewSelStateChanged

The OnWindowidEvent_LstViewSelStateChanged event is fired when an item of a ListViewControl is selected or unselected.

Syntax

OnWindowidEvent_LstViewSelStateChanged(
    [object] PlusWnd,
    [string] ControlId,
    [number] ItemIdx,
    [boolean] SelectedState
);

Parameters

PlusWnd
[object] The PlusWnd object attached to the window that generated the event.
ControlId
[string] Unique identifier of the control that generated the event.
ItemIdx
[number] Index of the item that was clicked.
SelectedState
[boolean] Specifies the new selected state of the item.

Return Value

No value has to be returned by this event.

Remarks

When selection changes from one item to another, two events are generated: the first one is for the item that lost its selection state, the second one is for the newly selected item.

Event Information

Event Source | Interface Windows
Availability | Messenger Plus! Live 4.20

See Also

Script Windows Events, PlusWnd Object.


Messenger Plus! Live

XML Schemas Reference

XML Schema files are used to validate XML files. They can also be used as technical documentation to know more about the elements and attributes that are read by Messenger Plus! in each XML file.

Information

Read about the ScriptInfo file

Read about the Interface Windows

Schema Files

Get the Schema file for ScriptInfo

Get the Schema file for Interface Window


XML Schemas Reference

ScriptInfo File

ScriptInfo.xml is a file placed in the script's directory (along with ".js" files). It is read when the script is loaded or imported and contains several information related to the script such as its name, its description, the menus it displays in Messenger, etc... the file does not need to be created for scripts to run locally, however, its presence is mandatory if the script has to be exported into a Script Pack.

The Schema file for ScriptInfo can be temporarily placed in your script's directory to validate your XML. However, the schema file must not be redistributed with your script (it would only be dead weight anyway). Here is how to write the first element of your XML file to make your XML editor aware of the schema file:

<ScriptInfo xmlns="urn:msgplus:scripts"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:scripts PlusScripts.xsd">

    <Information>...</Information>

</ScriptInfo>

It is good practice to always link your xml files to their respective schemas to prevent any possible run time error caused by an error in your XML. XML files tend to grow rapidly and you'll soon be thankful for the validation layer brought by the schema file.

If your XML Editor does not come with graphical browsing of the schema file, you can view a documentation generated by XMLSpy in the ScriptInfo Schema Documentation (some information may be missing in this documentation). Some elements of the file are also explained in details in Packaging your Script.

See Also

ScriptInfo Schema File, Schema Documentation, ScriptInfo Examples.


XML Schemas Reference

ScriptInfo File Examples

You can copy paste any of the following examples to a new xml file (a text file with an ".xml" extension). Remember to copy the schema file in the same directory to get your file validated.

Example 1

Simple ScriptInfo file used to create a Script Pack:

<ScriptInfo xmlns="urn:msgplus:scripts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:scripts PlusScripts.xsd">

    <Information>
        <Name>Test Script</Name>
        <Description>This script is an example from the documentation.</Description>
        <AboutUrl>http://www.msgpluslive.net</AboutUrl>
        <Version>1.00</Version>
    </Information>

</ScriptInfo>

Example 2

ScriptInfo file used to create a Script Pack. During import, the "ExtraFuncVB6.dll" ActiveX will be registered with regsvr32. The "ExtraFuncCSharp.dll" .NET Object will be registered for COM Interop with regasm.

<ScriptInfo xmlns="urn:msgplus:scripts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:scripts PlusScripts.xsd">

    <Information>
        <Name>Test Script</Name>
        <Description>This script is an example from the documentation.</Description>
    </Information>

    <OleFiles>
        <FileName>ExtraFuncVB6.dll</FileName>
    </OleFiles>

    <DotNetFiles>
        <FileName>ExtraFuncCSharp.dll</FileName>
    </DotNetFiles>

</ScriptInfo>

Example 3

This ScriptInfo file defines a menu that will be displayed when the user clicks on the Plus!/Scripts icon in the contact list or in a chat window.

<ScriptInfo xmlns="urn:msgplus:scripts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:scripts PlusScripts.xsd">

    <Information>
        <Name>Test Script</Name>
    </Information>

    <ScriptMenu>
        <MenuEntry Id="MnuFeat1">Feature 1</MenuEntry>
        <MenuEntry Id="MnuFeat2">Feature 2</MenuEntry>

        <SubMenu 	Label="Advanced">
            <MenuEntry Id="MnuAdvFeat1">Advanced Feature 1</MenuEntry>
            <MenuEntry Id="MnuAdvFeat2">Advanced Feature 2</MenuEntry>
        </SubMenu>

        <Separator/>
        <MenuEntry Id="MnuAbout">About...</MenuEntry>
    </ScriptMenu>

</ScriptInfo>

Example 4

This ScriptInfo file defines a list commands displayed in the Command Browser window (when the user types "/" in a chat window).

<ScriptInfo xmlns="urn:msgplus:scripts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:scripts PlusScripts.xsd">

    <Information>
        <Name>Test Script</Name>
    </Information>

    <ScriptCommands>
        <Command>
            <Name>beep</Name>
            <Description>Play 	a beep sound</Description>
        </Command>

        <Command>
            <Name>flash</Name>
            <Description>Flashes the window</Description>
            <Parameters>&lt;flash count&gt;</Parameters>
        </Command>
    </ScriptCommands>

</ScriptInfo>

See Also

ScriptInfo File Information, Schema Documentation.


ScriptInfo - Schema Documentation

 ScriptInfo Schema Documentation

Elements | Complex types
ScriptInfo | ScriptCommands
 | ScriptMenu

element ScriptInfo
diagram
properties
content complex
children Information InstallDir OleFiles DotNetFiles ScriptMenu ScriptCommands
attributes
Name Type Use Default Fixed annotation
Version xs:unsignedInt 1
documentation
Reserved for future use. Do not use this attribute to specify the version of your script.

attribute ScriptInfo/@Version
type xs:unsignedInt
properties
fixed 1
annotation
documentation
Reserved for future use. Do not use this attribute to specify the version of your script.

element ScriptInfo/Information
diagram
properties
content complex
children Name Description AboutUrl Version

element ScriptInfo/Information/Name
type restriction of xs:string
properties
content simple
facets
maxLength 127

element ScriptInfo/Information/Description
type xs:string
properties
minOcc | 0
maxOcc | 1
content | simple

element ScriptInfo/Information/AboutUrl
properties
minOcc | 0
maxOcc | 1
annotation
documentation
Use this element to set an http link to the web site related to this script.

element ScriptInfo/Information/Version
type xs:string
properties
minOcc | 0
maxOcc | 1
content | simple

element ScriptInfo/InstallDir
properties
minOcc | 0
maxOcc | 1
annotation
documentation
Use this element to override the default installation directory (which is based on "Name")

element ScriptInfo/OleFiles
diagram
properties
minOcc | 0
maxOcc | 1
content | complex
children FileName
annotation
documentation
The file names listed here will be registered as COM objects when the script is imported.

element ScriptInfo/OleFiles/FileName
properties
minOcc | 0
maxOcc | unbounded

element ScriptInfo/DotNetFiles
diagram
properties
minOcc | 0
maxOcc | 1
content | complex
children FileName
annotation
documentation
The file names listed here will be registered with the regasm .NET utility.

element ScriptInfo/DotNetFiles/FileName
properties
minOcc | 0
maxOcc | unbounded

element ScriptInfo/ScriptMenu
diagram
type | ScriptMenu
properties
minOcc | 0
maxOcc | 1
content | complex
children | MenuEntry SubMenu Separator
annotation
documentation
If this element is not defined in ScriptInfo.xml, it can be sent in OnGetScriptMenu().

element ScriptInfo/ScriptCommands
diagram
type | ScriptCommands
properties
minOcc | 0
maxOcc | 1
content | complex
children | Command
annotation
documentation
If this element is not defined in ScriptInfo.xml, it can be sent in OnGetScriptCommands().

complexType ScriptCommands
diagram
children Command
used by
element ScriptInfo/ScriptCommands

element ScriptCommands/Command
diagram
properties
minOcc | 1
maxOcc | unbounded
content | complex
children Name Description Parameters

element ScriptCommands/Command/Name
type xs:string
properties
content simple
annotation
documentation
Name of the command, without "/". No space allowed.

element ScriptCommands/Command/Description
type xs:string
properties
minOcc | 0
maxOcc | 1
content | simple
annotation
documentation
This is displayed in the tooltip of the command helper window.

element ScriptCommands/Command/Parameters
type xs:string
properties
minOcc | 0
maxOcc | 1
content | simple
annotation
documentation
This is added next to the command if the user selects the command in the command helper window.

complexType ScriptMenu
diagram
children MenuEntry SubMenu Separator
used by
elements ScriptInfo/ScriptMenu ScriptMenu/SubMenu

element ScriptMenu/MenuEntry
diagram
type extension of xs:string
properties
content complex
attributes
Name | Type | Use | Default | Fixed | annotation
Id | derived by: xs:string | required |  |  |
Enabled | xs:boolean |  | true |  |

attribute ScriptMenu/MenuEntry/@Id
type restriction of xs:string
properties
use required
facets
minLength 1

attribute ScriptMenu/MenuEntry/@Enabled
type xs:boolean
properties
default true

element ScriptMenu/SubMenu
diagram
type | extension of ScriptMenu
properties
content complex
children | MenuEntry SubMenu Separator
attributes
Name | Type | Use | Default | Fixed | annotation
Label | xs:string | required |  |  |
Enabled | xs:boolean |  | true |  |

attribute ScriptMenu/SubMenu/@Label
type xs:string
properties
use required

attribute ScriptMenu/SubMenu/@Enabled
type xs:boolean
properties
default true

element ScriptMenu/Separator
diagram


XML Schemas Reference

Interface Windows Reference

Interface files are used to display windows in your script, they act like resource files adapted for Messenger. They are not particularly complicated to understand, however, they contain a lot of different kinds of objects and attributes and some of them will not even be of any use to your scripts. The end result will be worth the trouble though as you won't need to create external DLLs to display your windows and you'll benefit from the current look of Windows Live Messenger as well as possible future updates. Your script will be guaranteed to appear just like any other Messenger Plus! window.

The Schema file for Interface Windows can be temporarily placed in your script's directory to validate your XML files. However, the schema must not be redistributed with your script (it would only be dead weight anyway). Here is how to write the first element of your XML file to make your XML editor aware of the schema file:

<Interfaces xmlns="urn:msgplus:interface"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:interface PlusInterface.xsd">

    <Window>...</Window>

</Interfaces>

It is good practice to always link your xml files to their respective schemas to prevent any possible run time error caused by an error in your XML. XML files tend to grow rapidly and you'll soon be thankful for the validation layer brought by the schema file.

The best examples you can get for interface window files are probably the windows of Messenger Plus! itself. Those files can easily be extracted with a resource viewer tool such as Resource Tuner. Just open the "MsgPlusLiveRes.dll" file you'll find in the main directory of Messenger Plus! (by default: "C:\Program Files\Messenger Plus! Live") and get the files from the "Interfaces" section. It is important to remember that the interface files were created for both Messenger Plus! and the scripting system. This means that some attributes or elements may prove to be useless for your scripts. Additional support for missing pieces are added on a per-request basis.

If your XML Editor does not come with graphical browsing of the schema file, you can view a documentation generated by XMLSpy in the Interface Windows Schema Documentation (some information may be missing in this documentation). Some elements of the file are also explained in details in Windows for your Script.

See Also

Interface Window Schema File, Schema Documentation, Examples.


XML Schemas Reference

Interface Windows Examples

You can copy paste any of the following examples to a new xml file (a text file with an ".xml" extension). Remember to copy the schema file in the same directory to get your file validated.

Example 1

Sound Transfer window from Messenger Plus! Live 4.00.

<Interfaces xmlns="urn:msgplus:interface" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:interface PlusInterface.xsd">

<Window Id="SoundTransfer400" Version="1">
    <Attributes>
        <ShowInTaskbar>false</ShowInTaskbar>
    </Attributes>

    <TitleBar>
        <AllowMinimize>false</AllowMinimize>
        <AllowClose>false</AllowClose>
    </TitleBar>

    <Position Width="200" Height="60"/>

    <DialogTmpl>
        <BottomBar Style="None">
            <LeftControls>
                <Control xsi:type="ProgressControl" Id="PrgWait">
                     <Position Top="5" Width="100" Left="0" Height="10"/>
                    <Marquee/>
                </Control>
            </LeftControls>

            <RightControls>
                <Control 	xsi:type="ButtonControl" Id="BtnCancel">
                    <Position Top="0" Width="50" Left="0"/>
                    <Caption>&amp;Cancel</Caption>
                </Control>
            </RightControls>
        </BottomBar>
    </DialogTmpl>

    <Elements>
        <Element 	xsi:type="ImageElement" Id="ImgSound">
            <Position Top="5" Left="6"/>
            <Image><Name>icon-speaker</Name></Image>
        </Element>
    </Elements>

    <Controls>
        <Control xsi:type="StaticControl" Id="LblMessage">
            <Position Top="5" Width="150" Left="32" Height="20"/>
            <Attributes>
                <WrapText>true</WrapText>
            </Attributes>
            <Caption>Please wait...\nThe sound is being sent.</Caption>
        </Control>
    </Controls>
</Window>

</Interfaces>

Example 2

Event Viewer window from Messenger Plus! Live 4.00 (some redundant elements have been removed).

<Interfaces xmlns="urn:msgplus:interface" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:interface PlusInterface.xsd">

<Window Id="EventViewer400" Version="1">
    <Attributes>
        <Caption>Event Viewer - Messenger Plus!</Caption>
        <ShowInTaskbar>false</ShowInTaskbar>
    </Attributes>

    <TitleBar>
        <AllowMinimize>false</AllowMinimize>
        <AllowMaximize>true</AllowMaximize>
        <Title>
            <Text>Event Viewer</Text>
        </Title>
    </TitleBar>

    <Position Width="341" Height="156" InitialPos="Normal">
        <Resizeable Allowed="BothSides">
            <MinWidth>270</MinWidth>
            <MinHeight>100</MinHeight>
        </Resizeable>
    </Position>

    <DialogTmpl/>

    <Elements>
        <Element xsi:type="ImageElement" Id="ImgTitle">
            <Position Top="4" Left="222"/>
            <Image><Name>preferences-eventlog</Name></Image>
        </Element>
    </Elements>

    <Controls>
        <Control xsi:type="StaticControl" Id="LblSearch">
            <Position Top="7" Width="28" Left="7"/>
            <Attributes>
                <AutoAdjustWidth>true</AutoAdjustWidth>
            </Attributes>
            <Caption>Search:</Caption>
        </Control>

        <Control xsi:type="EditControl" Id="EdtSearch">
            <Position Top="5" Width="121" Left="38"/>
            <Attributes>
                <WantReturn>true</WantReturn>
            </Attributes>
        </Control>

        <Control xsi:type="MenuButtonControl" Id="BtnOptions">
            <Position Top="4" Width="55" Left="164"/>
            <Attributes>
                <AlwaysDisplayBorder>true</AlwaysDisplayBorder>
            </Attributes>
            <Menu Id="MnuOptions" VPos="Bottom" HPos="CenterLeft">
                <MenuEntry Id="MnuAlwaysOnTop">Always On Top</MenuEntry>
                <Separator/>
                <MenuEntry Id="MnuShowBasic">Show General Info</MenuEntry>
                <MenuEntry Id="MnuShowPsm">Show Perso Messages</MenuEntry>
                <MenuEntry Id="MnuShowMusic">Show Media</MenuEntry>
                <Separator/>
                <MenuEntry Id="MnuClear">Clear List</MenuEntry>
                <MenuEntry Id="MnuPreferences">Open Prefs...</MenuEntry>
            </Menu>
            <Caption>&amp;Options</Caption>
        </Control>

        <Control xsi:type="ListViewControl" Id="LstEvents">
            <Position Top="22" Width="317" Left="7" Height="100">
                <Anchor Horizontal="LeftRightFixed" Vertical="TopBottomFixed"/>
            </Position>
            <Attributes>
                <AutoTip>false</AutoTip>
                <AlwaysShowSelection>false</AlwaysShowSelection>
            </Attributes>

            <ReportView>
                <SortColHeader>true</SortColHeader>
            </ReportView>
            <Images>
                <SmallIcons>
                    <Image Id="ImgOnline">
                        <Name>buddy-online</Name>
                    </Image>
                    <Image Id="ImgOffline">
                        <Name>buddy-offline</Name>
                    </Image>
                    <Image Id="ImgEmail">
                        <Name>emailicon-17</Name>
                    </Image>
                </SmallIcons>

            </Images>

            <Columns>
                <Column>
                    <ColumnId>ColTime</ColumnId>
                    <Label>Time</Label>
                    <Width>20</Width>
                </Column>
                <Column>
                    <ColumnId>ColContact</ColumnId>
                    <Label>Origin</Label>
                    <Width>35</Width>
                </Column>
                <Column>
                    <ColumnId>ColEvent</ColumnId>
                    <Label>Event Description</Label>
                    <Width>45</Width>
                </Column>
            </Columns>
        </Control>
    </Controls>
</Window>

</Interfaces>

Example 3

Personalised Status window from Messenger Plus! Live 4.00.

<Interfaces xmlns="urn:msgplus:interface" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:msgplus:interface PlusInterface.xsd">

<GlobalColors>
    <GlobalColor Id="green">
        <Red>80</Red>
        <Green>200</Green>
        <Blue>65</Blue>
        <Alpha>220</Alpha>
    </GlobalColor>

    <GlobalColor Id="bg">
        <BaseColor>
            <Saturation>2</Saturation>
            <Brightness>0.6</Brightness>
            <Transparency>82</Transparency>
        </BaseColor>
    </GlobalColor>
</GlobalColors>

<Window Id="PersoStatus400" Version="1">
    <Attributes>
        <Caption>Personalized Status - Messenger Plus!</Caption>
    </Attributes>

    <TitleBar>
        <Title>
            <Prefix>Image</Prefix>
            <Text>Personalized Status</Text>
        </Title>
    </TitleBar>

    <Position Width="286" Height="246"/>

    <DialogTmpl>
        <BottomBar Style="Plain">
            <LeftControls>
                <Control xsi:type="MenuButtonControl" Id="BtnPresets">
                    <Position Top="0" Width="66" Left="0"/>
                    <Attributes>
                    <AlwaysDisplayBorder>true</AlwaysDisplayBorder>
                    </Attributes>
                    <Image Margin="4">
                        <Name>icon-floppy</Name>
                    </Image>
                    <Caption>Pr&amp;esets</Caption>
                </Control>
            </LeftControls>

            <RightControls>
                <Control xsi:type="ButtonControl" Id="BtnOk">
                    <Position Top="0" Width="60" Left="0"/>
                    <Attributes>
                        <IsDefault>true</IsDefault>
                    </Attributes>
                    <Caption>&amp;Personalize</Caption>
                </Control>

                <Control xsi:type="ButtonControl" Id="BtnCancel">
                    <Position Top="0" Width="60" Left="0"/>
                    <Caption>&amp;Close</Caption>
                </Control>
            </RightControls>
        </BottomBar>
    </DialogTmpl>

    <Elements>
        <Element xsi:type="FigureElement" Id="FigRectOptions">
            <Position Top="139" Left="5" Height="43" Width="263"/>
            <Figure>
                <RoundRect><Radius>3</Radius></RoundRect>
            </Figure>

            <Border>
                <Color><GlobalColor>bg</GlobalColor></Color>
            </Border>

            <Fill>
                <PlainColor>
                    <Red>255</Red>
                    <Green>255</Green>
                    <Blue>255</Blue>
                    <Alpha>120</Alpha>
                </PlainColor>
            </Fill>
        </Element>

        <Element xsi:type="ImageElement" Id="LblBusy">
            <Position Top="162" Left="138"/>
            <Image><Name>buddy-busy</Name></Image>
        </Element>

        <Element xsi:type="ImageElement" Id="LblAway">
            <Position Top="162" Left="206"/>
            <Image><Name>buddy-away</Name></Image>
        </Element>
    </Elements>

    <Controls>
        <Control xsi:type="StaticControl" Id="LblTop">
            <Position Top="9" Width="254" Left="9" Height="20"/>
            <Transparency>180</Transparency>
            <Caption>Fill the fields below if you want to customize your status.
                Your status will remain personalized until you change it
                for something else.</Caption>
        </Control>

        <Control xsi:type="StaticControl" Id="LblNameTag">
            <Position Top="36" Width="60" Left="9"/>
            <Caption>Name tag:</Caption>
        </Control>

        <Control xsi:type="EditControl" Id="EdtNameTag">
            <Position Top="35" Width="104" Left="80"/>
        </Control>

        <Control xsi:type="StaticControl" Id="LblPsm">
            <Position Top="55" Width="70" Left="9"/>
            <Caption>Personal message:</Caption>
        </Control>

        <Control xsi:type="EditControl" Id="EdtPsm">
            <Position Top="54" Width="189" Left="80"/>
        </Control>

        <Control xsi:type="StaticControl" Id="LblResponder">
            <Position Top="74" Width="70" Left="9"/>
            <Caption>Auto-responder:</Caption>
        </Control>

        <Control xsi:type="EditControl" Id="EdtAutoMessage">
            <Position Top="74" Width="189" Left="80" Height="38"/>
            <Help>Tip: you can fully customize your auto-responder message by
                  creating a script.\nThen, all you need to do is call your
                  script function here with the /script command.\nYou can also
                  create a sequence of different messages by starting new lines
                  with #.</Help>

            <Attributes>
                <Multiline>true</Multiline>
            </Attributes>
        </Control>

        <Control xsi:type="LinkControl" Id="LnkFilter">
            <Position Top="113" Width="186" Left="80"/>
            <Caption>Select the contacts who will receive the
                message...</Caption>
        </Control>

        <Control xsi:type="StaticControl" Id="LblMore">
            <Position Top="128" Width="200" Height="12" Left="6"/>
            <Color><GlobalColor>green</GlobalColor></Color>
            <Font><Size>10</Size><Bold>true</Bold></Font>
            <Caption>More options:</Caption>
        </Control>

        <Control xsi:type="CheckBoxControl" Id="ChkTime">
            <Position Top="146" Width="125" Left="10"/>
            <Help>Use the following tags in your auto-responder message to
                  refer to the remaining time:\n(!PS_R) (!PS_RH) (!PS_RM)
                  (!PS_RS)</Help>
            <Caption>Automatically &amp;reset my status:</Caption>
        </Control>

        <Control xsi:type="DateTimeControl" Id="DatTime">
            <Position Top="160" Width="110" Left="10"/>
            <Attributes>
                <AllowCalendar>false</AllowCalendar>
            </Attributes>

            <Format><Custom>HH:mm:ss '(time remaining)'</Custom></Format>
        </Control>

        <Control xsi:type="StaticControl" Id="LblStatus">
            <Position Top="146" Width="119" Left="138"/>
            <Caption>Show me to my contacts as:</Caption>
        </Control>

        <Control xsi:type="RadioControl" Id="RadBusy">
            <Position Top="163" Width="54" Left="151"/>
            <Attributes>
                <IsNewGroup>true</IsNewGroup>
            </Attributes>
            <Caption>&amp;Busy</Caption>
        </Control>

        <Control xsi:type="RadioControl" Id="RadAway">
            <Position Top="163" Width="49" Left="219"/>
            <Caption>&amp;Away</Caption>
        </Control>
    </Controls>
</Window>

</Interfaces>

See Also

Interface Windows Information, Schema Documentation.


Interface Windows - Schema Documentation

 Interface Windows Schema Documentation

Interfaces
Window
Element
ElementGroup
ArrowElement
FigureElement
Image
LineElement
PlaceHolderElement
Control
BrowserControl
ButtonControl
CheckBoxControl
CodeEditControl
ComboBoxControl
DateTimeControl
EditControl
HotKeyControl
LinkControl
ListBoxControl
ListViewControl
MenuButtonControl
ProgressControl
RadioControl
RichEditControl
RichStaticControl
ScrollBarControl
SliderControl
SpinControl
StaticControl
TreeViewControl
ArcChunk
BezierChunk
Color
ColorInfo
GlobalColor
ImageElement
LineChunk
Menu
PathChunk
TextElement

element Interfaces
diagram
children pli:GlobalColors pli:Window
attributes
Name | Type | Use | Default | Fixed | annotation
Name | derived by: xs:string | optional |  |  |
Version | xs:float |  |  |  |
Description | xs:string |  |  |  |
identity constraints
 | Name | Refer | Selector | Field(s)
key | keyWindowName |  | Window | @Name

attribute Interfaces/@Name
type restriction of xs:string
properties
use optional
facets
minLength 1

attribute Interfaces/@Version
type xs:float

attribute Interfaces/@Description
type xs:string

element Interfaces/GlobalColors
diagram
properties
minOcc | 0
maxOcc | 1
children pli:GlobalColor

element Interfaces/GlobalColors/GlobalColor
diagram
type | pli:GlobalColor
properties
minOcc | 0
maxOcc | unbounded
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor
attributes
Name | Type | Use | Default | Fixed | annotation
Id | xs:string | required |  |  |

element Interfaces/Window
diagram
type | pli:Window
properties
minOcc | 1
maxOcc | unbounded
children | pli:Attributes pli:TitleBar pli:Position pli:DialogTmpl pli:WindowTmpl pli:ChildTmpl pli:Elements pli:ElementGroups pli:Controls
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed. For scripts windows, punctuation is replaced by underscores.
Version xs:unsignedInt required
documentation
Used by the program to know is a custom interface is up to date.
TranslationSection xs:string
documentation
Use to override the name of the section where the translation for this window will be read.
Description | xs:string

complexType ArcChunk
diagram
type | extension of pli:PathChunk
properties
base pli:PathChunk
children | pli:Left pli:Top pli:Width pli:Height pli:StartAngle pli:SweepAngle

element ArcChunk/Left
type xs:int

element ArcChunk/Top
type xs:int

element ArcChunk/Width
type restriction of xs:unsignedInt
facets
minInclusive 1

element ArcChunk/Height
type restriction of xs:unsignedInt
facets
minInclusive 1

element ArcChunk/StartAngle
type restriction of xs:int
facets
minInclusive | 0
maxInclusive | 360
annotation
documentation
Clockwise angle between the horizontal axis of the ellipse and the starting point of the arc.

element ArcChunk/SweepAngle
type restriction of xs:int
facets
minInclusive | 0
maxInclusive | 360
annotation
documentation
Clockwise angle between the starting point and the ending point of the arc.

complexType ArrowElement
diagram
type | extension of pli:Element
properties
base pli:Element
children | pli:Position pli:Attributes pli:Color
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element ArrowElement/Attributes
diagram |
children | pli:Orientation

 element ArrowElement/Attributes/Orientation
type restriction of xs:string
facets
enumeration | Left
enumeration | Right

element ArrowElement/Color
diagram |
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 complexType BezierChunk
diagram
type | extension of pli:PathChunk
properties
base pli:PathChunk
children | pli:X1 pli:Y1 pli:X2 pli:Y2 pli:X3 pli:Y3 pli:X4 pli:Y4

element BezierChunk/X1
type xs:int

element BezierChunk/Y1
type xs:int
annotation
documentation
Starting point

element BezierChunk/X2
type xs:int

element BezierChunk/Y2
type xs:int
annotation
documentation
First control point

element BezierChunk/X3
type xs:int

element BezierChunk/Y3
type xs:int
annotation
documentation
Second control point

element BezierChunk/X4
type xs:int

element BezierChunk/Y4
type xs:int
annotation
documentation
Ending point

complexType BrowserControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:BorderColor
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element BrowserControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:HasBorder pli:AllowFindText pli:AllowPrint

element BrowserControl/Attributes/HasBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element BrowserControl/Attributes/AllowFindText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
annotation
documentation
Display the Find Text window when the user hits Ctrl+F

element BrowserControl/Attributes/AllowPrint
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
annotation
documentation
Display the Print window when the user hits Ctrl+P

element BrowserControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

complexType ButtonControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:StandardLook pli:CustomGradient pli:Image pli:Font pli:TextColor pli:Caption pli:CustomLook
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element ButtonControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Align pli:IsDefault pli:MoveWhenPushed pli:DwmAnimations

element ButtonControl/Attributes/Align
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | center
facets
enumeration | left
enumeration | center
enumeration | right

element ButtonControl/Attributes/IsDefault
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
This button is clicked when the user presses Enter.

element ButtonControl/Attributes/MoveWhenPushed
type restriction of xs:unsignedByte
properties
minOcc | 0
maxOcc | 1
default | 0
facets
minInclusive | 0
maxInclusive | 3
annotation
documentation
Move the button when it's pressed by this number of pixel (only for the default look).

element ButtonControl/Attributes/DwmAnimations
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Default
facets
enumeration | Default
enumeration | Allow
enumeration | Disallow
annotation
documentation
Specifies if transition animations are allowed for this control in Windows Vista and above.

element ButtonControl/StandardLook
diagram
attributes
Name | Type | Use | Default | Fixed | annotation
Template | derived by: xs:string |  | Grey |  |

attribute ButtonControl/StandardLook/@Template
type restriction of xs:string
properties
default Grey
facets
enumeration | Grey
enumeration | Blue
enumeration | Transparent
enumeration | Transparent2
enumeration | Clear

element ButtonControl/CustomGradient
diagram |
children | pli:Normal pli:Hot pli:Pushed

 element ButtonControl/CustomGradient/Normal
diagram
children pli:Color1 pli:Color2 pli:ColorBorder pli:Shadow
attributes
Name | Type | Use | Default | Fixed | annotation
Interpolation | derived by: xs:string |  | Smooth |  |

attribute ButtonControl/CustomGradient/Normal/@Interpolation
type restriction of xs:string
properties
default Smooth
facets
enumeration | Smooth
enumeration | Average
enumeration | Strong

element ButtonControl/CustomGradient/Normal/Color1
diagram |
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element ButtonControl/CustomGradient/Normal/Color2
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element ButtonControl/CustomGradient/Normal/ColorBorder
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor
annotation
documentation
If not present, Color2 is used instead.

element ButtonControl/CustomGradient/Normal/Shadow
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ButtonControl/CustomGradient/Hot
diagram
children pli:Color1 pli:Color2 pli:ColorBorder pli:Shadow
attributes
Name | Type | Use | Default | Fixed | annotation
Interpolation | derived by: xs:string |  | Smooth |  |

attribute ButtonControl/CustomGradient/Hot/@Interpolation
type restriction of xs:string
properties
default Smooth
facets
enumeration | Smooth
enumeration | Average
enumeration | Strong

element ButtonControl/CustomGradient/Hot/Color1
diagram |
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element ButtonControl/CustomGradient/Hot/Color2
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element ButtonControl/CustomGradient/Hot/ColorBorder
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element ButtonControl/CustomGradient/Hot/Shadow
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ButtonControl/CustomGradient/Pushed
diagram
children pli:Color1 pli:Color2 pli:ColorBorder pli:Shadow
attributes
Name | Type | Use | Default | Fixed | annotation
Interpolation | derived by: xs:string |  | Smooth |  |

attribute ButtonControl/CustomGradient/Pushed/@Interpolation
type restriction of xs:string
properties
default Smooth
facets
enumeration | Smooth
enumeration | Average
enumeration | Strong

element ButtonControl/CustomGradient/Pushed/Color1
diagram |
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element ButtonControl/CustomGradient/Pushed/Color2
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element ButtonControl/CustomGradient/Pushed/ColorBorder
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element ButtonControl/CustomGradient/Pushed/Shadow
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ButtonControl/Image
diagram
type | extension of pli:Image
properties
minOcc | 0
maxOcc | 1
children | pli:Name pli:Format pli:AllowAutoMirror
attributes
Name | Type | Use | Default | Fixed | annotation
Align | derived by: xs:string |  | Left |  |
Margin | xs:int |  | 2 |  |
annotation
documentation
Only valid is Align is Center

attribute ButtonControl/Image/@Align
type restriction of xs:string
properties
default Left
facets
enumeration | Left
enumeration | Right

attribute ButtonControl/Image/@Margin
type xs:int
properties
default 2

element ButtonControl/Image/AllowAutoMirror
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
annotation
documentation
If true, the image will automatically be mirrored (inversed on the X axis) if the parent window is right-to-left.

element ButtonControl/Font
diagram
properties
minOcc | 0
maxOcc | 1
children pli:FaceName pli:Bold pli:Italic pli:Underlined pli:Strikeout pli:Size
annotation
documentation
Changes various settings of the default font.

element ButtonControl/Font/FaceName
type xs:string
properties
minOcc | 0
maxOcc | 1

element ButtonControl/Font/Bold
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element ButtonControl/Font/Italic
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element ButtonControl/Font/Underlined
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element ButtonControl/Font/Strikeout
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element ButtonControl/Font/Size
type xs:double
properties
minOcc | 0
maxOcc | 1
default | 8
annotation
documentation
The size is in points.

element ButtonControl/TextColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element ButtonControl/Caption
type xs:string
properties
minOcc | 0
maxOcc | 1

element ButtonControl/CustomLook
diagram
children pli:FocusRect pli:Base pli:Normal pli:Hot pli:Pushed pli:Disabled
annotation
documentation
When using custom look, the control cannot be resized.

element ButtonControl/CustomLook/FocusRect
diagram
children pli:Left pli:Top pli:Right pli:Bottom
annotation
documentation
Margins used to compute the position of the focus rectangle based on the position of the control.

element ButtonControl/CustomLook/FocusRect/Left
type xs:int

element ButtonControl/CustomLook/FocusRect/Top
type xs:int

element ButtonControl/CustomLook/FocusRect/Right
type xs:int

element ButtonControl/CustomLook/FocusRect/Bottom
type xs:int

element ButtonControl/CustomLook/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Base elements are displayed for every state.

element ButtonControl/CustomLook/Base/Element
diagram
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element ButtonControl/CustomLook/Normal
diagram |
children | pli:Element

 element ButtonControl/CustomLook/Normal/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element ButtonControl/CustomLook/Hot
diagram |
children | pli:Element

 element ButtonControl/CustomLook/Hot/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element ButtonControl/CustomLook/Pushed
diagram |
children | pli:Element

 element ButtonControl/CustomLook/Pushed/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element ButtonControl/CustomLook/Disabled
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element

element ButtonControl/CustomLook/Disabled/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

complexType CheckBoxControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:TextColor pli:Caption pli:CustomLook
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element CheckBoxControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Has3States pli:DwmAnimations

element CheckBoxControl/Attributes/Has3States
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element CheckBoxControl/Attributes/DwmAnimations
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Default
facets
enumeration | Default
enumeration | Allow
enumeration | Disallow
annotation
documentation
Specifies if transition animations are allowed for this control in Windows Vista and above.

element CheckBoxControl/TextColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor
annotation
documentation
Alpha not supported.

element CheckBoxControl/Caption
type xs:string
properties
minOcc | 0
maxOcc | 1

element CheckBoxControl/CustomLook
diagram
children pli:FocusRect pli:Base pli:Normal pli:Hot pli:Pushed pli:Disabled
annotation
documentation
When using custom look, the control cannot be resized.

element CheckBoxControl/CustomLook/FocusRect
diagram
children pli:Left pli:Top pli:Right pli:Bottom
annotation
documentation
Margins used to compute the position of the focus rectangle based on the position of the control.

element CheckBoxControl/CustomLook/FocusRect/Left
type xs:int

element CheckBoxControl/CustomLook/FocusRect/Top
type xs:int

element CheckBoxControl/CustomLook/FocusRect/Right
type xs:int

element CheckBoxControl/CustomLook/FocusRect/Bottom
type xs:int

element CheckBoxControl/CustomLook/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Base elements are displayed for every state.

element CheckBoxControl/CustomLook/Base/Element
diagram
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Normal
diagram |
children | pli:Base pli:Unchecked pli:Checked pli:ThirdChecked

 element CheckBoxControl/CustomLook/Normal/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Displayed for checked and unchecked.

element CheckBoxControl/CustomLook/Normal/Base/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Normal/Unchecked
diagram |
children | pli:Element

 element CheckBoxControl/CustomLook/Normal/Unchecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Normal/Checked
diagram |
children | pli:Element

 element CheckBoxControl/CustomLook/Normal/Checked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Normal/ThirdChecked
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element

element CheckBoxControl/CustomLook/Normal/ThirdChecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Hot
diagram |
children | pli:Base pli:Unchecked pli:Checked pli:ThirdChecked

 element CheckBoxControl/CustomLook/Hot/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Displayed for checked and unchecked.

element CheckBoxControl/CustomLook/Hot/Base/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Hot/Unchecked
diagram |
children | pli:Element

 element CheckBoxControl/CustomLook/Hot/Unchecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Hot/Checked
diagram |
children | pli:Element

 element CheckBoxControl/CustomLook/Hot/Checked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Hot/ThirdChecked
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element

element CheckBoxControl/CustomLook/Hot/ThirdChecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Pushed
diagram |
children | pli:Base pli:Unchecked pli:Checked pli:ThirdChecked

 element CheckBoxControl/CustomLook/Pushed/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Displayed for checked and unchecked.

element CheckBoxControl/CustomLook/Pushed/Base/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Pushed/Unchecked
diagram |
children | pli:Element

 element CheckBoxControl/CustomLook/Pushed/Unchecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Pushed/Checked
diagram |
children | pli:Element

 element CheckBoxControl/CustomLook/Pushed/Checked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Pushed/ThirdChecked
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element

element CheckBoxControl/CustomLook/Pushed/ThirdChecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Disabled
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Base pli:Unchecked pli:Checked pli:ThirdChecked

element CheckBoxControl/CustomLook/Disabled/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Displayed for checked and unchecked.

element CheckBoxControl/CustomLook/Disabled/Base/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Disabled/Unchecked
diagram |
children | pli:Element

 element CheckBoxControl/CustomLook/Disabled/Unchecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Disabled/Checked
diagram |
children | pli:Element

 element CheckBoxControl/CustomLook/Disabled/Checked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element CheckBoxControl/CustomLook/Disabled/ThirdChecked
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element

element CheckBoxControl/CustomLook/Disabled/ThirdChecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

complexType CodeEditControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true
annotation
documentation
Used internally for the script editor

element CodeEditControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:HasBorder pli:Template

element CodeEditControl/Attributes/HasBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element CodeEditControl/Attributes/Template
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | JScript
facets
enumeration JScript

complexType Color
diagram
type | extension of pli:ColorInfo
properties
base pli:ColorInfo
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor
used by
elements Window/WindowTmpl/BackgroundColor RichEditControl/BackgroundColor StaticControl/BackgroundColor RichStaticControl/BackgroundColor EditControl/BorderColor ListBoxControl/BorderColor RichEditControl/BorderColor HotKeyControl/BorderColor DateTimeControl/BorderColor ListViewControl/BorderColor TreeViewControl/BorderColor ComboBoxControl/BorderColor BrowserControl/BorderColor FigureElement/Fill/PathGradient/CenterColor ImageElement/Colorization/Color TextElement/Color LineElement/Color RichStaticControl/Color ArrowElement/Color StaticControl/Color FigureElement/Border/Color Window/WindowTmpl/Borders/Color FigureElement/Fill/LinearGradient/Color1 ButtonControl/CustomGradient/Pushed/Color1 ButtonControl/CustomGradient/Hot/Color1 ButtonControl/CustomGradient/Normal/Color1 FigureElement/Fill/LinearGradient/Color2 ButtonControl/CustomGradient/Pushed/Color2 ButtonControl/CustomGradient/Hot/Color2 ButtonControl/CustomGradient/Normal/Color2 ButtonControl/CustomGradient/Pushed/ColorBorder ButtonControl/CustomGradient/Hot/ColorBorder ButtonControl/CustomGradient/Normal/ColorBorder LinkControl/HotTextColor FigureElement/Fill/PlainColor FigureElement/Fill/PathGradient/SurroundColor LinkControl/TextColor MenuButtonControl/TextColor CheckBoxControl/TextColor RadioControl/TextColor ButtonControl/TextColor

element Color/GlobalColor
type xs:string

complexType ColorInfo
diagram
children pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor
used by
complexTypes Color GlobalColor

element ColorInfo/Red
type restriction of xs:unsignedByte
facets
minInclusive | 0
maxInclusive | 255

element ColorInfo/Green
type restriction of xs:unsignedByte
facets
minInclusive | 0
maxInclusive | 255

element ColorInfo/Blue
type restriction of xs:unsignedByte
facets
minInclusive | 0
maxInclusive | 255

element ColorInfo/Alpha
type restriction of xs:unsignedByte
properties
minOcc | 0
maxOcc | 1
default | 255
facets
minInclusive | 0
maxInclusive | 255
annotation
documentation
For transparency.
Not always supported.

element ColorInfo/BaseColor
diagram
children pli:Hue pli:Saturation pli:Brightness pli:Transparency
annotation
documentation
This is the color used by Messenger to display its background. Can change depending on the user.

Not supported by every situation.

element ColorInfo/BaseColor/Hue
diagram
type extension of xs:double
properties
minOcc | 0
maxOcc | 1
default | 1
attributes
Name Type Use Default Fixed annotation
Combine derived by: xs:string optional percent
documentation
Percent: a value between 0 and 1 will decrease the amount (for example, 0.75 will make it 75% of its original value), a value above 1 will increase the amount. Power: the value can be negative or positive and is used to raise the original value with a power of the specified exponent.

attribute ColorInfo/BaseColor/Hue/@Combine
type restriction of xs:string
properties
default | percent
use | optional
facets
enumeration | percent
enumeration | power
annotation
documentation
Percent: a value between 0 and 1 will decrease the amount (for example, 0.75 will make it 75% of its original value), a value above 1 will increase the amount. Power: the value can be negative or positive and is used to raise the original value with a power of the specified exponent.

element ColorInfo/BaseColor/Saturation
diagram
type extension of xs:double
properties
minOcc | 0
maxOcc | 1
default | 1
attributes
Name | Type | Use | Default | Fixed | annotation
Combine | derived by: xs:string | optional | percent |  |

attribute ColorInfo/BaseColor/Saturation/@Combine
type restriction of xs:string
properties
default | percent
use | optional
facets
enumeration | percent
enumeration | power

element ColorInfo/BaseColor/Brightness
diagram
type extension of xs:double
properties
minOcc | 0
maxOcc | 1
default | 1
attributes
Name | Type | Use | Default | Fixed | annotation
Combine | derived by: xs:string | optional | percent |  |
annotation
documentation
Hue, Saturation and Brightness modify the existing HSB of the color (they don't replace them).

attribute ColorInfo/BaseColor/Brightness/@Combine
type restriction of xs:string
properties
default | percent
use | optional
facets
enumeration | percent
enumeration | power

element ColorInfo/BaseColor/Transparency
type restriction of xs:unsignedByte
properties
minOcc | 0
maxOcc | 1
default | 255
facets
minInclusive | 0
maxInclusive | 255
annotation
documentation
The transparency is directly applied to the color if specified.

complexType ComboBoxControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:BorderColor pli:Images pli:Items
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true
annotation
documentation
Note: the height specified for the control is used to set the height of the dropdown list.

element ComboBoxControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:AcceptFiles pli:AllowEdit pli:AutoSort pli:OwnerDraw

element ComboBoxControl/Attributes/AcceptFiles
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ComboBoxControl/Attributes/AllowEdit
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ComboBoxControl/Attributes/AutoSort
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Automatically sorts the items alphabetically. Only valid when no image is specified.

element ComboBoxControl/Attributes/OwnerDraw
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | None
facets
enumeration | None
enumeration | Fixed
enumeration | Variable

element ComboBoxControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element ComboBoxControl/Images
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Image
annotation
documentation
Every image needs to have the same size.

element ComboBoxControl/Images/Image
diagram
type | extension of pli:Image
properties
minOcc | 0
maxOcc | unbounded
children | pli:Name pli:Format
attributes
Name | Type | Use | Default | Fixed | annotation
Id | xs:string | required |  |  |

attribute ComboBoxControl/Images/Image/@Id
type xs:string
properties
use required

element ComboBoxControl/Items
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Item
annotation
documentation
Items to be added at creation.

element ComboBoxControl/Items/Item
diagram
type extension of xs:string
properties
minOcc | 0
maxOcc | unbounded
attributes
Name Type Use Default Fixed annotation
Id xs:string optional
documentation
This id can used internally for some Messenger Plus! features such as skins.

attribute ComboBoxControl/Items/Item/@Id
type xs:string
properties
use optional
annotation
documentation
This id can used internally for some Messenger Plus! features such as skins.

complexType Control
diagram
properties
abstract true
children pli:Position pli:Help
used by
elements | Window/DialogTmpl/BottomBar/LeftControls/Control Window/DialogTmpl/BottomBar/RightControls/Control Window/Controls/Control
complexTypes | BrowserControl ButtonControl CheckBoxControl CodeEditControl ComboBoxControl DateTimeControl EditControl HotKeyControl LinkControl ListBoxControl ListViewControl MenuButtonControl ProgressControl RadioControl RichEditControl RichStaticControl ScrollBarControl SliderControl SpinControl StaticControl TreeViewControl
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

attribute Control/@Id
type restriction of xs:string
properties
use required
facets
minLength 1
annotation
documentation
No spaces allowed

attribute Control/@Enabled
type xs:boolean
properties
default | true
use | optional

attribute Control/@Visible
type xs:boolean
properties
default true

element Control/Position
diagram
children pli:Anchor pli:Units pli:TranslationAdjust pli:Origins
attributes
Name | Type | Use | Default | Fixed | annotation
Left | xs:int | required
Top | xs:int | required
Width | xs:unsignedInt | required
Height xs:unsignedInt optional
documentation
May not be needed depending on the control.

attribute Control/Position/@Left
type xs:int
properties
use required

attribute Control/Position/@Top
type xs:int
properties
use required

attribute Control/Position/@Width
type xs:unsignedInt
properties
use required

attribute Control/Position/@Height
type xs:unsignedInt
properties
use optional
annotation
documentation
May not be needed depending on the control.

element Control/Position/Anchor
diagram
properties
minOcc | 0
maxOcc | 1
attributes
Name | Type | Use | Default | Fixed | annotation
Horizontal | derived by: xs:string |  | LeftFixed |  |
Vertical | derived by: xs:string |  | TopFixed |  |
annotation
documentation
Changes the position/size of the control when the parent is resized.

attribute Control/Position/Anchor/@Horizontal
type restriction of xs:string
properties
default LeftFixed
facets
enumeration | LeftFixed
enumeration | RightFixed
enumeration | LeftRightFixed

attribute Control/Position/Anchor/@Vertical
type restriction of xs:string
properties
default TopFixed
facets
enumeration | TopFixed
enumeration | BottomFixed
enumeration | TopBottomFixed

element Control/Position/Units
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | AllDialog
facets
enumeration | AllDialog
enumeration | PosPixels
enumeration | SizePixels
enumeration | AllPixels
annotation
documentation
By default, all coordinates are in dialog units. This parameter changes the unit to pixels.

element Control/Position/TranslationAdjust
diagram
properties
minOcc | 0
maxOcc | 1
children pli:StaticCtrlIDLeft
annotation
documentation
Allows the control to change size dynamically depending on the size of the translated text.

element Control/Position/TranslationAdjust/StaticCtrlIDLeft
type xs:string
properties
minOcc | 0
maxOcc | 1
annotation
documentation
ID of the static control which width will be used to adjust the left position of this control.

element Control/Position/Origins
diagram
properties
minOcc | 0
maxOcc | 1
attributes
Name | Type | Use | Default | Fixed | annotation
Width | derived by: xs:string |  | Normal |  |
Height | derived by: xs:string |  | Normal |  |
annotation
documentation
Allows to specify a size that's relative to the opposite border of the window.

attribute Control/Position/Origins/@Width
type restriction of xs:string
properties
default Normal
facets
enumeration | Normal
enumeration | Reverse

attribute Control/Position/Origins/@Height
type restriction of xs:string
properties
default Normal
facets
enumeration | Normal
enumeration | Reverse

element Control/Help
type xs:string
properties
minOcc | 0
maxOcc | 1

complexType DateTimeControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:Format pli:BorderColor
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element DateTimeControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:AllowCalendar pli:ShowNone

element DateTimeControl/Attributes/AllowCalendar
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element DateTimeControl/Attributes/ShowNone
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Add a checkbox to disable the control.

element DateTimeControl/Format
diagram |
children | pli:Predefined pli:Custom

 element DateTimeControl/Format/Predefined
type restriction of xs:string
facets
enumeration | LongDate
enumeration | ShortDate
enumeration | Time
enumeration | DateTime

element DateTimeControl/Format/Custom
type restriction of xs:string
facets
minLength 1
annotation
documentation
See MSDN for more information.

element DateTimeControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

complexType EditControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:BorderColor pli:DefaultText
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element EditControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Align pli:HasBorder pli:Multiline pli:VScroll pli:NumbersOnly pli:AcceptFiles pli:IsPassword pli:ReadOnly pli:WantReturn pli:HideSelection

element EditControl/Attributes/Align
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | left
facets
enumeration | left
enumeration | center
enumeration | right

element EditControl/Attributes/HasBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element EditControl/Attributes/Multiline
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element EditControl/Attributes/VScroll
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element EditControl/Attributes/NumbersOnly
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element EditControl/Attributes/AcceptFiles
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element EditControl/Attributes/IsPassword
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element EditControl/Attributes/ReadOnly
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element EditControl/Attributes/WantReturn
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
If true, the edit box will process the Enter Key.

element EditControl/Attributes/HideSelection
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element EditControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element EditControl/DefaultText
type xs:string
properties
minOcc | 0
maxOcc | 1

complexType Element
diagram
properties
abstract true
children pli:Position
used by
elements | RadioControl/CustomLook/Disabled/Checked/Element CheckBoxControl/CustomLook/Base/Element CheckBoxControl/CustomLook/Normal/Base/Element CheckBoxControl/CustomLook/Normal/Unchecked/Element CheckBoxControl/CustomLook/Normal/Checked/Element CheckBoxControl/CustomLook/Normal/ThirdChecked/Element CheckBoxControl/CustomLook/Hot/Base/Element CheckBoxControl/CustomLook/Hot/Unchecked/Element CheckBoxControl/CustomLook/Hot/Checked/Element CheckBoxControl/CustomLook/Hot/ThirdChecked/Element CheckBoxControl/CustomLook/Pushed/Base/Element CheckBoxControl/CustomLook/Pushed/Unchecked/Element CheckBoxControl/CustomLook/Pushed/Checked/Element CheckBoxControl/CustomLook/Pushed/ThirdChecked/Element CheckBoxControl/CustomLook/Disabled/Base/Element CheckBoxControl/CustomLook/Disabled/Unchecked/Element CheckBoxControl/CustomLook/Disabled/Checked/Element CheckBoxControl/CustomLook/Disabled/ThirdChecked/Element Window/Elements/Element ElementGroup/Elements/Element ButtonControl/CustomLook/Base/Element ButtonControl/CustomLook/Normal/Element ButtonControl/CustomLook/Hot/Element ButtonControl/CustomLook/Pushed/Element ButtonControl/CustomLook/Disabled/Element RadioControl/CustomLook/Base/Element RadioControl/CustomLook/Normal/Base/Element RadioControl/CustomLook/Normal/Unchecked/Element RadioControl/CustomLook/Normal/Checked/Element RadioControl/CustomLook/Hot/Base/Element RadioControl/CustomLook/Hot/Unchecked/Element RadioControl/CustomLook/Hot/Checked/Element RadioControl/CustomLook/Pushed/Base/Element RadioControl/CustomLook/Pushed/Unchecked/Element RadioControl/CustomLook/Pushed/Checked/Element RadioControl/CustomLook/Disabled/Base/Element RadioControl/CustomLook/Disabled/Unchecked/Element
complexTypes | ArrowElement FigureElement ImageElement LineElement PlaceHolderElement TextElement
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

attribute Element/@Id
type restriction of xs:string
properties
use required
facets
minLength 1
annotation
documentation
No spaces allowed

attribute Element/@Visible
type xs:boolean
properties
default true

element Element/Position
diagram
children pli:Anchor pli:Units
attributes
Name | Type | Use | Default | Fixed | annotation
Left | xs:int | required
Top | xs:int | required
Width | xs:unsignedInt | optional
Height xs:unsignedInt
documentation
May not be needed depending on the element.

attribute Element/Position/@Left
type xs:int
properties
use required

attribute Element/Position/@Top
type xs:int
properties
use required

attribute Element/Position/@Width
type xs:unsignedInt
properties
use optional

attribute Element/Position/@Height
type xs:unsignedInt
annotation
documentation
May not be needed depending on the element.

element Element/Position/Anchor
diagram
properties
minOcc | 0
maxOcc | 1
attributes
Name | Type | Use | Default | Fixed | annotation
Horizontal | derived by: xs:string |  | LeftFixed |  |
Vertical | derived by: xs:string |  | TopFixed |  |
annotation
documentation
Changes the position/size of the element when the parent is resized.

attribute Element/Position/Anchor/@Horizontal
type restriction of xs:string
properties
default LeftFixed
facets
enumeration | LeftFixed
enumeration | RightFixed
enumeration | LeftRightFixed

attribute Element/Position/Anchor/@Vertical
type restriction of xs:string
properties
default TopFixed
facets
enumeration | TopFixed
enumeration | BottomFixed
enumeration | TopBottomFixed

element Element/Position/Units
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
facets
enumeration | AllDialog
enumeration | PosPixels
enumeration | SizePixels
enumeration | AllPixels
annotation
documentation
By default, all coordinates are in dialog units. This parameter changes the unit to pixels.

complexType ElementGroup
diagram
children pli:Position pli:Transparency pli:Elements
used by
element Window/ElementGroups/ElementGroup
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

attribute ElementGroup/@Id
type restriction of xs:string
properties
use required
facets
minLength 1
annotation
documentation
No spaces allowed

attribute ElementGroup/@Visible
type xs:boolean
properties
default true

element ElementGroup/Position
diagram
children pli:Anchor pli:Units
attributes
Name | Type | Use | Default | Fixed | annotation
Left | xs:int | required |  |  |
Top | xs:int | required |  |  |
Width | xs:unsignedInt | required |  |  |
Height | xs:unsignedInt | required |  |  |

attribute ElementGroup/Position/@Left
type xs:int
properties
use required

attribute ElementGroup/Position/@Top
type xs:int
properties
use required

attribute ElementGroup/Position/@Width
type xs:unsignedInt
properties
use required

attribute ElementGroup/Position/@Height
type xs:unsignedInt
properties
use required

element ElementGroup/Position/Anchor
diagram
properties
minOcc | 0
maxOcc | 1
attributes
Name | Type | Use | Default | Fixed | annotation
Horizontal | derived by: xs:string |  | LeftFixed |  |
Vertical | derived by: xs:string |  | TopFixed |  |

attribute ElementGroup/Position/Anchor/@Horizontal
type restriction of xs:string
properties
default LeftFixed
facets
enumeration | LeftFixed
enumeration | RightFixed
enumeration | LeftRightFixed

attribute ElementGroup/Position/Anchor/@Vertical
type restriction of xs:string
properties
default TopFixed
facets
enumeration | TopFixed
enumeration | BottomFixed
enumeration | TopBottomFixed

element ElementGroup/Position/Units
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | AllDialog
facets
enumeration | AllDialog
enumeration | PosPixels
enumeration | SizePixels
enumeration | AllPixels

element ElementGroup/Transparency
diagram
properties
minOcc | 0
maxOcc | 1
children pli:General pli:FadeEffect pli:FadeDuration

element ElementGroup/Transparency/General
type restriction of xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 255
facets
minInclusive | 0
maxInclusive | 255
annotation
documentation
General transparency value applied on the whole group.

element ElementGroup/Transparency/FadeEffect
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | None
facets
enumeration | None
enumeration | Showing
enumeration | Hiding
enumeration | ShowingHiding

element ElementGroup/Transparency/FadeDuration
type restriction of xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 1000
facets
minInclusive 100
annotation
documentation
In milliseconds.

element ElementGroup/Elements
diagram |
children | pli:Element

 element ElementGroup/Elements/Element
diagram
type | pli:Element
properties
minOcc | 1
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

complexType FigureElement
diagram
type | extension of pli:Element
properties
base pli:Element
children | pli:Position pli:Figure pli:Border pli:Fill
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element FigureElement/Figure
diagram |
children | pli:Rectangle pli:RoundRect pli:Ellipse pli:Custom

 element FigureElement/Figure/Rectangle

element FigureElement/Figure/RoundRect
diagram |
children | pli:Radius

 element FigureElement/Figure/RoundRect/Radius
type xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 8

element FigureElement/Figure/Ellipse

element FigureElement/Figure/Custom
diagram |
children | pli:PathChunk

 element FigureElement/Figure/Custom/PathChunk
properties
minOcc | 1
maxOcc | unbounded

element FigureElement/Border
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Size pli:Color

element FigureElement/Border/Size
type restriction of xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 1
facets
minInclusive 1

element FigureElement/Border/Color
diagram |
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element FigureElement/Fill
diagram
properties
minOcc | 0
maxOcc | 1
children pli:PlainColor pli:LinearGradient pli:PathGradient pli:Image

element FigureElement/Fill/PlainColor
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element FigureElement/Fill/LinearGradient
diagram
children pli:Color1 pli:Color2
attributes
Name Type Use Default Fixed annotation
Angle derived by: xs:int 0
documentation
Limited to horizontal, vertical and diagonal.

attribute FigureElement/Fill/LinearGradient/@Angle
type restriction of xs:int
properties
default 0
facets
minInclusive | -90
maxInclusive | 90
enumeration | -90
enumeration | -45
enumeration | 0
enumeration | 45
enumeration | 90
annotation
documentation
Limited to horizontal, vertical and diagonal.

element FigureElement/Fill/LinearGradient/Color1
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element FigureElement/Fill/LinearGradient/Color2
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element FigureElement/Fill/PathGradient
diagram |
children | pli:CenterColor pli:SurroundColor pli:CenterPoint pli:FocusScale

 element FigureElement/Fill/PathGradient/CenterColor
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element FigureElement/Fill/PathGradient/SurroundColor
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element FigureElement/Fill/PathGradient/CenterPoint
diagram
properties
minOcc | 0
maxOcc | 1
attributes
Name | Type | Use | Default | Fixed | annotation
x | xs:int |  |  |  |
y | xs:int |  |  |  |

attribute FigureElement/Fill/PathGradient/CenterPoint/@x
type xs:int

attribute FigureElement/Fill/PathGradient/CenterPoint/@y
type xs:int

element FigureElement/Fill/PathGradient/FocusScale
diagram
properties
minOcc | 0
maxOcc | 1
attributes
Name | Type | Use | Default | Fixed | annotation
x | derived by: xs:float |  |  |  |
y | derived by: xs:float |  |  |  |

attribute FigureElement/Fill/PathGradient/FocusScale/@x
type restriction of xs:float
facets
minInclusive | 0
maxInclusive | 1

attribute FigureElement/Fill/PathGradient/FocusScale/@y
type restriction of xs:float
facets
minInclusive | 0
maxInclusive | 1

element FigureElement/Fill/Image
diagram
type | extension of pli:Image
children | pli:Name pli:Format
attributes
Name | Type | Use | Default | Fixed | annotation
MarginX | xs:int |  |  |  |
MarginY | xs:int |  |  |  |

attribute FigureElement/Fill/Image/@MarginX
type xs:int

attribute FigureElement/Fill/Image/@MarginY
type xs:int

complexType GlobalColor
diagram
type | extension of pli:ColorInfo
properties
base pli:ColorInfo
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor
used by
element Interfaces/GlobalColors/GlobalColor
attributes
Name | Type | Use | Default | Fixed | annotation
Id | xs:string | required |  |  |

attribute GlobalColor/@Id
type xs:string
properties
use required

complexType HotKeyControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:BorderColor
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element HotKeyControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:HasBorder

element HotKeyControl/Attributes/HasBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element HotKeyControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

complexType Image
diagram
children pli:Name pli:Format
used by
elements ListViewControl/Images/LargeIcons/Image ListViewControl/Images/SmallIcons/Image ListViewControl/Images/StateIcons/Image TreeViewControl/Images/NormalIcons/Image TreeViewControl/Images/StateIcons/Image ComboBoxControl/Images/Image ButtonControl/Image MenuButtonControl/Image ImageElement/Image FigureElement/Fill/Image

element Image/Name
type restriction of xs:string
facets
minLength 1
annotation
documentation
This name represents either a resource or a file name without extension.

element Image/Format
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | PNG
facets
enumeration | PNG
enumeration | JPEG

complexType ImageElement
diagram
type | extension of pli:Element
properties
base pli:Element
children | pli:Position pli:Attributes pli:Image pli:Mosaic pli:Colorization pli:Transparency
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true
annotation
documentation
If a width and a height are specified, they act as clipping areas.

element ImageElement/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:AllowAutoMirror

element ImageElement/Attributes/AllowAutoMirror
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
annotation
documentation
If true, the image will automatically be mirrored (inversed on the X axis) if the parent window is right-to-left.

element ImageElement/Image
diagram
type | pli:Image
properties
minOcc | 0
maxOcc | 1
children | pli:Name pli:Format
annotation
documentation
The object is valid even without a defined image as the program can assign one itself.

element ImageElement/Mosaic
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Normal
facets
enumeration | Normal
enumeration | ResizeToFit
enumeration | HRepeat
enumeration | VRepeat
enumeration | HVRepeat
enumeration | CenterResize
annotation
documentation
To use this property, add a Width and a Height

element ImageElement/Colorization
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Color
attributes
Name | Type | Use | Default | Fixed | annotation
Enable | xs:boolean | required |  |  |
annotation
documentation
When this is enabled, the picture is converted to grayscale then colorized with the specified color.

attribute ImageElement/Colorization/@Enable
type xs:boolean
properties
use required

element ImageElement/Colorization/Color
diagram |
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 element ImageElement/Transparency
type restriction of xs:unsignedByte
properties
minOcc | 0
maxOcc | 1
default | 255
facets
minInclusive | 0
maxInclusive | 255

complexType LineChunk
diagram
type | extension of pli:PathChunk
properties
base pli:PathChunk
children | pli:X1 pli:Y1 pli:X2 pli:Y2

element LineChunk/X1
type xs:int

element LineChunk/Y1
type xs:int

element LineChunk/X2
type xs:int

element LineChunk/Y2
type xs:int

complexType LineElement
diagram
type | extension of pli:Element
properties
base pli:Element
children | pli:Position pli:Attributes pli:Size pli:Color
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element LineElement/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:AntiAlias pli:StartCap pli:EndCap

element LineElement/Attributes/AntiAlias
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element LineElement/Attributes/StartCap
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Square
facets
enumeration | Flat
enumeration | Square
enumeration | Round
enumeration | Triangle

element LineElement/Attributes/EndCap
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Square
facets
enumeration | Flat
enumeration | Square
enumeration | Round
enumeration | Triangle

element LineElement/Size
type restriction of xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 1
facets
minInclusive 1

element LineElement/Color
diagram |
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

 complexType LinkControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:TextColor pli:HotTextColor pli:Caption
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element LinkControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Align pli:Underline

element LinkControl/Attributes/Align
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | left
facets
enumeration | left
enumeration | center
enumeration | right

element LinkControl/Attributes/Underline
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Always
facets
enumeration | Never
enumeration | WhenHot
enumeration | Always

element LinkControl/TextColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element LinkControl/HotTextColor
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element LinkControl/Caption
type xs:string
properties
minOcc | 0
maxOcc | 1

complexType ListBoxControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:BorderColor pli:Items
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element ListBoxControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:HasBorder pli:AcceptFiles pli:MultipleSel pli:ReadOnly pli:AutoSort pli:OwnerDraw

element ListBoxControl/Attributes/HasBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ListBoxControl/Attributes/AcceptFiles
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListBoxControl/Attributes/MultipleSel
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListBoxControl/Attributes/ReadOnly
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Prevents the user to select the list box's items.

element ListBoxControl/Attributes/AutoSort
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Automatically sorts the items alphabetically.

element ListBoxControl/Attributes/OwnerDraw
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | None
facets
enumeration | None
enumeration | Fixed
enumeration | Variable

element ListBoxControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element ListBoxControl/Items
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Item
annotation
documentation
Items to be added at creation.

element ListBoxControl/Items/Item
diagram
type extension of xs:string
properties
minOcc | 0
maxOcc | unbounded
attributes
Name Type Use Default Fixed annotation
Id xs:string optional
documentation
This id can used internally for some Messenger Plus! features such as skins.

attribute ListBoxControl/Items/Item/@Id
type xs:string
properties
use optional
annotation
documentation
This id can used internally for some Messenger Plus! features such as skins.

complexType ListViewControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:LargeIconView pli:SmallIconView pli:ListView pli:ReportView pli:TileView pli:BorderColor pli:Images pli:Columns pli:Groups
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element ListViewControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:HasBorder pli:AcceptFiles pli:AlwaysShowSelection pli:AutoSort pli:AllowEditText pli:MultipleSel pli:AutoTip pli:HotTrack

element ListViewControl/Attributes/HasBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ListViewControl/Attributes/AcceptFiles
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/Attributes/AlwaysShowSelection
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ListViewControl/Attributes/AutoSort
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | NoAutoSort
facets
enumeration | NoAutoSort
enumeration | Ascending
enumeration | Descending

element ListViewControl/Attributes/AllowEditText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/Attributes/MultipleSel
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/Attributes/AutoTip
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
annotation
documentation
Automatically display a tooltip for labels that are too large.

element ListViewControl/Attributes/HotTrack
diagram
type extension of xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
attributes
Name | Type | Use | Default | Fixed | annotation
UnderlineMode | derived by: xs:string |  | Cold |  |
annotation
documentation
Display labels like links.

attribute ListViewControl/Attributes/HotTrack/@UnderlineMode
type restriction of xs:string
properties
default Cold
facets
enumeration | Cold
enumeration | Hot

element ListViewControl/LargeIconView
diagram |
children | pli:ItemsAlign pli:WrapText pli:HasCheckboxes

 element ListViewControl/LargeIconView/ItemsAlign
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Top
facets
enumeration | Left
enumeration | Top

element ListViewControl/LargeIconView/WrapText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ListViewControl/LargeIconView/HasCheckboxes
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/SmallIconView
diagram |
children | pli:ItemsAlign pli:WrapText pli:HasCheckboxes

 element ListViewControl/SmallIconView/ItemsAlign
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Top
facets
enumeration | Left
enumeration | Top

element ListViewControl/SmallIconView/WrapText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ListViewControl/SmallIconView/HasCheckboxes
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/ListView
diagram |
children | pli:HasCheckboxes

 element ListViewControl/ListView/HasCheckboxes
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/ReportView
diagram |
children | pli:ColumnHeader pli:SortColHeader pli:HeaderDragDrop pli:HasCheckboxes pli:FullRowSelect pli:ShowGridLines

 element ListViewControl/ReportView/ColumnHeader
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ListViewControl/ReportView/SortColHeader
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/ReportView/HeaderDragDrop
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Allow to move the columns with drag and drop.

element ListViewControl/ReportView/HasCheckboxes
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/ReportView/FullRowSelect
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element ListViewControl/ReportView/ShowGridLines
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/TileView

element ListViewControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element ListViewControl/Images
diagram
properties
minOcc | 0
maxOcc | 1
children pli:LargeIcons pli:SmallIcons pli:StateIcons
annotation
documentation
The images here must be 32bits. Each list of image needs to have images of the same size.

element ListViewControl/Images/LargeIcons
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Image

element ListViewControl/Images/LargeIcons/Image
diagram
type | extension of pli:Image
properties
minOcc | 0
maxOcc | unbounded
children | pli:Name pli:Format pli:AllowAutoMirror
attributes
Name | Type | Use | Default | Fixed | annotation
Id | xs:string | required
IsOverlay xs:boolean false
documentation
An overlay is an icon displayed transparently on top of another one.

attribute ListViewControl/Images/LargeIcons/Image/@Id
type xs:string
properties
use required

attribute ListViewControl/Images/LargeIcons/Image/@IsOverlay
type xs:boolean
properties
default false
annotation
documentation
An overlay is an icon displayed transparently on top of another one.

element ListViewControl/Images/LargeIcons/Image/AllowAutoMirror
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
If true, the image will automatically be mirrored (inversed on the X axis) if the parent window is right-to-left.

element ListViewControl/Images/SmallIcons
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Image

element ListViewControl/Images/SmallIcons/Image
diagram
type | extension of pli:Image
properties
minOcc | 0
maxOcc | unbounded
children | pli:Name pli:Format pli:AllowAutoMirror
attributes
Name | Type | Use | Default | Fixed | annotation
Id | xs:string | required
IsOverlay xs:boolean false
documentation
An overlay is an icon displayed transparently on top of another one.

attribute ListViewControl/Images/SmallIcons/Image/@Id
type xs:string
properties
use required

attribute ListViewControl/Images/SmallIcons/Image/@IsOverlay
type xs:boolean
properties
default false
annotation
documentation
An overlay is an icon displayed transparently on top of another one.

element ListViewControl/Images/SmallIcons/Image/AllowAutoMirror
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/Images/StateIcons
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Image
annotation
documentation
A state icon is displayed next to another one.

element ListViewControl/Images/StateIcons/Image
diagram
type | extension of pli:Image
properties
minOcc | 0
maxOcc | unbounded
children | pli:Name pli:Format pli:AllowAutoMirror
attributes
Name | Type | Use | Default | Fixed | annotation
Id | xs:string | required |  |  |

attribute ListViewControl/Images/StateIcons/Image/@Id
type xs:string
properties
use required

element ListViewControl/Images/StateIcons/Image/AllowAutoMirror
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element ListViewControl/Columns
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Column
attributes
Name Type Use Default Fixed annotation
WidthFormat derived by: xs:string Relative
documentation
Specifies if the width of the columns is in percentage of the list's width or in pixels.

attribute ListViewControl/Columns/@WidthFormat
type restriction of xs:string
properties
default Relative
facets
enumeration | Relative
enumeration | Absolute
annotation
documentation
Specifies if the width of the columns is in percentage of the list's width or in pixels.

element ListViewControl/Columns/Column
diagram
properties
minOcc | 1
maxOcc | unbounded
children pli:ColumnId pli:Align pli:Label pli:HeaderImage pli:Width

element ListViewControl/Columns/Column/ColumnId
type restriction of xs:string
facets
minLength 1
annotation
documentation
Uniquely identifies the column internally.

element ListViewControl/Columns/Column/Align
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Left
facets
enumeration | Left
enumeration | Center
enumeration | Right
annotation
documentation
The first column must be left aligned.

element ListViewControl/Columns/Column/Label
type extension of xs:string
properties
minOcc | 0
maxOcc | 1

element ListViewControl/Columns/Column/HeaderImage
diagram
type extension of xs:string
properties
minOcc | 0
maxOcc | 1
attributes
Name | Type | Use | Default | Fixed | annotation
Align | derived by: xs:string |  | Left |  |
annotation
documentation
The value of this element must be an image name from the SmallIcons list.

attribute ListViewControl/Columns/Column/HeaderImage/@Align
type restriction of xs:string
properties
default Left
facets
enumeration | Left
enumeration | Right

element ListViewControl/Columns/Column/Width
type xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
annotation
documentation
This parameter is optional only when only 1 column is present (relative width) or for the last column of the list (absolute width).

element ListViewControl/Groups
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Group

element ListViewControl/Groups/Group
diagram
properties
minOcc | 0
maxOcc | unbounded
children pli:GroupId pli:Align pli:Label

element ListViewControl/Groups/Group/GroupId
type restriction of xs:string
facets
minLength 1

element ListViewControl/Groups/Group/Align
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Left
facets
enumeration | Left
enumeration | Center
enumeration | Right

element ListViewControl/Groups/Group/Label
type xs:string
properties
minOcc | 0
maxOcc | 1

complexType Menu
diagram
children pli:MenuEntry pli:SubMenu pli:Separator
used by
elements MenuButtonControl/Menu Menu/SubMenu
attributes
Name Type Use Default Fixed annotation
Id derived by: xs:string required
documentation
No spaces allowed

attribute Menu/@Id
type restriction of xs:string
properties
use required
facets
minLength 1
annotation
documentation
No spaces allowed

element Menu/MenuEntry
diagram
type extension of xs:string
attributes
Name | Type | Use | Default | Fixed | annotation
Id | derived by: xs:string | required |  |  |

attribute Menu/MenuEntry/@Id
type restriction of xs:string
properties
use required
facets
minLength 1

element Menu/SubMenu
diagram
type | extension of pli:Menu
children | pli:MenuEntry pli:SubMenu pli:Separator
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Label | xs:string

attribute Menu/SubMenu/@Label
type xs:string

element Menu/Separator

complexType MenuButtonControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:Menu pli:Image pli:TextColor pli:Caption
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element MenuButtonControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:AlwaysDisplayBorder pli:AdjustArrowPos pli:DwmAnimations

element MenuButtonControl/Attributes/AlwaysDisplayBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element MenuButtonControl/Attributes/AdjustArrowPos
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element MenuButtonControl/Attributes/DwmAnimations
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Default
facets
enumeration | Default
enumeration | Allow
enumeration | Disallow
annotation
documentation
Specifies if transition animations are allowed for this control in Windows Vista and above.

element MenuButtonControl/Menu
diagram
type | extension of pli:Menu
properties
minOcc | 0
maxOcc | 1
children | pli:MenuEntry pli:SubMenu pli:Separator
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
HPos | derived by: xs:string | CenterLeft
VPos | derived by: xs:string | Top

attribute MenuButtonControl/Menu/@HPos
type restriction of xs:string
properties
default CenterLeft
facets
enumeration | Left
enumeration | CenterLeft
enumeration | CenterRight
enumeration | Right

attribute MenuButtonControl/Menu/@VPos
type restriction of xs:string
properties
default Top
facets
enumeration | Top
enumeration | Bottom

element MenuButtonControl/Image
diagram
type | extension of pli:Image
properties
minOcc | 0
maxOcc | 1
children | pli:Name pli:Format
attributes
Name | Type | Use | Default | Fixed | annotation
Margin | xs:int |  | 2 |  |

attribute MenuButtonControl/Image/@Margin
type xs:int
properties
default 2

element MenuButtonControl/TextColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element MenuButtonControl/Caption
type xs:string
properties
minOcc | 0
maxOcc | 1

complexType PathChunk
properties
abstract true
used by
complexTypes ArcChunk BezierChunk LineChunk
annotation
documentation
This element is used to defined paths.

complexType PlaceHolderElement
diagram
type | extension of pli:Element
properties
base pli:Element
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true
annotation
documentation
This element does not display anything.

complexType ProgressControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:Range pli:Marquee
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element ProgressControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Orientation

element ProgressControl/Attributes/Orientation
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Horizontal
facets
enumeration | Horizontal
enumeration | Vertical
annotation
documentation
If Vertical, the Width and Height are inversed.

element ProgressControl/Range
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Minimum pli:Maximum
annotation
documentation
Creates a real progress bar with a defined range. This is the default.

element ProgressControl/Range/Minimum
type xs:int
properties
default 0

element ProgressControl/Range/Maximum
type xs:int
properties
default 100

element ProgressControl/Marquee
properties
minOcc | 0
maxOcc | 1
annotation
documentation
Creates a progress bar with a marker that moves automatically.

complexType RadioControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:Font pli:TextColor pli:Caption pli:CustomLook
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element RadioControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:IsNewGroup pli:DwmAnimations

element RadioControl/Attributes/IsNewGroup
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Set to true for the first radio in a group.

element RadioControl/Attributes/DwmAnimations
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Default
facets
enumeration | Default
enumeration | Allow
enumeration | Disallow
annotation
documentation
Specifies if transition animations are allowed for this control in Windows Vista and above.

element RadioControl/Font
diagram
properties
minOcc | 0
maxOcc | 1
children pli:FaceName pli:Bold pli:Italic pli:Underlined pli:Strikeout pli:Size
annotation
documentation
Changes various settings of the default font.

element RadioControl/Font/FaceName
type xs:string
properties
minOcc | 0
maxOcc | 1

element RadioControl/Font/Bold
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element RadioControl/Font/Italic
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element RadioControl/Font/Underlined
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element RadioControl/Font/Strikeout
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element RadioControl/Font/Size
type xs:double
properties
minOcc | 0
maxOcc | 1
default | 8
annotation
documentation
The size is in points.

element RadioControl/TextColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor
annotation
documentation
Alpha not supported.

element RadioControl/Caption
type xs:string
properties
minOcc | 0
maxOcc | 1

element RadioControl/CustomLook
diagram
children pli:FocusRect pli:Base pli:Normal pli:Hot pli:Pushed pli:Disabled
annotation
documentation
When using custom look, the control cannot be resized.

element RadioControl/CustomLook/FocusRect
diagram
children pli:Left pli:Top pli:Right pli:Bottom
annotation
documentation
Margins used to compute the position of the focus rectangle based on the position of the control.

element RadioControl/CustomLook/FocusRect/Left
type xs:int

element RadioControl/CustomLook/FocusRect/Top
type xs:int

element RadioControl/CustomLook/FocusRect/Right
type xs:int

element RadioControl/CustomLook/FocusRect/Bottom
type xs:int

element RadioControl/CustomLook/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Base elements are displayed for every state.

element RadioControl/CustomLook/Base/Element
diagram
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Normal
diagram |
children | pli:Base pli:Unchecked pli:Checked

 element RadioControl/CustomLook/Normal/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Displayed for checked and unchecked.

element RadioControl/CustomLook/Normal/Base/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Normal/Unchecked
diagram |
children | pli:Element

 element RadioControl/CustomLook/Normal/Unchecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Normal/Checked
diagram |
children | pli:Element

 element RadioControl/CustomLook/Normal/Checked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Hot
diagram |
children | pli:Base pli:Unchecked pli:Checked

 element RadioControl/CustomLook/Hot/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Displayed for checked and unchecked.

element RadioControl/CustomLook/Hot/Base/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Hot/Unchecked
diagram |
children | pli:Element

 element RadioControl/CustomLook/Hot/Unchecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Hot/Checked
diagram |
children | pli:Element

 element RadioControl/CustomLook/Hot/Checked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Pushed
diagram |
children | pli:Base pli:Unchecked pli:Checked

 element RadioControl/CustomLook/Pushed/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Displayed for checked and unchecked.

element RadioControl/CustomLook/Pushed/Base/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Pushed/Unchecked
diagram |
children | pli:Element

 element RadioControl/CustomLook/Pushed/Unchecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Pushed/Checked
diagram |
children | pli:Element

 element RadioControl/CustomLook/Pushed/Checked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Disabled
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Base pli:Unchecked pli:Checked

element RadioControl/CustomLook/Disabled/Base
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element
annotation
documentation
Displayed for checked and unchecked.

element RadioControl/CustomLook/Disabled/Base/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Disabled/Unchecked
diagram |
children | pli:Element

 element RadioControl/CustomLook/Disabled/Unchecked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element RadioControl/CustomLook/Disabled/Checked
diagram |
children | pli:Element

 element RadioControl/CustomLook/Disabled/Checked/Element
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

complexType RichEditControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:BorderColor pli:BackgroundColor pli:DefaultText
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element RichEditControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Align pli:HasBorder pli:Multiline pli:NumbersOnly pli:AcceptFiles pli:IsPassword pli:ReadOnly pli:WantReturn pli:HideSelection pli:HorizontalScroll pli:AlwaysShowScrollBars pli:TextMode pli:LeftIdent pli:AllowRTL

element RichEditControl/Attributes/Align
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | left
facets
enumeration | left
enumeration | center
enumeration | right

element RichEditControl/Attributes/HasBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element RichEditControl/Attributes/Multiline
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element RichEditControl/Attributes/NumbersOnly
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element RichEditControl/Attributes/AcceptFiles
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element RichEditControl/Attributes/IsPassword
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element RichEditControl/Attributes/ReadOnly
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element RichEditControl/Attributes/WantReturn
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
If true, the edit box will process the Enter Key.

element RichEditControl/Attributes/HideSelection
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element RichEditControl/Attributes/HorizontalScroll
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
If false, the text wraps automatically.

element RichEditControl/Attributes/AlwaysShowScrollBars
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element RichEditControl/Attributes/TextMode
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Plain Text
facets
enumeration | Plain Text
enumeration | Rich Text

element RichEditControl/Attributes/LeftIdent
type xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 4
annotation
documentation
Left margin indentation for the whole control, in pixels.

element RichEditControl/Attributes/AllowRTL
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
annotation
documentation
If false, the control will not be right-to-left in a right-to-left window.

element RichEditControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element RichEditControl/BackgroundColor
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element RichEditControl/DefaultText
type xs:string
properties
minOcc | 0
maxOcc | 1

complexType RichStaticControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:Color pli:BackgroundColor pli:Font pli:Caption
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true
annotation
documentation
This is a static control displaying the content of a windowless rich edit control.

element RichStaticControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Align pli:TrimText pli:WrapText

element RichStaticControl/Attributes/Align
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | left
facets
enumeration | left
enumeration | center
enumeration | right

element RichStaticControl/Attributes/TrimText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
annotation
documentation
Controls how to display the end of a string that does not fit in the given coordinates.

element RichStaticControl/Attributes/WrapText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
If WrapText is enabled, trimming is disabled.

element RichStaticControl/Color
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor
annotation
documentation
Transparency is not supported.

element RichStaticControl/BackgroundColor
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element RichStaticControl/Font
diagram
properties
minOcc | 0
maxOcc | 1
children pli:FaceName pli:Bold pli:Italic pli:Underlined pli:Strikeout

element RichStaticControl/Font/FaceName
type xs:string
properties
minOcc | 0
maxOcc | 1

element RichStaticControl/Font/Bold
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element RichStaticControl/Font/Italic
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element RichStaticControl/Font/Underlined
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element RichStaticControl/Font/Strikeout
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element RichStaticControl/Caption
type xs:string
properties
minOcc | 0
maxOcc | 1

complexType ScrollBarControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:VerticalBar pli:HorizontalBar
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element ScrollBarControl/VerticalBar
diagram
attributes
Name | Type | Use | Default | Fixed | annotation
Align | derived by: xs:string | optional | Right |  |

attribute ScrollBarControl/VerticalBar/@Align
type restriction of xs:string
properties
default | Right
use | optional
facets
enumeration | Left
enumeration | Right

element ScrollBarControl/HorizontalBar
diagram
attributes
Name | Type | Use | Default | Fixed | annotation
Align | derived by: xs:string | optional | Bottom |  |

attribute ScrollBarControl/HorizontalBar/@Align
type restriction of xs:string
properties
default | Bottom
use | optional
facets
enumeration | Top
enumeration | Bottom

complexType SliderControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:Range
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element SliderControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Orientation pli:TickMarks pli:AutoTicks pli:EnableSelRange

element SliderControl/Attributes/Orientation
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Horizontal
facets
enumeration | Horizontal
enumeration | Vertical
annotation
documentation
If Vertical, the Width and Height are inversed.

element SliderControl/Attributes/TickMarks
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Bottom
facets
enumeration | None
enumeration | Top
enumeration | Bottom

element SliderControl/Attributes/AutoTicks
type restriction of xs:unsignedByte
properties
minOcc | 0
maxOcc | 1
default | 25
facets
minInclusive | 0
maxInclusive | 100
annotation
documentation
This is a percentage of the total range. Set to 0 to disable auto ticks.

element SliderControl/Attributes/EnableSelRange
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element SliderControl/Range
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Minimum pli:Maximum

element SliderControl/Range/Minimum
type xs:int
properties
default 0

element SliderControl/Range/Maximum
type xs:int
properties
default 100

complexType SpinControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:Range
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element SpinControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Orientation pli:AllowWrap

element SpinControl/Attributes/Orientation
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Horizontal
facets
enumeration | Horizontal
enumeration | Vertical

element SpinControl/Attributes/AllowWrap
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Automaticaly wrap from the maximum to the minimum value when reached.

element SpinControl/Range
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Minimum pli:Maximum

element SpinControl/Range/Minimum
type xs:int

element SpinControl/Range/Maximum
type xs:int

complexType StaticControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:Color pli:Transparency pli:BackgroundColor pli:Font pli:Caption
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element StaticControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Align pli:AlignRTL pli:VAlign pli:Trimming pli:WrapText pli:AutoAdjustWidth

element StaticControl/Attributes/Align
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | left
facets
enumeration | left
enumeration | center
enumeration | right

element StaticControl/Attributes/AlignRTL
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | left
facets
enumeration | left
enumeration | center
enumeration | right
annotation
documentation
If specified, the control will be aligned with this setting instead if the window is right-to-left.

element StaticControl/Attributes/VAlign
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | top
facets
enumeration | top
enumeration | center
enumeration | bottom

element StaticControl/Attributes/Trimming
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | EllipsisChar
facets
enumeration | Character
enumeration | Word
enumeration | EllipsisChar
enumeration | EllipsisWord
enumeration | EllipsisPath
annotation
documentation
Controls how to display the end of a string that does not fit in the given coordinates.

element StaticControl/Attributes/WrapText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element StaticControl/Attributes/AutoAdjustWidth
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
The width of the control will be reduced if necessary so that the caption fits exactly.

element StaticControl/Color
diagram
type | pli:Color
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor
annotation
documentation
If this element is not present, the default color will be used.

element StaticControl/Transparency
type restriction of xs:unsignedInt
properties
default 255
facets
minInclusive | 0
maxInclusive | 255
annotation
documentation
Changes the Alpha value of the default color.

element StaticControl/BackgroundColor
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor
annotation
documentation
This element is required if using a transparent text color.

element StaticControl/Font
diagram
properties
minOcc | 0
maxOcc | 1
children pli:FaceName pli:Bold pli:Italic pli:Underlined pli:Strikeout pli:Size
annotation
documentation
Changes various settings of the default font.

element StaticControl/Font/FaceName
type xs:string
properties
minOcc | 0
maxOcc | 1

element StaticControl/Font/Bold
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element StaticControl/Font/Italic
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element StaticControl/Font/Underlined
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element StaticControl/Font/Strikeout
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element StaticControl/Font/Size
type xs:double
properties
minOcc | 0
maxOcc | 1
default | 8
annotation
documentation
The size is in points.

element StaticControl/Caption
type xs:string
properties
minOcc | 0
maxOcc | 1

complexType TextElement
diagram
type | extension of pli:Element
properties
base pli:Element
children | pli:Position pli:Attributes pli:Align pli:Color pli:Font pli:Text
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true
TranslationId

attribute TextElement/@TranslationId

element TextElement/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:ProcessHotkey pli:WrapText pli:Trimming

element TextElement/Attributes/ProcessHotkey
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Ampersand characters are used to possibily indicate text shortcuts.

element TextElement/Attributes/WrapText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element TextElement/Attributes/Trimming
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | EllipsisChar
facets
enumeration | Character
enumeration | Word
enumeration | EllipsisChar
enumeration | EllipsisWord
enumeration | EllipsisPath
annotation
documentation
Controls how to display the end of a string that does not fit in the given coordinates.

element TextElement/Align
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Horizontal pli:Vertical
annotation
documentation
A width or height must be specified for this parameter to have a meaning.

element TextElement/Align/Horizontal
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | left
facets
enumeration | left
enumeration | center
enumeration | right

element TextElement/Align/Vertical
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
facets
enumeration | top
enumeration | center
enumeration | bottom
annotation
documentation
Only valid when WrapText is false.

element TextElement/Color
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element TextElement/Font
diagram
properties
minOcc | 0
maxOcc | 1
children pli:FaceName pli:Bold pli:Italic pli:Underlined pli:Strikeout pli:Size
annotation
documentation
Changes various settings of the default font.

element TextElement/Font/FaceName
type xs:string
properties
minOcc | 0
maxOcc | 1

element TextElement/Font/Bold
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element TextElement/Font/Italic
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element TextElement/Font/Underlined
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element TextElement/Font/Strikeout
type xs:boolean
properties
minOcc | 0
maxOcc | 1

element TextElement/Font/Size
type xs:double
properties
minOcc | 0
maxOcc | 1
default | 8
annotation
documentation
The size is in points.

element TextElement/Text
properties
minOcc | 0
maxOcc | 1

complexType TreeViewControl
diagram
type | extension of pli:Control
properties
base pli:Control
children | pli:Position pli:Help pli:Attributes pli:BorderColor pli:Images
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element TreeViewControl/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:HasBorder pli:AcceptFiles pli:AlwaysShowSelection pli:AllowEditText pli:HotTrack pli:SingleExpand pli:HasButtons pli:HasLines pli:HasCheckboxes

element TreeViewControl/Attributes/HasBorder
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element TreeViewControl/Attributes/AcceptFiles
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element TreeViewControl/Attributes/AlwaysShowSelection
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element TreeViewControl/Attributes/AllowEditText
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element TreeViewControl/Attributes/HotTrack
type extension of xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
Display labels like links.

element TreeViewControl/Attributes/SingleExpand
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element TreeViewControl/Attributes/HasButtons
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element TreeViewControl/Attributes/HasLines
diagram
type extension of xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
attributes
Name | Type | Use | Default | Fixed | annotation
LineAtRoot | xs:boolean |  | true |  |

attribute TreeViewControl/Attributes/HasLines/@LineAtRoot
type xs:boolean
properties
default true

element TreeViewControl/Attributes/HasCheckboxes
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element TreeViewControl/BorderColor
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element TreeViewControl/Images
diagram
properties
minOcc | 0
maxOcc | 1
children pli:NormalIcons pli:StateIcons
annotation
documentation
The images here must be 32bits. Each list of image needs to have images of the same size.

element TreeViewControl/Images/NormalIcons
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Image

element TreeViewControl/Images/NormalIcons/Image
diagram
type | extension of pli:Image
properties
minOcc | 0
maxOcc | unbounded
children | pli:Name pli:Format
attributes
Name | Type | Use | Default | Fixed | annotation
Id | xs:string | required
IsOverlay xs:boolean false
documentation
An overlay is an icon displayed transparently on top of another one.

attribute TreeViewControl/Images/NormalIcons/Image/@Id
type xs:string
properties
use required

attribute TreeViewControl/Images/NormalIcons/Image/@IsOverlay
type xs:boolean
properties
default false
annotation
documentation
An overlay is an icon displayed transparently on top of another one.

element TreeViewControl/Images/StateIcons
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Image
annotation
documentation
A state icon is displayed next to another one.

element TreeViewControl/Images/StateIcons/Image
diagram
type | extension of pli:Image
properties
minOcc | 0
maxOcc | unbounded
children | pli:Name pli:Format
attributes
Name | Type | Use | Default | Fixed | annotation
Id | xs:string | required |  |  |

attribute TreeViewControl/Images/StateIcons/Image/@Id
type xs:string
properties
use required

complexType Window
diagram
children pli:Attributes pli:TitleBar pli:Position pli:DialogTmpl pli:WindowTmpl pli:ChildTmpl pli:Elements pli:ElementGroups pli:Controls
used by
element Interfaces/Window
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed. For scripts windows, punctuation is replaced by underscores.
Version xs:unsignedInt required
documentation
Used by the program to know is a custom interface is up to date.
TranslationSection xs:string
documentation
Use to override the name of the section where the translation for this window will be read.
Description | xs:string

attribute Window/@Id
type restriction of xs:string
properties
use required
facets
minLength 1
annotation
documentation
No spaces allowed. For scripts windows, punctuation is replaced by underscores.

attribute Window/@Version
type xs:unsignedInt
properties
use required
annotation
documentation
Used by the program to know is a custom interface is up to date.

attribute Window/@TranslationSection
type xs:string
annotation
documentation
Use to override the name of the section where the translation for this window will be read.

attribute Window/@Description
type xs:string

element Window/Attributes
diagram
properties
minOcc | 0
maxOcc | 1
children pli:TopMost pli:AcceptFiles pli:NoActivate pli:ShowInTaskbar pli:SetForeground pli:Caption pli:LockOnClick

element Window/Attributes/TopMost
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element Window/Attributes/AcceptFiles
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
If true, the window accepts drag and drops.

element Window/Attributes/NoActivate
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
If true, the window does not activate when selected.

element Window/Attributes/ShowInTaskbar
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element Window/Attributes/SetForeground
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element Window/Attributes/Caption
type xs:string
properties
minOcc | 0
maxOcc | 1
annotation
documentation
The Caption of the window is the name displayed by Windows is various places like the taskbar.

element Window/Attributes/LockOnClick
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true
annotation
documentation
Set to true to allow the user to move the window by clicking anywhere in it.

element Window/TitleBar
diagram
properties
minOcc | 0
maxOcc | 1
children pli:AllowMinimize pli:AllowMaximize pli:AllowClose pli:DisableOnDeactivate pli:DefaultBackground pli:Title

element Window/TitleBar/AllowMinimize
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element Window/TitleBar/AllowMaximize
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false

element Window/TitleBar/AllowClose
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element Window/TitleBar/DisableOnDeactivate
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element Window/TitleBar/DefaultBackground
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | true

element Window/TitleBar/Title
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Prefix pli:Text
attributes
Name | Type | Use | Default | Fixed | annotation
TopMargin | xs:int |  | 0 |  |

attribute Window/TitleBar/Title/@TopMargin
type xs:int
properties
default 0

element Window/TitleBar/Title/Prefix
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Full
facets
enumeration | Image
enumeration | Software
enumeration | Full
enumeration | None
enumeration | Neutral

element Window/TitleBar/Title/Text
type xs:string
properties
minOcc | 0
maxOcc | 1

element Window/Position
diagram
children pli:Resizeable pli:IsAbsolute
attributes
Name | Type | Use | Default | Fixed | annotation
Width | xs:unsignedInt | optional |  |  |
Height | xs:unsignedInt | optional |  |  |
ClientWidth | xs:unsignedInt | optional |  |  |
ClientHeight | xs:unsignedInt | optional |  |  |
InitialPos | derived by: xs:string | optional | CenteredParent |  |

attribute Window/Position/@InitialPos
type restriction of xs:string
properties
default | CenteredParent
use | optional
facets
enumeration | Normal
enumeration | CenteredParent
enumeration | CenteredScreen
enumeration | Minimised
enumeration | Maximised
enumeration | Random

element Window/Position/Resizeable
diagram
properties
minOcc | 0
maxOcc | 1
children pli:MinWidth pli:MinHeight
attributes
Name | Type | Use | Default | Fixed | annotation
Allowed | derived by: xs:string | required |  |  |

attribute Window/Position/Resizeable/@Allowed
type restriction of xs:string
properties
use required
facets
enumeration | NotResizeable
enumeration | Horizontal
enumeration | Vertical
enumeration | BothSides

element Window/Position/Resizeable/MinWidth
type restriction of xs:unsignedInt
facets
minExclusive 0

element Window/Position/Resizeable/MinHeight
type restriction of xs:unsignedInt
facets
minExclusive 0

element Window/Position/IsAbsolute
type xs:boolean
properties
minOcc | 0
maxOcc | 1
default | false
annotation
documentation
By default, coordinates are in dialog units. This parameter changes the unit to pixels.

element Window/DialogTmpl
diagram |
children | pli:BkgBrightness pli:BottomBar

 element Window/DialogTmpl/BkgBrightness
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Default
facets
enumeration | Default
enumeration | Light

element Window/DialogTmpl/BottomBar
diagram
properties
minOcc | 0
maxOcc | 1
children pli:LeftControls pli:RightControls
attributes
Name Type Use Default Fixed annotation
Style derived by: xs:string required
documentation
Changes the look of the bottom bar.

attribute Window/DialogTmpl/BottomBar/@Style
type restriction of xs:string
properties
use required
facets
enumeration | None
enumeration | Plain
enumeration | Light
enumeration | Default
annotation
documentation
Changes the look of the bottom bar.

element Window/DialogTmpl/BottomBar/LeftControls
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Margin pli:Control

element Window/DialogTmpl/BottomBar/LeftControls/Margin
type xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 10
annotation
documentation
Adjusts the space between this button and the last one.

element Window/DialogTmpl/BottomBar/LeftControls/Control
diagram
type | pli:Control
children | pli:Position pli:Help
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element Window/DialogTmpl/BottomBar/RightControls
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Margin pli:Control

element Window/DialogTmpl/BottomBar/RightControls/Margin
type xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 10
annotation
documentation
Adjusts the space between this button and the next one.

element Window/DialogTmpl/BottomBar/RightControls/Control
diagram
type | pli:Control
children | pli:Position pli:Help
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

element Window/WindowTmpl
diagram |
children | pli:Corners pli:Borders pli:BackgroundColor pli:BkgBrightness

 element Window/WindowTmpl/Corners
diagram
properties
minOcc | 0
maxOcc | 1
children pli:RoundSize
attributes
Name | Type | Use | Default | Fixed | annotation
Shape | derived by: xs:string | optional | Round |  |

attribute Window/WindowTmpl/Corners/@Shape
type restriction of xs:string
properties
default | Round
use | optional
facets
enumeration | Round
enumeration | Rectangular

element Window/WindowTmpl/Corners/RoundSize
type restriction of xs:unsignedInt
properties
minOcc | 0
maxOcc | 1
default | 7
facets
minInclusive | 1
maxInclusive | 31
annotation
documentation
Only valid if shape is Round. Must be an odd value.

element Window/WindowTmpl/Borders
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Color
attributes
Name | Type | Use | Default | Fixed | annotation
Type | derived by: xs:string |  | Simple |  |

attribute Window/WindowTmpl/Borders/@Type
type restriction of xs:string
properties
default Simple
facets
enumeration | None
enumeration | Simple
enumeration | Dialog
enumeration | DialogLight

element Window/WindowTmpl/Borders/Color
diagram
type | pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element Window/WindowTmpl/BackgroundColor
type | extension of pli:Color
properties
minOcc | 0
maxOcc | 1
children | pli:Red pli:Green pli:Blue pli:Alpha pli:BaseColor pli:GlobalColor

element Window/WindowTmpl/BkgBrightness
type restriction of xs:string
properties
minOcc | 0
maxOcc | 1
default | Default
facets
enumeration | Default
enumeration | Light

element Window/ChildTmpl
annotation
documentation
A window with this template must not have Attributes or TitleBar. It is only meant to be included in other windows.

element Window/Elements
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Element

element Window/Elements/Element
diagram
type | pli:Element
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element Window/ElementGroups
diagram
properties
minOcc | 0
maxOcc | 1
children pli:ElementGroup

element Window/ElementGroups/ElementGroup
diagram
type | pli:ElementGroup
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position pli:Transparency pli:Elements
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Visible | xs:boolean | true

element Window/Controls
diagram
properties
minOcc | 0
maxOcc | 1
children pli:Control

element Window/Controls/Control
diagram
type | pli:Control
properties
minOcc | 0
maxOcc | unbounded
children | pli:Position pli:Help
attributes
Name | Type | Use | Default | Fixed | annotation
Id derived by: xs:string required
documentation
No spaces allowed
Enabled | xs:boolean | optional | true
Visible | xs:boolean | true

attributeGroup ClientPos
used by
element Window/Position
attributes
Name | Type | Use | Default | Fixed | annotation
ClientWidth | xs:unsignedInt | optional |  |  |
ClientHeight | xs:unsignedInt | optional |  |  |
annotation
documentation
Use this group to specify the size of the client area of the window. New versions should always use this by default.

attributeGroup ScreenPos
used by
element Window/Position
attributes
Name | Type | Use | Default | Fixed | annotation
Width | xs:unsignedInt | optional |  |  |
Height | xs:unsignedInt | optional |  |  |
annotation
documentation
Use this group to specify a fixed size for the window's frame.


Objects Reference - Contact

Contact::ProfileColor

The Contact::ProfileColor property returns the color currently associated to a contact in Messenger. As a color can be selected by the current user as well as the contact himself in Windows Live Messenger 2009, Messenger Plus! uses multiple internal parameters to decide what color to return in this property (to match the color actually displayed by the Messenger client).

Syntax

This is a read/write property.
[number] ProfileColor;

Data Type

A number representing the color associated to the contact, in RGB format (0x00bbggrr).

Remarks

Even if Messenger internally identifies default colors with special numbers like -1, this property always returns a valid RGB color.

Property Information

Object | Contact
Availability | Messenger Plus! Live 4.80

See Also

Contact Object.


Objects Reference - PlusWnd

PlusWnd::BaseColor

The PlusWnd::BaseColor property lets you modify the base color of the window (used to paint the background).

Syntax

This is a write-only property.
[number] BaseColor;

Data Type

A number representing the color to use as base color, in RGB format (0x00bbggrr).

This property typically fails for the following reason:

  • The PlusWnd object refers to a window that has been destroyed.

Remarks

Windows that are used for one specific contact can be colorized with the contact's associated color by using its ProfileColor property. To set the base color on creation, it is recommended to create the window with the WNDOPT_INVISIBLE option.

Property Information

Object | PlusWnd
Availability | Messenger Plus! Live 4.80

See Also

PlusWnd Object , Contact.rofileColor.