diff options
Diffstat (limited to 'MediaBrowser.Installer/Code')
| -rw-r--r-- | MediaBrowser.Installer/Code/DownloadAnimation.xaml | 39 | ||||
| -rw-r--r-- | MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs | 68 | ||||
| -rw-r--r-- | MediaBrowser.Installer/Code/Images/computer_256.png | bin | 15143 -> 0 bytes | |||
| -rw-r--r-- | MediaBrowser.Installer/Code/Images/internet-globe.jpg | bin | 9125 -> 0 bytes | |||
| -rw-r--r-- | MediaBrowser.Installer/Code/Images/mb3logo800.png | bin | 35600 -> 0 bytes | |||
| -rw-r--r-- | MediaBrowser.Installer/Code/ModelExtensions.cs | 43 | ||||
| -rw-r--r-- | MediaBrowser.Installer/Code/PackageInfo.cs | 119 | ||||
| -rw-r--r-- | MediaBrowser.Installer/Code/PackageType.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Installer/Code/PackageVersionClass.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Installer/Code/PackageVersionInfo.cs | 73 | ||||
| -rw-r--r-- | MediaBrowser.Installer/Code/ShellLinkNative.cs | 277 | ||||
| -rw-r--r-- | MediaBrowser.Installer/Code/ShellShortcut.cs | 348 |
12 files changed, 0 insertions, 1009 deletions
diff --git a/MediaBrowser.Installer/Code/DownloadAnimation.xaml b/MediaBrowser.Installer/Code/DownloadAnimation.xaml deleted file mode 100644 index 26a0ca677..000000000 --- a/MediaBrowser.Installer/Code/DownloadAnimation.xaml +++ /dev/null @@ -1,39 +0,0 @@ -<UserControl x:Class="MediaBrowser.Installer.Code.DownloadAnimation" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - mc:Ignorable="d" Height="129.167" Width="421.27"> - <UserControl.Resources> - <Style TargetType="Ellipse"> - <Setter Property="Fill" Value="LightGray" /> - <Setter Property="Width" Value="8" /> - <Setter Property="Height" Value="8" /> - </Style> - </UserControl.Resources> - <Canvas Height="58" Width="275"> - <Ellipse Canvas.Left="63" Canvas.Top="23" /> - <Ellipse Canvas.Left="77" Canvas.Top="23" /> - <Ellipse Canvas.Left="91" Canvas.Top="23" /> - <Ellipse Canvas.Left="105" Canvas.Top="23" /> - <Ellipse Canvas.Left="119" Canvas.Top="23" /> - <Ellipse Canvas.Left="133" Canvas.Top="23" /> - <Ellipse Canvas.Left="147" Canvas.Top="23" /> - <Ellipse Canvas.Left="161" Canvas.Top="23" /> - <Ellipse Canvas.Left="175" Canvas.Top="23" /> - <Ellipse Canvas.Left="189" Canvas.Top="23" /> - <Ellipse Canvas.Left="203" Canvas.Top="23" /> - <Ellipse Canvas.Left="217" Canvas.Top="23" /> - <Canvas Canvas.Left="17" Canvas.Top="19" - Name="SlidingCanvas" Height="17" Width="46"> - <Ellipse Canvas.Left="4" Canvas.Top="4" Fill="Orange" /> - <Ellipse Canvas.Left="18" Canvas.Top="4" Fill="Orange" /> - <Ellipse Canvas.Left="32" Canvas.Top="4" Fill="Orange" /> - </Canvas> - <Image Canvas.Left="-42" Canvas.Top="-19" - Source="Images\internet-globe.jpg" Stretch="None" Height="94" Width="100" RenderTransformOrigin="0.341,0.403" /> - <Image Canvas.Left="231" Canvas.Top="-25" - Source="Images\computer_256.png" Height="100" Width="100" Stretch="None" /> - </Canvas> - -</UserControl> diff --git a/MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs b/MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs deleted file mode 100644 index 8fa890816..000000000 --- a/MediaBrowser.Installer/Code/DownloadAnimation.xaml.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; -using System.Windows.Threading; - -namespace MediaBrowser.Installer.Code -{ - /// <summary> - /// Interaction logic for DownloadAnimation.xaml - /// </summary> - public partial class DownloadAnimation : UserControl - { - private int _i; - private readonly double _startPos; - private readonly DispatcherTimer _timer; - - public DownloadAnimation() - { - _i = 0; - InitializeComponent(); - - // Store start position of sliding canvas - _startPos = Canvas.GetLeft(SlidingCanvas); - - // Create animation timer - _timer = new DispatcherTimer {Interval = TimeSpan.FromMilliseconds(100)}; - _timer.Tick += TimerTick; - } - - public void StartAnimation() - { - _timer.Start(); - } - - public void StopAnimation() - { - _timer.Stop(); - } - - private void TimerTick(object sender, EventArgs e) - { - _i++; - - if (_i < 16) - { - // Move SlidingCanvas containing the three colored dots 14 units to the right - Canvas.SetLeft(SlidingCanvas, Canvas.GetLeft(SlidingCanvas) + 14); - } - else - { - // Move SlidingCanvas back to its starting position and reset counter - _i = 0; - Canvas.SetLeft(SlidingCanvas, _startPos); - } - } - } -} diff --git a/MediaBrowser.Installer/Code/Images/computer_256.png b/MediaBrowser.Installer/Code/Images/computer_256.png Binary files differdeleted file mode 100644 index 42f3c22fa..000000000 --- a/MediaBrowser.Installer/Code/Images/computer_256.png +++ /dev/null diff --git a/MediaBrowser.Installer/Code/Images/internet-globe.jpg b/MediaBrowser.Installer/Code/Images/internet-globe.jpg Binary files differdeleted file mode 100644 index 26d064d7b..000000000 --- a/MediaBrowser.Installer/Code/Images/internet-globe.jpg +++ /dev/null diff --git a/MediaBrowser.Installer/Code/Images/mb3logo800.png b/MediaBrowser.Installer/Code/Images/mb3logo800.png Binary files differdeleted file mode 100644 index fbc769a6f..000000000 --- a/MediaBrowser.Installer/Code/Images/mb3logo800.png +++ /dev/null diff --git a/MediaBrowser.Installer/Code/ModelExtensions.cs b/MediaBrowser.Installer/Code/ModelExtensions.cs deleted file mode 100644 index 66e51ec11..000000000 --- a/MediaBrowser.Installer/Code/ModelExtensions.cs +++ /dev/null @@ -1,43 +0,0 @@ - -using System.Collections.Generic; - -namespace MediaBrowser.Installer.Code -{ - /// <summary> - /// Class ModelExtensions - /// </summary> - static class ModelExtensions - { - /// <summary> - /// Values the or default. - /// </summary> - /// <param name="str">The STR.</param> - /// <param name="def">The def.</param> - /// <returns>System.String.</returns> - public static string ValueOrDefault(this string str, string def = "") - { - return string.IsNullOrEmpty(str) ? def : str; - } - - /// <summary> - /// Helper method for Dictionaries since they throw on not-found keys - /// </summary> - /// <typeparam name="T"></typeparam> - /// <typeparam name="U"></typeparam> - /// <param name="dictionary">The dictionary.</param> - /// <param name="key">The key.</param> - /// <param name="defaultValue">The default value.</param> - /// <returns>``1.</returns> - public static U GetValueOrDefault<T, U>(this Dictionary<T, U> dictionary, T key, U defaultValue) - { - U val; - if (!dictionary.TryGetValue(key, out val)) - { - val = defaultValue; - } - return val; - - } - - } -} diff --git a/MediaBrowser.Installer/Code/PackageInfo.cs b/MediaBrowser.Installer/Code/PackageInfo.cs deleted file mode 100644 index adfe54dd6..000000000 --- a/MediaBrowser.Installer/Code/PackageInfo.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace MediaBrowser.Installer.Code -{ - /// <summary> - /// Class PackageInfo - /// </summary> - public class PackageInfo - { - /// <summary> - /// Gets or sets the name. - /// </summary> - /// <value>The name.</value> - public string name { get; set; } - - /// <summary> - /// Gets or sets the short description. - /// </summary> - /// <value>The short description.</value> - public string shortDescription { get; set; } - - /// <summary> - /// Gets or sets the overview. - /// </summary> - /// <value>The overview.</value> - public string overview { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether this instance is premium. - /// </summary> - /// <value><c>true</c> if this instance is premium; otherwise, <c>false</c>.</value> - public bool isPremium { get; set; } - - /// <summary> - /// Gets or sets the rich desc URL. - /// </summary> - /// <value>The rich desc URL.</value> - public string richDescUrl { get; set; } - - /// <summary> - /// Gets or sets the thumb image. - /// </summary> - /// <value>The thumb image.</value> - public string thumbImage { get; set; } - - /// <summary> - /// Gets or sets the preview image. - /// </summary> - /// <value>The preview image.</value> - public string previewImage { get; set; } - - /// <summary> - /// Gets or sets the type. - /// </summary> - /// <value>The type.</value> - public PackageType type { get; set; } - - /// <summary> - /// Gets or sets the target filename. - /// </summary> - /// <value>The target filename.</value> - public string targetFilename { get; set; } - - /// <summary> - /// Gets or sets the owner. - /// </summary> - /// <value>The owner.</value> - public string owner { get; set; } - - /// <summary> - /// Gets or sets the category. - /// </summary> - /// <value>The category.</value> - public string category { get; set; } - - /// <summary> - /// Gets or sets the catalog tile color. - /// </summary> - /// <value>The owner.</value> - public string tileColor { get; set; } - - /// <summary> - /// Gets or sets the feature id of this package (if premium). - /// </summary> - /// <value>The feature id.</value> - public string featureId { get; set; } - - /// <summary> - /// Gets or sets the registration info for this package (if premium). - /// </summary> - /// <value>The registration info.</value> - public string regInfo { get; set; } - - /// <summary> - /// Gets or sets the price for this package (if premium). - /// </summary> - /// <value>The price.</value> - public float price { get; set; } - - /// <summary> - /// Gets or sets whether or not this package is registered. - /// </summary> - /// <value>True if registered.</value> - public bool isRegistered { get; set; } - - /// <summary> - /// Gets or sets the expiration date for this package. - /// </summary> - /// <value>Expiration Date.</value> - public DateTime expDate { get; set; } - - /// <summary> - /// Gets or sets the versions. - /// </summary> - /// <value>The versions.</value> - public List<PackageVersionInfo> versions { get; set; } - } -} diff --git a/MediaBrowser.Installer/Code/PackageType.cs b/MediaBrowser.Installer/Code/PackageType.cs deleted file mode 100644 index 964025a73..000000000 --- a/MediaBrowser.Installer/Code/PackageType.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace MediaBrowser.Installer.Code -{ - /// <summary> - /// Enum PackageType - /// </summary> - public enum PackageType - { - /// <summary> - /// All - /// </summary> - All, - /// <summary> - /// The system - /// </summary> - System, - /// <summary> - /// The user installed - /// </summary> - UserInstalled - } -}
\ No newline at end of file diff --git a/MediaBrowser.Installer/Code/PackageVersionClass.cs b/MediaBrowser.Installer/Code/PackageVersionClass.cs deleted file mode 100644 index d046e5c60..000000000 --- a/MediaBrowser.Installer/Code/PackageVersionClass.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace MediaBrowser.Installer.Code -{ - /// <summary> - /// Enum PackageVersionClass - /// </summary> - public enum PackageVersionClass - { - /// <summary> - /// The release - /// </summary> - Release = 0, - /// <summary> - /// The beta - /// </summary> - Beta = 1, - /// <summary> - /// The dev - /// </summary> - Dev = 2 - } -}
\ No newline at end of file diff --git a/MediaBrowser.Installer/Code/PackageVersionInfo.cs b/MediaBrowser.Installer/Code/PackageVersionInfo.cs deleted file mode 100644 index d26c217ca..000000000 --- a/MediaBrowser.Installer/Code/PackageVersionInfo.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Runtime.Serialization; - -namespace MediaBrowser.Installer.Code -{ - /// <summary> - /// Class PackageVersionInfo - /// </summary> - public class PackageVersionInfo - { - /// <summary> - /// Gets or sets the name. - /// </summary> - /// <value>The name.</value> - public string name { get; set; } - - /// <summary> - /// Gets or sets the version STR. - /// </summary> - /// <value>The version STR.</value> - public string versionStr { get; set; } - - /// <summary> - /// The _version - /// </summary> - private Version _version; - /// <summary> - /// Gets or sets the version. - /// Had to make this an interpreted property since Protobuf can't handle Version - /// </summary> - /// <value>The version.</value> - public Version version - { - get { return _version ?? (_version = new Version(versionStr.ValueOrDefault("0.0.0.1"))); } - } - - /// <summary> - /// Gets or sets the classification. - /// </summary> - /// <value>The classification.</value> - public PackageVersionClass classification { get; set; } - - /// <summary> - /// Gets or sets the description. - /// </summary> - /// <value>The description.</value> - public string description { get; set; } - - /// <summary> - /// Gets or sets the required version STR. - /// </summary> - /// <value>The required version STR.</value> - public string requiredVersionStr { get; set; } - - /// <summary> - /// Gets or sets the source URL. - /// </summary> - /// <value>The source URL.</value> - public string sourceUrl { get; set; } - - /// <summary> - /// Gets or sets the source URL. - /// </summary> - /// <value>The source URL.</value> - public Guid checksum { get; set; } - - /// <summary> - /// Gets or sets the target filename. - /// </summary> - /// <value>The target filename.</value> - public string targetFilename { get; set; } - } -} diff --git a/MediaBrowser.Installer/Code/ShellLinkNative.cs b/MediaBrowser.Installer/Code/ShellLinkNative.cs deleted file mode 100644 index d603fe3a5..000000000 --- a/MediaBrowser.Installer/Code/ShellLinkNative.cs +++ /dev/null @@ -1,277 +0,0 @@ -/************************************************************************** -* -* Filename: ShellLinkNative.cs -* Author: Mattias Sjögren (mattias@mvps.org) -* http://www.msjogren.net/dotnet/ -* -* Description: Defines the native types used to manipulate shell shortcuts. -* -* Public types: enum SLR_FLAGS -* enum SLGP_FLAGS -* struct WIN32_FIND_DATA[A|W] -* interface IPersistFile -* interface IShellLink[A|W] -* class ShellLink -* -* -* Copyright ©2001-2002, Mattias Sjögren -* -**************************************************************************/ - -using System; -using System.Runtime.InteropServices; -using System.Text; -using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME; - -namespace MediaBrowser.Installer.Code -{ - // IShellLink.Resolve fFlags - [Flags()] - public enum SLR_FLAGS - { - SLR_NO_UI = 0x1, - SLR_ANY_MATCH = 0x2, - SLR_UPDATE = 0x4, - SLR_NOUPDATE = 0x8, - SLR_NOSEARCH = 0x10, - SLR_NOTRACK = 0x20, - SLR_NOLINKINFO = 0x40, - SLR_INVOKE_MSI = 0x80 - } - - // IShellLink.GetPath fFlags - [Flags()] - public enum SLGP_FLAGS - { - SLGP_SHORTPATH = 0x1, - SLGP_UNCPRIORITY = 0x2, - SLGP_RAWPATH = 0x4 - } - - [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] - public struct WIN32_FIND_DATAA - { - public int dwFileAttributes; - public FILETIME ftCreationTime; - public FILETIME ftLastAccessTime; - public FILETIME ftLastWriteTime; - public int nFileSizeHigh; - public int nFileSizeLow; - public int dwReserved0; - public int dwReserved1; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst=MAX_PATH)] - public string cFileName; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst=14)] - public string cAlternateFileName; - private const int MAX_PATH = 260; - } - - [StructLayoutAttribute(LayoutKind.Sequential, CharSet=CharSet.Unicode)] - public struct WIN32_FIND_DATAW - { - public int dwFileAttributes; - public FILETIME ftCreationTime; - public FILETIME ftLastAccessTime; - public FILETIME ftLastWriteTime; - public int nFileSizeHigh; - public int nFileSizeLow; - public int dwReserved0; - public int dwReserved1; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst=MAX_PATH)] - public string cFileName; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst=14)] - public string cAlternateFileName; - private const int MAX_PATH = 260; - } - - [ - ComImport(), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown), - Guid("0000010B-0000-0000-C000-000000000046") - ] - public interface IPersistFile - { - #region Methods inherited from IPersist - - void GetClassID( - out Guid pClassID); - - #endregion - - [PreserveSig()] - int IsDirty(); - - void Load( - [MarshalAs(UnmanagedType.LPWStr)] string pszFileName, - int dwMode); - - void Save( - [MarshalAs(UnmanagedType.LPWStr)] string pszFileName, - [MarshalAs(UnmanagedType.Bool)] bool fRemember); - - void SaveCompleted( - [MarshalAs(UnmanagedType.LPWStr)] string pszFileName); - - void GetCurFile( - out IntPtr ppszFileName); - - } - - [ - ComImport(), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown), - Guid("000214EE-0000-0000-C000-000000000046") - ] - public interface IShellLinkA - { - void GetPath( - [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszFile, - int cchMaxPath, - out WIN32_FIND_DATAA pfd, - SLGP_FLAGS fFlags); - - void GetIDList( - out IntPtr ppidl); - - void SetIDList( - IntPtr pidl); - - void GetDescription( - [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszName, - int cchMaxName); - - void SetDescription( - [MarshalAs(UnmanagedType.LPStr)] string pszName); - - void GetWorkingDirectory( - [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszDir, - int cchMaxPath); - - void SetWorkingDirectory( - [MarshalAs(UnmanagedType.LPStr)] string pszDir); - - void GetArguments( - [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszArgs, - int cchMaxPath); - - void SetArguments( - [MarshalAs(UnmanagedType.LPStr)] string pszArgs); - - void GetHotkey( - out short pwHotkey); - - void SetHotkey( - short wHotkey); - - void GetShowCmd( - out int piShowCmd); - - void SetShowCmd( - int iShowCmd); - - void GetIconLocation( - [Out(), MarshalAs(UnmanagedType.LPStr)] StringBuilder pszIconPath, - int cchIconPath, - out int piIcon); - - void SetIconLocation( - [MarshalAs(UnmanagedType.LPStr)] string pszIconPath, - int iIcon); - - void SetRelativePath( - [MarshalAs(UnmanagedType.LPStr)] string pszPathRel, - int dwReserved); - - void Resolve( - IntPtr hwnd, - SLR_FLAGS fFlags); - - void SetPath( - [MarshalAs(UnmanagedType.LPStr)] string pszFile); - - } - - [ - ComImport(), - InterfaceType(ComInterfaceType.InterfaceIsIUnknown), - Guid("000214F9-0000-0000-C000-000000000046") - ] - public interface IShellLinkW - { - void GetPath( - [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszFile, - int cchMaxPath, - out WIN32_FIND_DATAW pfd, - SLGP_FLAGS fFlags); - - void GetIDList( - out IntPtr ppidl); - - void SetIDList( - IntPtr pidl); - - void GetDescription( - [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszName, - int cchMaxName); - - void SetDescription( - [MarshalAs(UnmanagedType.LPWStr)] string pszName); - - void GetWorkingDirectory( - [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszDir, - int cchMaxPath); - - void SetWorkingDirectory( - [MarshalAs(UnmanagedType.LPWStr)] string pszDir); - - void GetArguments( - [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszArgs, - int cchMaxPath); - - void SetArguments( - [MarshalAs(UnmanagedType.LPWStr)] string pszArgs); - - void GetHotkey( - out short pwHotkey); - - void SetHotkey( - short wHotkey); - - void GetShowCmd( - out int piShowCmd); - - void SetShowCmd( - int iShowCmd); - - void GetIconLocation( - [Out(), MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszIconPath, - int cchIconPath, - out int piIcon); - - void SetIconLocation( - [MarshalAs(UnmanagedType.LPWStr)] string pszIconPath, - int iIcon); - - void SetRelativePath( - [MarshalAs(UnmanagedType.LPWStr)] string pszPathRel, - int dwReserved); - - void Resolve( - IntPtr hwnd, - SLR_FLAGS fFlags); - - void SetPath( - [MarshalAs(UnmanagedType.LPWStr)] string pszFile); - - } - - - [ - ComImport(), - Guid("00021401-0000-0000-C000-000000000046") - ] - public class ShellLink // : IPersistFile, IShellLinkA, IShellLinkW - { - } - -} diff --git a/MediaBrowser.Installer/Code/ShellShortcut.cs b/MediaBrowser.Installer/Code/ShellShortcut.cs deleted file mode 100644 index 33b60732c..000000000 --- a/MediaBrowser.Installer/Code/ShellShortcut.cs +++ /dev/null @@ -1,348 +0,0 @@ -/************************************************************************** -* -* Filename: ShellShortcut.cs -* Author: Mattias Sjögren (mattias@mvps.org) -* http://www.msjogren.net/dotnet/ -* -* Description: Defines a .NET friendly class, ShellShortcut, for reading -* and writing shortcuts. -* Define the conditional compilation symbol UNICODE to use -* IShellLinkW internally. -* -* Public types: class ShellShortcut -* -* -* Dependencies: ShellLinkNative.cs -* -* -* Copyright ©2001-2002, Mattias Sjögren -* -**************************************************************************/ - -using System; -using System.Diagnostics; -using System.Drawing; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; -using System.Windows.Forms; - - -namespace MediaBrowser.Installer.Code -{ - /// <remarks> - /// .NET friendly wrapper for the ShellLink class - /// </remarks> - public class ShellShortcut : IDisposable - { - private const int INFOTIPSIZE = 1024; - private const int MAX_PATH = 260; - - private const int SW_SHOWNORMAL = 1; - private const int SW_SHOWMINIMIZED = 2; - private const int SW_SHOWMAXIMIZED = 3; - private const int SW_SHOWMINNOACTIVE = 7; - - - #if UNICODE - private IShellLinkW m_Link; - #else - private IShellLinkA m_Link; - #endif - private string m_sPath; - - /// - /// <param name='linkPath'> - /// Path to new or existing shortcut file (.lnk). - /// </param> - /// - public ShellShortcut(string linkPath) - { - IPersistFile pf; - - m_sPath = linkPath; - - #if UNICODE - m_Link = (IShellLinkW) new ShellLink(); - #else - m_Link = (IShellLinkA) new ShellLink(); - #endif - - if ( File.Exists( linkPath ) ) { - pf = (IPersistFile)m_Link; - pf.Load( linkPath, 0 ); - } - - } - - // - // IDisplosable implementation - // - public void Dispose() - { - if ( m_Link != null ) { - Marshal.ReleaseComObject( m_Link ); - m_Link = null; - } - } - - /// <value> - /// Gets or sets the argument list of the shortcut. - /// </value> - public string Arguments - { - get - { - StringBuilder sb = new StringBuilder( INFOTIPSIZE ); - m_Link.GetArguments( sb, sb.Capacity ); - return sb.ToString(); - } - set { m_Link.SetArguments( value ); } - } - - /// <value> - /// Gets or sets a description of the shortcut. - /// </value> - public string Description - { - get - { - StringBuilder sb = new StringBuilder( INFOTIPSIZE ); - m_Link.GetDescription( sb, sb.Capacity ); - return sb.ToString(); - } - set { m_Link.SetDescription( value ); } - } - - /// <value> - /// Gets or sets the working directory (aka start in directory) of the shortcut. - /// </value> - public string WorkingDirectory - { - get - { - StringBuilder sb = new StringBuilder( MAX_PATH ); - m_Link.GetWorkingDirectory( sb, sb.Capacity ); - return sb.ToString(); - } - set { m_Link.SetWorkingDirectory( value ); } - } - - // - // If Path returns an empty string, the shortcut is associated with - // a PIDL instead, which can be retrieved with IShellLink.GetIDList(). - // This is beyond the scope of this wrapper class. - // - /// <value> - /// Gets or sets the target path of the shortcut. - /// </value> - public string Path - { - get - { - #if UNICODE - WIN32_FIND_DATAW wfd = new WIN32_FIND_DATAW(); - #else - WIN32_FIND_DATAA wfd = new WIN32_FIND_DATAA(); - #endif - StringBuilder sb = new StringBuilder( MAX_PATH ); - - m_Link.GetPath( sb, sb.Capacity, out wfd, SLGP_FLAGS.SLGP_UNCPRIORITY ); - return sb.ToString(); - } - set { m_Link.SetPath( value ); } - } - - /// <value> - /// Gets or sets the path of the <see cref="Icon"/> assigned to the shortcut. - /// </value> - /// <summary> - /// <seealso cref="IconIndex"/> - /// </summary> - public string IconPath - { - get - { - StringBuilder sb = new StringBuilder( MAX_PATH ); - int nIconIdx; - m_Link.GetIconLocation( sb, sb.Capacity, out nIconIdx ); - return sb.ToString(); - } - set { m_Link.SetIconLocation( value, IconIndex ); } - } - - /// <value> - /// Gets or sets the index of the <see cref="Icon"/> assigned to the shortcut. - /// Set to zero when the <see cref="IconPath"/> property specifies a .ICO file. - /// </value> - /// <summary> - /// <seealso cref="IconPath"/> - /// </summary> - public int IconIndex - { - get - { - StringBuilder sb = new StringBuilder( MAX_PATH ); - int nIconIdx; - m_Link.GetIconLocation( sb, sb.Capacity, out nIconIdx ); - return nIconIdx; - } - set { m_Link.SetIconLocation( IconPath, value ); } - } - - /// <value> - /// Retrieves the Icon of the shortcut as it will appear in Explorer. - /// Use the <see cref="IconPath"/> and <see cref="IconIndex"/> - /// properties to change it. - /// </value> - public Icon Icon - { - get - { - StringBuilder sb = new StringBuilder( MAX_PATH ); - int nIconIdx; - IntPtr hIcon, hInst; - Icon ico, clone; - - - m_Link.GetIconLocation( sb, sb.Capacity, out nIconIdx ); - hInst = Marshal.GetHINSTANCE( this.GetType().Module ); - hIcon = Native.ExtractIcon( hInst, sb.ToString(), nIconIdx ); - if ( hIcon == IntPtr.Zero ) - return null; - - // Return a cloned Icon, because we have to free the original ourselves. - ico = Icon.FromHandle( hIcon ); - clone = (Icon)ico.Clone(); - ico.Dispose(); - Native.DestroyIcon( hIcon ); - return clone; - } - } - - /// <value> - /// Gets or sets the System.Diagnostics.ProcessWindowStyle value - /// that decides the initial show state of the shortcut target. Note that - /// ProcessWindowStyle.Hidden is not a valid property value. - /// </value> - public ProcessWindowStyle WindowStyle - { - get - { - int nWS; - m_Link.GetShowCmd( out nWS ); - - switch ( nWS ) { - case SW_SHOWMINIMIZED: - case SW_SHOWMINNOACTIVE: - return ProcessWindowStyle.Minimized; - - case SW_SHOWMAXIMIZED: - return ProcessWindowStyle.Maximized; - - default: - return ProcessWindowStyle.Normal; - } - } - set - { - int nWS; - - switch ( value ) { - case ProcessWindowStyle.Normal: - nWS = SW_SHOWNORMAL; - break; - - case ProcessWindowStyle.Minimized: - nWS = SW_SHOWMINNOACTIVE; - break; - - case ProcessWindowStyle.Maximized: - nWS = SW_SHOWMAXIMIZED; - break; - - default: // ProcessWindowStyle.Hidden - throw new ArgumentException("Unsupported ProcessWindowStyle value."); - } - - m_Link.SetShowCmd( nWS ); - - } - } - - /// <value> - /// Gets or sets the hotkey for the shortcut. - /// </value> - public Keys Hotkey - { - get - { - short wHotkey; - int dwHotkey; - - m_Link.GetHotkey( out wHotkey ); - - // - // Convert from IShellLink 16-bit format to Keys enumeration 32-bit value - // IShellLink: 0xMMVK - // Keys: 0x00MM00VK - // MM = Modifier (Alt, Control, Shift) - // VK = Virtual key code - // - dwHotkey = ((wHotkey & 0xFF00) << 8) | (wHotkey & 0xFF); - return (Keys) dwHotkey; - } - set - { - short wHotkey; - - if ( (value & Keys.Modifiers) == 0 ) - throw new ArgumentException("Hotkey must include a modifier key."); - - // - // Convert from Keys enumeration 32-bit value to IShellLink 16-bit format - // IShellLink: 0xMMVK - // Keys: 0x00MM00VK - // MM = Modifier (Alt, Control, Shift) - // VK = Virtual key code - // - wHotkey = unchecked((short) ( ((int) (value & Keys.Modifiers) >> 8) | (int) (value & Keys.KeyCode) )); - m_Link.SetHotkey( wHotkey ); - - } - } - - /// <summary> - /// Saves the shortcut to disk. - /// </summary> - public void Save() - { - IPersistFile pf = (IPersistFile) m_Link; - pf.Save( m_sPath, true ); - } - - /// <summary> - /// Returns a reference to the internal ShellLink object, - /// which can be used to perform more advanced operations - /// not supported by this wrapper class, by using the - /// IShellLink interface directly. - /// </summary> - public object ShellLink - { - get { return m_Link; } - } - - - #region Native Win32 API functions - private class Native - { - [DllImport("shell32.dll", CharSet=CharSet.Auto)] - public static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex); - - [DllImport("user32.dll")] - public static extern bool DestroyIcon(IntPtr hIcon); - } - #endregion - - } -} |
