Advertisement
AlFas

TaskBarIconProgress API

Oct 26th, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.22 KB | None | 0 0
  1.  
  2.     public static class TaskbarProgress
  3.     {
  4.         public enum TaskbarStates
  5.         {
  6.             NoProgress = 0,
  7.             Indeterminate = 0x1,
  8.             Normal = 0x2,
  9.             Error = 0x4,
  10.             Paused = 0x8
  11.         }
  12.  
  13.         [ComImportAttribute()]
  14.         [GuidAttribute("ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf")]
  15.         [InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
  16.         private interface ITaskbarList3
  17.         {
  18.             // ITaskbarList
  19.             [PreserveSig]
  20.             void HrInit();
  21.             [PreserveSig]
  22.             void AddTab(IntPtr hwnd);
  23.             [PreserveSig]
  24.             void DeleteTab(IntPtr hwnd);
  25.             [PreserveSig]
  26.             void ActivateTab(IntPtr hwnd);
  27.             [PreserveSig]
  28.             void SetActiveAlt(IntPtr hwnd);
  29.  
  30.             // ITaskbarList2
  31.             [PreserveSig]
  32.             void MarkFullscreenWindow(IntPtr hwnd, [MarshalAs(UnmanagedType.Bool)] bool fFullscreen);
  33.  
  34.             // ITaskbarList3
  35.             [PreserveSig]
  36.             void SetProgressValue(IntPtr hwnd, UInt64 ullCompleted, UInt64 ullTotal);
  37.             [PreserveSig]
  38.             void SetProgressState(IntPtr hwnd, TaskbarStates state);
  39.         }
  40.  
  41.         [GuidAttribute("56FDF344-FD6D-11d0-958A-006097C9A090")]
  42.         [ClassInterfaceAttribute(ClassInterfaceType.None)]
  43.         [ComImportAttribute()]
  44.         private class TaskbarInstance
  45.         {
  46.         }
  47.  
  48.         private static ITaskbarList3 taskbarInstance = (ITaskbarList3)new TaskbarInstance();
  49.         private static bool taskbarSupported = Environment.OSVersion.Version >= new Version(6, 1);
  50.  
  51.         /// <summary>Used to change the TaskBarIcon's state.</summary>
  52.         public static void SetState(IntPtr windowHandle, TaskbarStates taskbarState)
  53.         {
  54.             if (taskbarSupported) taskbarInstance.SetProgressState(windowHandle, taskbarState);
  55.         }
  56.  
  57.         /// <summary>Used to change the TaskBarIcon's progress.</summary>
  58.         public static void SetValue(IntPtr windowHandle, double progressValue, double progressMax)
  59.         {
  60.             if (taskbarSupported) taskbarInstance.SetProgressValue(windowHandle, (ulong)progressValue, (ulong)progressMax);
  61.         }
  62.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement