Creating Idle Client project.
authorStephaneLenclud
Tue, 02 Feb 2016 19:50:33 +0100
changeset 189bedae992f4ee
parent 188 12372d6d7a47
child 190 60977f2b3ca7
Creating Idle Client project.
Clients/Idle/App.config
Clients/Idle/FormIdleClient.Designer.cs
Clients/Idle/FormIdleClient.cs
Clients/Idle/FormIdleClient.resx
Clients/Idle/Program.cs
Clients/Idle/Properties/AssemblyInfo.cs
Clients/Idle/Properties/Resources.Designer.cs
Clients/Idle/Properties/Resources.resx
Clients/Idle/Properties/Settings.Designer.cs
Clients/Idle/Properties/Settings.settings
Clients/Idle/SharpDisplayIdleClient.csproj
Server/MainForm.Designer.cs
Server/MainForm.cs
Server/MainForm.resx
Server/SharpDisplayManager.csproj
SharpDisplayManager.sln
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/Clients/Idle/App.config	Tue Feb 02 19:50:33 2016 +0100
     1.3 @@ -0,0 +1,6 @@
     1.4 +<?xml version="1.0" encoding="utf-8" ?>
     1.5 +<configuration>
     1.6 +    <startup> 
     1.7 +        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
     1.8 +    </startup>
     1.9 +</configuration>
    1.10 \ No newline at end of file
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/Clients/Idle/FormIdleClient.Designer.cs	Tue Feb 02 19:50:33 2016 +0100
     2.3 @@ -0,0 +1,47 @@
     2.4 +namespace SharpDisplayIdleClient
     2.5 +{
     2.6 +    partial class FormIdleClient
     2.7 +    {
     2.8 +        /// <summary>
     2.9 +        /// Required designer variable.
    2.10 +        /// </summary>
    2.11 +        private System.ComponentModel.IContainer components = null;
    2.12 +
    2.13 +        /// <summary>
    2.14 +        /// Clean up any resources being used.
    2.15 +        /// </summary>
    2.16 +        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    2.17 +        protected override void Dispose(bool disposing)
    2.18 +        {
    2.19 +            if (disposing && (components != null))
    2.20 +            {
    2.21 +                components.Dispose();
    2.22 +            }
    2.23 +            base.Dispose(disposing);
    2.24 +        }
    2.25 +
    2.26 +        #region Windows Form Designer generated code
    2.27 +
    2.28 +        /// <summary>
    2.29 +        /// Required method for Designer support - do not modify
    2.30 +        /// the contents of this method with the code editor.
    2.31 +        /// </summary>
    2.32 +        private void InitializeComponent()
    2.33 +        {
    2.34 +            this.SuspendLayout();
    2.35 +            // 
    2.36 +            // FormIdleClient
    2.37 +            // 
    2.38 +            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    2.39 +            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    2.40 +            this.ClientSize = new System.Drawing.Size(531, 303);
    2.41 +            this.Name = "FormIdleClient";
    2.42 +            this.Text = "Sharp Display Idle Client";
    2.43 +            this.ResumeLayout(false);
    2.44 +
    2.45 +        }
    2.46 +
    2.47 +        #endregion
    2.48 +    }
    2.49 +}
    2.50 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/Clients/Idle/FormIdleClient.cs	Tue Feb 02 19:50:33 2016 +0100
     3.3 @@ -0,0 +1,22 @@
     3.4 +using System;
     3.5 +using System.Collections.Generic;
     3.6 +using System.ComponentModel;
     3.7 +using System.Data;
     3.8 +using System.Drawing;
     3.9 +using System.Linq;
    3.10 +using System.Text;
    3.11 +using System.Threading.Tasks;
    3.12 +using System.Windows.Forms;
    3.13 +
    3.14 +namespace SharpDisplayIdleClient
    3.15 +{
    3.16 +    public partial class FormIdleClient : Form
    3.17 +    {
    3.18 +        public StartParams Params { get; set; }
    3.19 +
    3.20 +        public FormIdleClient()
    3.21 +        {
    3.22 +            InitializeComponent();
    3.23 +        }
    3.24 +    }
    3.25 +}
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/Clients/Idle/FormIdleClient.resx	Tue Feb 02 19:50:33 2016 +0100
     4.3 @@ -0,0 +1,120 @@
     4.4 +<?xml version="1.0" encoding="utf-8"?>
     4.5 +<root>
     4.6 +  <!-- 
     4.7 +    Microsoft ResX Schema 
     4.8 +    
     4.9 +    Version 2.0
    4.10 +    
    4.11 +    The primary goals of this format is to allow a simple XML format 
    4.12 +    that is mostly human readable. The generation and parsing of the 
    4.13 +    various data types are done through the TypeConverter classes 
    4.14 +    associated with the data types.
    4.15 +    
    4.16 +    Example:
    4.17 +    
    4.18 +    ... ado.net/XML headers & schema ...
    4.19 +    <resheader name="resmimetype">text/microsoft-resx</resheader>
    4.20 +    <resheader name="version">2.0</resheader>
    4.21 +    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    4.22 +    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    4.23 +    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    4.24 +    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    4.25 +    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
    4.26 +        <value>[base64 mime encoded serialized .NET Framework object]</value>
    4.27 +    </data>
    4.28 +    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    4.29 +        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
    4.30 +        <comment>This is a comment</comment>
    4.31 +    </data>
    4.32 +                
    4.33 +    There are any number of "resheader" rows that contain simple 
    4.34 +    name/value pairs.
    4.35 +    
    4.36 +    Each data row contains a name, and value. The row also contains a 
    4.37 +    type or mimetype. Type corresponds to a .NET class that support 
    4.38 +    text/value conversion through the TypeConverter architecture. 
    4.39 +    Classes that don't support this are serialized and stored with the 
    4.40 +    mimetype set.
    4.41 +    
    4.42 +    The mimetype is used for serialized objects, and tells the 
    4.43 +    ResXResourceReader how to depersist the object. This is currently not 
    4.44 +    extensible. For a given mimetype the value must be set accordingly:
    4.45 +    
    4.46 +    Note - application/x-microsoft.net.object.binary.base64 is the format 
    4.47 +    that the ResXResourceWriter will generate, however the reader can 
    4.48 +    read any of the formats listed below.
    4.49 +    
    4.50 +    mimetype: application/x-microsoft.net.object.binary.base64
    4.51 +    value   : The object must be serialized with 
    4.52 +            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
    4.53 +            : and then encoded with base64 encoding.
    4.54 +    
    4.55 +    mimetype: application/x-microsoft.net.object.soap.base64
    4.56 +    value   : The object must be serialized with 
    4.57 +            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
    4.58 +            : and then encoded with base64 encoding.
    4.59 +
    4.60 +    mimetype: application/x-microsoft.net.object.bytearray.base64
    4.61 +    value   : The object must be serialized into a byte array 
    4.62 +            : using a System.ComponentModel.TypeConverter
    4.63 +            : and then encoded with base64 encoding.
    4.64 +    -->
    4.65 +  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    4.66 +    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    4.67 +    <xsd:element name="root" msdata:IsDataSet="true">
    4.68 +      <xsd:complexType>
    4.69 +        <xsd:choice maxOccurs="unbounded">
    4.70 +          <xsd:element name="metadata">
    4.71 +            <xsd:complexType>
    4.72 +              <xsd:sequence>
    4.73 +                <xsd:element name="value" type="xsd:string" minOccurs="0" />
    4.74 +              </xsd:sequence>
    4.75 +              <xsd:attribute name="name" use="required" type="xsd:string" />
    4.76 +              <xsd:attribute name="type" type="xsd:string" />
    4.77 +              <xsd:attribute name="mimetype" type="xsd:string" />
    4.78 +              <xsd:attribute ref="xml:space" />
    4.79 +            </xsd:complexType>
    4.80 +          </xsd:element>
    4.81 +          <xsd:element name="assembly">
    4.82 +            <xsd:complexType>
    4.83 +              <xsd:attribute name="alias" type="xsd:string" />
    4.84 +              <xsd:attribute name="name" type="xsd:string" />
    4.85 +            </xsd:complexType>
    4.86 +          </xsd:element>
    4.87 +          <xsd:element name="data">
    4.88 +            <xsd:complexType>
    4.89 +              <xsd:sequence>
    4.90 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
    4.91 +                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
    4.92 +              </xsd:sequence>
    4.93 +              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
    4.94 +              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
    4.95 +              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
    4.96 +              <xsd:attribute ref="xml:space" />
    4.97 +            </xsd:complexType>
    4.98 +          </xsd:element>
    4.99 +          <xsd:element name="resheader">
   4.100 +            <xsd:complexType>
   4.101 +              <xsd:sequence>
   4.102 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   4.103 +              </xsd:sequence>
   4.104 +              <xsd:attribute name="name" type="xsd:string" use="required" />
   4.105 +            </xsd:complexType>
   4.106 +          </xsd:element>
   4.107 +        </xsd:choice>
   4.108 +      </xsd:complexType>
   4.109 +    </xsd:element>
   4.110 +  </xsd:schema>
   4.111 +  <resheader name="resmimetype">
   4.112 +    <value>text/microsoft-resx</value>
   4.113 +  </resheader>
   4.114 +  <resheader name="version">
   4.115 +    <value>2.0</value>
   4.116 +  </resheader>
   4.117 +  <resheader name="reader">
   4.118 +    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   4.119 +  </resheader>
   4.120 +  <resheader name="writer">
   4.121 +    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   4.122 +  </resheader>
   4.123 +</root>
   4.124 \ No newline at end of file
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/Clients/Idle/Program.cs	Tue Feb 02 19:50:33 2016 +0100
     5.3 @@ -0,0 +1,73 @@
     5.4 +//
     5.5 +// Copyright (C) 2014-2015 Stéphane Lenclud.
     5.6 +//
     5.7 +// This file is part of SharpDisplayManager.
     5.8 +//
     5.9 +// SharpDisplayManager is free software: you can redistribute it and/or modify
    5.10 +// it under the terms of the GNU General Public License as published by
    5.11 +// the Free Software Foundation, either version 3 of the License, or
    5.12 +// (at your option) any later version.
    5.13 +//
    5.14 +// SharpDisplayManager is distributed in the hope that it will be useful,
    5.15 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
    5.16 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    5.17 +// GNU General Public License for more details.
    5.18 +//
    5.19 +// You should have received a copy of the GNU General Public License
    5.20 +// along with SharpDisplayManager.  If not, see <http://www.gnu.org/licenses/>.
    5.21 +//
    5.22 +
    5.23 +using System;
    5.24 +using System.Collections.Generic;
    5.25 +using System.Linq;
    5.26 +using System.Threading.Tasks;
    5.27 +using System.Windows.Forms;
    5.28 +using System.Drawing;
    5.29 +
    5.30 +namespace SharpDisplayIdleClient
    5.31 +{
    5.32 +    static public class Program
    5.33 +    {
    5.34 +        /// <summary>
    5.35 +        /// The main entry point for the application.
    5.36 +        /// </summary>
    5.37 +        [STAThread]
    5.38 +        static public void Main()
    5.39 +        {
    5.40 +            //Set high priority to our process to avoid lags when rendering to our screen
    5.41 +            System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.AboveNormal;
    5.42 +
    5.43 +            Application.EnableVisualStyles();
    5.44 +            Application.SetCompatibleTextRenderingDefault(false);
    5.45 +            Application.Run(new FormIdleClient());
    5.46 +        }
    5.47 +
    5.48 +        [STAThread]
    5.49 +        static public void MainWithParams(object aParams)
    5.50 +        {
    5.51 +            //Set high priority to our process to avoid lags when rendering to our screen
    5.52 +            System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.AboveNormal;
    5.53 +
    5.54 +            Application.EnableVisualStyles();
    5.55 +            Application.SetCompatibleTextRenderingDefault(false);
    5.56 +            FormIdleClient form = new FormIdleClient();
    5.57 +            form.Params = (StartParams)aParams;
    5.58 +            Application.Run(form);
    5.59 +        }
    5.60 +
    5.61 +    }
    5.62 +
    5.63 +    public class StartParams
    5.64 +    {
    5.65 +        public StartParams(Point aLocation, string aTopText = "", string aBottomText = "")
    5.66 +        {
    5.67 +            TopText = aTopText;
    5.68 +            BottomText = aBottomText;
    5.69 +            Location = aLocation;
    5.70 +        }
    5.71 +
    5.72 +        public string TopText { get; set; }
    5.73 +        public string BottomText { get; set; }
    5.74 +        public Point Location { get; set; }
    5.75 +    }
    5.76 +}
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/Clients/Idle/Properties/AssemblyInfo.cs	Tue Feb 02 19:50:33 2016 +0100
     6.3 @@ -0,0 +1,36 @@
     6.4 +using System.Reflection;
     6.5 +using System.Runtime.CompilerServices;
     6.6 +using System.Runtime.InteropServices;
     6.7 +
     6.8 +// General Information about an assembly is controlled through the following 
     6.9 +// set of attributes. Change these attribute values to modify the information
    6.10 +// associated with an assembly.
    6.11 +[assembly: AssemblyTitle("SharpDisplayIdleClient")]
    6.12 +[assembly: AssemblyDescription("")]
    6.13 +[assembly: AssemblyConfiguration("")]
    6.14 +[assembly: AssemblyCompany("")]
    6.15 +[assembly: AssemblyProduct("SharpDisplayIdleClient")]
    6.16 +[assembly: AssemblyCopyright("Copyright ©  2016")]
    6.17 +[assembly: AssemblyTrademark("")]
    6.18 +[assembly: AssemblyCulture("")]
    6.19 +
    6.20 +// Setting ComVisible to false makes the types in this assembly not visible 
    6.21 +// to COM components.  If you need to access a type in this assembly from 
    6.22 +// COM, set the ComVisible attribute to true on that type.
    6.23 +[assembly: ComVisible(false)]
    6.24 +
    6.25 +// The following GUID is for the ID of the typelib if this project is exposed to COM
    6.26 +[assembly: Guid("a76579e5-aa8d-45a3-99e1-239a5c030a78")]
    6.27 +
    6.28 +// Version information for an assembly consists of the following four values:
    6.29 +//
    6.30 +//      Major Version
    6.31 +//      Minor Version 
    6.32 +//      Build Number
    6.33 +//      Revision
    6.34 +//
    6.35 +// You can specify all the values or you can default the Build and Revision Numbers 
    6.36 +// by using the '*' as shown below:
    6.37 +// [assembly: AssemblyVersion("1.0.*")]
    6.38 +[assembly: AssemblyVersion("1.0.0.0")]
    6.39 +[assembly: AssemblyFileVersion("1.0.0.0")]
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/Clients/Idle/Properties/Resources.Designer.cs	Tue Feb 02 19:50:33 2016 +0100
     7.3 @@ -0,0 +1,71 @@
     7.4 +//------------------------------------------------------------------------------
     7.5 +// <auto-generated>
     7.6 +//     This code was generated by a tool.
     7.7 +//     Runtime Version:4.0.30319.42000
     7.8 +//
     7.9 +//     Changes to this file may cause incorrect behavior and will be lost if
    7.10 +//     the code is regenerated.
    7.11 +// </auto-generated>
    7.12 +//------------------------------------------------------------------------------
    7.13 +
    7.14 +namespace SharpDisplayIdleClient.Properties
    7.15 +{
    7.16 +
    7.17 +
    7.18 +    /// <summary>
    7.19 +    ///   A strongly-typed resource class, for looking up localized strings, etc.
    7.20 +    /// </summary>
    7.21 +    // This class was auto-generated by the StronglyTypedResourceBuilder
    7.22 +    // class via a tool like ResGen or Visual Studio.
    7.23 +    // To add or remove a member, edit your .ResX file then rerun ResGen
    7.24 +    // with the /str option, or rebuild your VS project.
    7.25 +    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    7.26 +    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    7.27 +    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    7.28 +    internal class Resources
    7.29 +    {
    7.30 +
    7.31 +        private static global::System.Resources.ResourceManager resourceMan;
    7.32 +
    7.33 +        private static global::System.Globalization.CultureInfo resourceCulture;
    7.34 +
    7.35 +        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
    7.36 +        internal Resources()
    7.37 +        {
    7.38 +        }
    7.39 +
    7.40 +        /// <summary>
    7.41 +        ///   Returns the cached ResourceManager instance used by this class.
    7.42 +        /// </summary>
    7.43 +        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    7.44 +        internal static global::System.Resources.ResourceManager ResourceManager
    7.45 +        {
    7.46 +            get
    7.47 +            {
    7.48 +                if ((resourceMan == null))
    7.49 +                {
    7.50 +                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SharpDisplayIdleClient.Properties.Resources", typeof(Resources).Assembly);
    7.51 +                    resourceMan = temp;
    7.52 +                }
    7.53 +                return resourceMan;
    7.54 +            }
    7.55 +        }
    7.56 +
    7.57 +        /// <summary>
    7.58 +        ///   Overrides the current thread's CurrentUICulture property for all
    7.59 +        ///   resource lookups using this strongly typed resource class.
    7.60 +        /// </summary>
    7.61 +        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    7.62 +        internal static global::System.Globalization.CultureInfo Culture
    7.63 +        {
    7.64 +            get
    7.65 +            {
    7.66 +                return resourceCulture;
    7.67 +            }
    7.68 +            set
    7.69 +            {
    7.70 +                resourceCulture = value;
    7.71 +            }
    7.72 +        }
    7.73 +    }
    7.74 +}
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/Clients/Idle/Properties/Resources.resx	Tue Feb 02 19:50:33 2016 +0100
     8.3 @@ -0,0 +1,117 @@
     8.4 +<?xml version="1.0" encoding="utf-8"?>
     8.5 +<root>
     8.6 +  <!-- 
     8.7 +    Microsoft ResX Schema 
     8.8 +    
     8.9 +    Version 2.0
    8.10 +    
    8.11 +    The primary goals of this format is to allow a simple XML format 
    8.12 +    that is mostly human readable. The generation and parsing of the 
    8.13 +    various data types are done through the TypeConverter classes 
    8.14 +    associated with the data types.
    8.15 +    
    8.16 +    Example:
    8.17 +    
    8.18 +    ... ado.net/XML headers & schema ...
    8.19 +    <resheader name="resmimetype">text/microsoft-resx</resheader>
    8.20 +    <resheader name="version">2.0</resheader>
    8.21 +    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    8.22 +    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    8.23 +    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    8.24 +    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    8.25 +    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
    8.26 +        <value>[base64 mime encoded serialized .NET Framework object]</value>
    8.27 +    </data>
    8.28 +    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    8.29 +        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
    8.30 +        <comment>This is a comment</comment>
    8.31 +    </data>
    8.32 +                
    8.33 +    There are any number of "resheader" rows that contain simple 
    8.34 +    name/value pairs.
    8.35 +    
    8.36 +    Each data row contains a name, and value. The row also contains a 
    8.37 +    type or mimetype. Type corresponds to a .NET class that support 
    8.38 +    text/value conversion through the TypeConverter architecture. 
    8.39 +    Classes that don't support this are serialized and stored with the 
    8.40 +    mimetype set.
    8.41 +    
    8.42 +    The mimetype is used for serialized objects, and tells the 
    8.43 +    ResXResourceReader how to depersist the object. This is currently not 
    8.44 +    extensible. For a given mimetype the value must be set accordingly:
    8.45 +    
    8.46 +    Note - application/x-microsoft.net.object.binary.base64 is the format 
    8.47 +    that the ResXResourceWriter will generate, however the reader can 
    8.48 +    read any of the formats listed below.
    8.49 +    
    8.50 +    mimetype: application/x-microsoft.net.object.binary.base64
    8.51 +    value   : The object must be serialized with 
    8.52 +            : System.Serialization.Formatters.Binary.BinaryFormatter
    8.53 +            : and then encoded with base64 encoding.
    8.54 +    
    8.55 +    mimetype: application/x-microsoft.net.object.soap.base64
    8.56 +    value   : The object must be serialized with 
    8.57 +            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
    8.58 +            : and then encoded with base64 encoding.
    8.59 +
    8.60 +    mimetype: application/x-microsoft.net.object.bytearray.base64
    8.61 +    value   : The object must be serialized into a byte array 
    8.62 +            : using a System.ComponentModel.TypeConverter
    8.63 +            : and then encoded with base64 encoding.
    8.64 +    -->
    8.65 +  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    8.66 +    <xsd:element name="root" msdata:IsDataSet="true">
    8.67 +      <xsd:complexType>
    8.68 +        <xsd:choice maxOccurs="unbounded">
    8.69 +          <xsd:element name="metadata">
    8.70 +            <xsd:complexType>
    8.71 +              <xsd:sequence>
    8.72 +                <xsd:element name="value" type="xsd:string" minOccurs="0" />
    8.73 +              </xsd:sequence>
    8.74 +              <xsd:attribute name="name" type="xsd:string" />
    8.75 +              <xsd:attribute name="type" type="xsd:string" />
    8.76 +              <xsd:attribute name="mimetype" type="xsd:string" />
    8.77 +            </xsd:complexType>
    8.78 +          </xsd:element>
    8.79 +          <xsd:element name="assembly">
    8.80 +            <xsd:complexType>
    8.81 +              <xsd:attribute name="alias" type="xsd:string" />
    8.82 +              <xsd:attribute name="name" type="xsd:string" />
    8.83 +            </xsd:complexType>
    8.84 +          </xsd:element>
    8.85 +          <xsd:element name="data">
    8.86 +            <xsd:complexType>
    8.87 +              <xsd:sequence>
    8.88 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
    8.89 +                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
    8.90 +              </xsd:sequence>
    8.91 +              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
    8.92 +              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
    8.93 +              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
    8.94 +            </xsd:complexType>
    8.95 +          </xsd:element>
    8.96 +          <xsd:element name="resheader">
    8.97 +            <xsd:complexType>
    8.98 +              <xsd:sequence>
    8.99 +                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
   8.100 +              </xsd:sequence>
   8.101 +              <xsd:attribute name="name" type="xsd:string" use="required" />
   8.102 +            </xsd:complexType>
   8.103 +          </xsd:element>
   8.104 +        </xsd:choice>
   8.105 +      </xsd:complexType>
   8.106 +    </xsd:element>
   8.107 +  </xsd:schema>
   8.108 +  <resheader name="resmimetype">
   8.109 +    <value>text/microsoft-resx</value>
   8.110 +  </resheader>
   8.111 +  <resheader name="version">
   8.112 +    <value>2.0</value>
   8.113 +  </resheader>
   8.114 +  <resheader name="reader">
   8.115 +    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   8.116 +  </resheader>
   8.117 +  <resheader name="writer">
   8.118 +    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   8.119 +  </resheader>
   8.120 +</root>
   8.121 \ No newline at end of file
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/Clients/Idle/Properties/Settings.Designer.cs	Tue Feb 02 19:50:33 2016 +0100
     9.3 @@ -0,0 +1,30 @@
     9.4 +//------------------------------------------------------------------------------
     9.5 +// <auto-generated>
     9.6 +//     This code was generated by a tool.
     9.7 +//     Runtime Version:4.0.30319.42000
     9.8 +//
     9.9 +//     Changes to this file may cause incorrect behavior and will be lost if
    9.10 +//     the code is regenerated.
    9.11 +// </auto-generated>
    9.12 +//------------------------------------------------------------------------------
    9.13 +
    9.14 +namespace SharpDisplayIdleClient.Properties
    9.15 +{
    9.16 +
    9.17 +
    9.18 +    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    9.19 +    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
    9.20 +    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
    9.21 +    {
    9.22 +
    9.23 +        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
    9.24 +
    9.25 +        public static Settings Default
    9.26 +        {
    9.27 +            get
    9.28 +            {
    9.29 +                return defaultInstance;
    9.30 +            }
    9.31 +        }
    9.32 +    }
    9.33 +}
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/Clients/Idle/Properties/Settings.settings	Tue Feb 02 19:50:33 2016 +0100
    10.3 @@ -0,0 +1,7 @@
    10.4 +<?xml version='1.0' encoding='utf-8'?>
    10.5 +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
    10.6 +  <Profiles>
    10.7 +    <Profile Name="(Default)" />
    10.8 +  </Profiles>
    10.9 +  <Settings />
   10.10 +</SettingsFile>
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/Clients/Idle/SharpDisplayIdleClient.csproj	Tue Feb 02 19:50:33 2016 +0100
    11.3 @@ -0,0 +1,90 @@
    11.4 +<?xml version="1.0" encoding="utf-8"?>
    11.5 +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    11.6 +  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
    11.7 +  <PropertyGroup>
    11.8 +    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    11.9 +    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
   11.10 +    <ProjectGuid>{A76579E5-AA8D-45A3-99E1-239A5C030A78}</ProjectGuid>
   11.11 +    <OutputType>WinExe</OutputType>
   11.12 +    <AppDesignerFolder>Properties</AppDesignerFolder>
   11.13 +    <RootNamespace>SharpDisplayIdleClient</RootNamespace>
   11.14 +    <AssemblyName>SharpDisplayIdleClient</AssemblyName>
   11.15 +    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
   11.16 +    <FileAlignment>512</FileAlignment>
   11.17 +    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   11.18 +  </PropertyGroup>
   11.19 +  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
   11.20 +    <PlatformTarget>AnyCPU</PlatformTarget>
   11.21 +    <DebugSymbols>true</DebugSymbols>
   11.22 +    <DebugType>full</DebugType>
   11.23 +    <Optimize>false</Optimize>
   11.24 +    <OutputPath>bin\Debug\</OutputPath>
   11.25 +    <DefineConstants>DEBUG;TRACE</DefineConstants>
   11.26 +    <ErrorReport>prompt</ErrorReport>
   11.27 +    <WarningLevel>4</WarningLevel>
   11.28 +  </PropertyGroup>
   11.29 +  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
   11.30 +    <PlatformTarget>AnyCPU</PlatformTarget>
   11.31 +    <DebugType>pdbonly</DebugType>
   11.32 +    <Optimize>true</Optimize>
   11.33 +    <OutputPath>bin\Release\</OutputPath>
   11.34 +    <DefineConstants>TRACE</DefineConstants>
   11.35 +    <ErrorReport>prompt</ErrorReport>
   11.36 +    <WarningLevel>4</WarningLevel>
   11.37 +  </PropertyGroup>
   11.38 +  <ItemGroup>
   11.39 +    <Reference Include="System" />
   11.40 +    <Reference Include="System.Core" />
   11.41 +    <Reference Include="System.Xml.Linq" />
   11.42 +    <Reference Include="System.Data.DataSetExtensions" />
   11.43 +    <Reference Include="Microsoft.CSharp" />
   11.44 +    <Reference Include="System.Data" />
   11.45 +    <Reference Include="System.Deployment" />
   11.46 +    <Reference Include="System.Drawing" />
   11.47 +    <Reference Include="System.Net.Http" />
   11.48 +    <Reference Include="System.Windows.Forms" />
   11.49 +    <Reference Include="System.Xml" />
   11.50 +  </ItemGroup>
   11.51 +  <ItemGroup>
   11.52 +    <Compile Include="FormIdleClient.cs">
   11.53 +      <SubType>Form</SubType>
   11.54 +    </Compile>
   11.55 +    <Compile Include="FormIdleClient.Designer.cs">
   11.56 +      <DependentUpon>FormIdleClient.cs</DependentUpon>
   11.57 +    </Compile>
   11.58 +    <Compile Include="Program.cs" />
   11.59 +    <Compile Include="Properties\AssemblyInfo.cs" />
   11.60 +    <EmbeddedResource Include="FormIdleClient.resx">
   11.61 +      <DependentUpon>FormIdleClient.cs</DependentUpon>
   11.62 +    </EmbeddedResource>
   11.63 +    <EmbeddedResource Include="Properties\Resources.resx">
   11.64 +      <Generator>ResXFileCodeGenerator</Generator>
   11.65 +      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
   11.66 +      <SubType>Designer</SubType>
   11.67 +    </EmbeddedResource>
   11.68 +    <Compile Include="Properties\Resources.Designer.cs">
   11.69 +      <AutoGen>True</AutoGen>
   11.70 +      <DependentUpon>Resources.resx</DependentUpon>
   11.71 +    </Compile>
   11.72 +    <None Include="Properties\Settings.settings">
   11.73 +      <Generator>SettingsSingleFileGenerator</Generator>
   11.74 +      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
   11.75 +    </None>
   11.76 +    <Compile Include="Properties\Settings.Designer.cs">
   11.77 +      <AutoGen>True</AutoGen>
   11.78 +      <DependentUpon>Settings.settings</DependentUpon>
   11.79 +      <DesignTimeSharedInput>True</DesignTimeSharedInput>
   11.80 +    </Compile>
   11.81 +  </ItemGroup>
   11.82 +  <ItemGroup>
   11.83 +    <None Include="App.config" />
   11.84 +  </ItemGroup>
   11.85 +  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   11.86 +  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
   11.87 +       Other similar extension points exist, see Microsoft.Common.targets.
   11.88 +  <Target Name="BeforeBuild">
   11.89 +  </Target>
   11.90 +  <Target Name="AfterBuild">
   11.91 +  </Target>
   11.92 +  -->
   11.93 +</Project>
   11.94 \ No newline at end of file
    12.1 --- a/Server/MainForm.Designer.cs	Tue Feb 02 18:59:45 2016 +0100
    12.2 +++ b/Server/MainForm.Designer.cs	Tue Feb 02 19:50:33 2016 +0100
    12.3 @@ -111,6 +111,7 @@
    12.4              this.labelFontHeight = new System.Windows.Forms.Label();
    12.5              this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    12.6              this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
    12.7 +            this.iButtonStartIdleClient = new System.Windows.Forms.Button();
    12.8              this.panelDisplay.SuspendLayout();
    12.9              this.iTableLayoutPanel.SuspendLayout();
   12.10              this.statusStrip.SuspendLayout();
   12.11 @@ -244,6 +245,7 @@
   12.12              // 
   12.13              // tabPageClients
   12.14              // 
   12.15 +            this.tabPageClients.Controls.Add(this.iButtonStartIdleClient);
   12.16              this.tabPageClients.Controls.Add(this.buttonCloseClients);
   12.17              this.tabPageClients.Controls.Add(this.buttonStartClient);
   12.18              this.tabPageClients.Controls.Add(this.iTreeViewClients);
   12.19 @@ -257,9 +259,9 @@
   12.20              // 
   12.21              // buttonCloseClients
   12.22              // 
   12.23 -            this.buttonCloseClients.Location = new System.Drawing.Point(6, 35);
   12.24 +            this.buttonCloseClients.Location = new System.Drawing.Point(6, 213);
   12.25              this.buttonCloseClients.Name = "buttonCloseClients";
   12.26 -            this.buttonCloseClients.Size = new System.Drawing.Size(75, 23);
   12.27 +            this.buttonCloseClients.Size = new System.Drawing.Size(96, 23);
   12.28              this.buttonCloseClients.TabIndex = 20;
   12.29              this.buttonCloseClients.Text = "Close Clients";
   12.30              this.buttonCloseClients.UseVisualStyleBackColor = true;
   12.31 @@ -269,7 +271,7 @@
   12.32              // 
   12.33              this.buttonStartClient.Location = new System.Drawing.Point(6, 6);
   12.34              this.buttonStartClient.Name = "buttonStartClient";
   12.35 -            this.buttonStartClient.Size = new System.Drawing.Size(75, 23);
   12.36 +            this.buttonStartClient.Size = new System.Drawing.Size(96, 23);
   12.37              this.buttonStartClient.TabIndex = 19;
   12.38              this.buttonStartClient.Text = "Start Client";
   12.39              this.buttonStartClient.UseVisualStyleBackColor = true;
   12.40 @@ -280,9 +282,9 @@
   12.41              this.iTreeViewClients.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
   12.42              | System.Windows.Forms.AnchorStyles.Left) 
   12.43              | System.Windows.Forms.AnchorStyles.Right)));
   12.44 -            this.iTreeViewClients.Location = new System.Drawing.Point(87, 6);
   12.45 +            this.iTreeViewClients.Location = new System.Drawing.Point(108, 6);
   12.46              this.iTreeViewClients.Name = "iTreeViewClients";
   12.47 -            this.iTreeViewClients.Size = new System.Drawing.Size(499, 233);
   12.48 +            this.iTreeViewClients.Size = new System.Drawing.Size(478, 233);
   12.49              this.iTreeViewClients.TabIndex = 0;
   12.50              this.iTreeViewClients.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewClients_AfterSelect);
   12.51              // 
   12.52 @@ -933,6 +935,16 @@
   12.53              // 
   12.54              this.openFileDialog.Filter = "EXE files (*.exe)|*.exe|All files (*.*)|*.*";
   12.55              // 
   12.56 +            // iButtonStartIdleClient
   12.57 +            // 
   12.58 +            this.iButtonStartIdleClient.Location = new System.Drawing.Point(6, 35);
   12.59 +            this.iButtonStartIdleClient.Name = "iButtonStartIdleClient";
   12.60 +            this.iButtonStartIdleClient.Size = new System.Drawing.Size(96, 23);
   12.61 +            this.iButtonStartIdleClient.TabIndex = 21;
   12.62 +            this.iButtonStartIdleClient.Text = "Start Idle Client";
   12.63 +            this.iButtonStartIdleClient.UseVisualStyleBackColor = true;
   12.64 +            this.iButtonStartIdleClient.Click += new System.EventHandler(this.ButtonStartIdleClient_Click);
   12.65 +            // 
   12.66              // MainForm
   12.67              // 
   12.68              this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
   12.69 @@ -1053,6 +1065,7 @@
   12.70          private System.Windows.Forms.ComboBox comboBoxHdmiPort;
   12.71          private System.Windows.Forms.CheckBox checkBoxCecMonitorOn;
   12.72          private System.Windows.Forms.CheckBox checkBoxCecMonitorOff;
   12.73 +        private System.Windows.Forms.Button iButtonStartIdleClient;
   12.74      }
   12.75  }
   12.76  
    13.1 --- a/Server/MainForm.cs	Tue Feb 02 18:59:45 2016 +0100
    13.2 +++ b/Server/MainForm.cs	Tue Feb 02 19:50:33 2016 +0100
    13.3 @@ -1435,6 +1435,18 @@
    13.4  			BringToFront();
    13.5  		}
    13.6  
    13.7 +        /// <summary>
    13.8 +        /// Just launch our idle client.
    13.9 +        /// </summary>
   13.10 +        private void StartIdleClient(string aTopText = "", string aBottomText = "")
   13.11 +        {
   13.12 +            Thread clientThread = new Thread(SharpDisplayIdleClient.Program.MainWithParams);
   13.13 +            SharpDisplayIdleClient.StartParams myParams = new SharpDisplayIdleClient.StartParams(new Point(this.Right, this.Top), aTopText, aBottomText);
   13.14 +            clientThread.Start(myParams);
   13.15 +            BringToFront();
   13.16 +        }
   13.17 +
   13.18 +
   13.19          private void buttonStartClient_Click(object sender, EventArgs e)
   13.20          {
   13.21  			StartNewClient();
   13.22 @@ -2514,5 +2526,10 @@
   13.23                  Properties.Settings.Default.CecMonitorOff);
   13.24              }
   13.25          }
   13.26 +
   13.27 +        private void ButtonStartIdleClient_Click(object sender, EventArgs e)
   13.28 +        {
   13.29 +            StartIdleClient();
   13.30 +        }
   13.31      }
   13.32  }
    14.1 --- a/Server/MainForm.resx	Tue Feb 02 18:59:45 2016 +0100
    14.2 +++ b/Server/MainForm.resx	Tue Feb 02 19:50:33 2016 +0100
    14.3 @@ -185,6 +185,9 @@
    14.4          WSC3/b/CbwiR/gNzbuWksIMBOAAAAABJRU5ErkJggg==
    14.5  </value>
    14.6    </data>
    14.7 +  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    14.8 +    <value>315, 17</value>
    14.9 +  </metadata>
   14.10    <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
   14.11      <value>405, 17</value>
   14.12    </metadata>
    15.1 --- a/Server/SharpDisplayManager.csproj	Tue Feb 02 18:59:45 2016 +0100
    15.2 +++ b/Server/SharpDisplayManager.csproj	Tue Feb 02 19:50:33 2016 +0100
    15.3 @@ -218,6 +218,10 @@
    15.4      <None Include="SharpDisplayManager_TemporaryKey.pfx" />
    15.5    </ItemGroup>
    15.6    <ItemGroup>
    15.7 +    <ProjectReference Include="..\Clients\Idle\SharpDisplayIdleClient.csproj">
    15.8 +      <Project>{a76579e5-aa8d-45a3-99e1-239a5c030a78}</Project>
    15.9 +      <Name>SharpDisplayIdleClient</Name>
   15.10 +    </ProjectReference>
   15.11      <ProjectReference Include="..\Client\SharpDisplayClient.csproj">
   15.12        <Project>{7ee64074-8cdb-4448-b40c-81b75d6b31cd}</Project>
   15.13        <Name>SharpDisplayClient</Name>
    16.1 --- a/SharpDisplayManager.sln	Tue Feb 02 18:59:45 2016 +0100
    16.2 +++ b/SharpDisplayManager.sln	Tue Feb 02 19:50:33 2016 +0100
    16.3 @@ -1,7 +1,7 @@
    16.4  
    16.5  Microsoft Visual Studio Solution File, Format Version 12.00
    16.6  # Visual Studio 14
    16.7 -VisualStudioVersion = 14.0.23107.0
    16.8 +VisualStudioVersion = 14.0.24720.0
    16.9  MinimumVisualStudioVersion = 10.0.40219.1
   16.10  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayManager", "Server\SharpDisplayManager.csproj", "{1DA8C1B3-18C5-4E74-BE4E-0B0E15FBAF49}"
   16.11  EndProject
   16.12 @@ -11,6 +11,8 @@
   16.13  EndProject
   16.14  Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{22C920A9-2352-4DC9-91E2-035EBD712866}"
   16.15  EndProject
   16.16 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpDisplayIdleClient", "Clients\Idle\SharpDisplayIdleClient.csproj", "{A76579E5-AA8D-45A3-99E1-239A5C030A78}"
   16.17 +EndProject
   16.18  Global
   16.19  	GlobalSection(SolutionConfigurationPlatforms) = preSolution
   16.20  		Debug|Any CPU = Debug|Any CPU
   16.21 @@ -61,6 +63,18 @@
   16.22  		{22C920A9-2352-4DC9-91E2-035EBD712866}.Release|Any CPU.ActiveCfg = Release
   16.23  		{22C920A9-2352-4DC9-91E2-035EBD712866}.Release|x64.ActiveCfg = Release
   16.24  		{22C920A9-2352-4DC9-91E2-035EBD712866}.Release|x86.ActiveCfg = Release
   16.25 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
   16.26 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Debug|Any CPU.Build.0 = Debug|Any CPU
   16.27 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Debug|x64.ActiveCfg = Debug|Any CPU
   16.28 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Debug|x64.Build.0 = Debug|Any CPU
   16.29 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Debug|x86.ActiveCfg = Debug|Any CPU
   16.30 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Debug|x86.Build.0 = Debug|Any CPU
   16.31 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|Any CPU.ActiveCfg = Release|Any CPU
   16.32 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|Any CPU.Build.0 = Release|Any CPU
   16.33 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|x64.ActiveCfg = Release|Any CPU
   16.34 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|x64.Build.0 = Release|Any CPU
   16.35 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|x86.ActiveCfg = Release|Any CPU
   16.36 +		{A76579E5-AA8D-45A3-99E1-239A5C030A78}.Release|x86.Build.0 = Release|Any CPU
   16.37  	EndGlobalSection
   16.38  	GlobalSection(SolutionProperties) = preSolution
   16.39  		HideSolutionNode = FALSE