static Taskbar() { if (Environment.OSVersion.Version >= new Version(6, 1)) { Interface = new TaskbarList3() as ITaskbarList3; } }
public static ulong GetProgressValue(IntPtr hwnd) { ITaskbarList3 taskbarInstance = (ITaskbarList3) new TaskbarInstance(); var foo = taskbarInstance.GetProgressValue(hwnd); return(foo); }
/// <summary>Static constructor.</summary> static TaskbarProgress() { object instance = new TaskbarInstance(); taskbar = (instance as ITaskbarList3); active = Environment.OSVersion.Version >= new Version(6, 1); }
static Taskbar() { if(Environment.OSVersion.Version >= new Version(6, 1)) { Interface = new TaskbarList3() as ITaskbarList3; } }
public TaskbarItemInfo() { if (!DesignerProperties.GetIsInDesignMode(this)) { ITaskbarList taskbarList = null; try { taskbarList = CLSID.CoCreateInstance <ITaskbarList>(CLSID.TaskbarList); taskbarList.HrInit(); // This QI will only work on Win7. _taskbarList = taskbarList as ITaskbarList3; taskbarList = null; } finally { Utility.SafeRelease(ref taskbarList); } _overlaySize = new Size( NativeMethods.GetSystemMetrics(SM.CXSMICON), NativeMethods.GetSystemMetrics(SM.CYSMICON)); } // Set ThumbButtons to an empty list so callers can just use the property. ThumbButtonInfos = new ThumbButtonInfoCollection(); }
private static ITaskbarList3 Instance() { if (_TaskbarInstance == null) { _TaskbarInstance = (ITaskbarList3) new TaskbarInstance(); } return(_TaskbarInstance); }
public static void SetValue(IntPtr windowHandle, double progressValue, double progressMax) { if (taskbarSupported) { if (taskbarInstance == null) taskbarInstance = (ITaskbarList3)new TaskbarInstance(); taskbarInstance.SetProgressValue(windowHandle, (ulong)progressValue, (ulong)progressMax); } }
public static void SetState(IntPtr windowHandle, TaskbarStates taskbarState) { taskbarInstance = (ITaskbarList3) new TaskbarInstance(); if (taskbarSupported) { taskbarInstance.SetProgressState(windowHandle, taskbarState); } }
public static void SetValue(IntPtr windowHandle, double progressValue, double progressMax) { taskbarInstance = (ITaskbarList3) new TaskbarInstance(); if (taskbarSupported) { taskbarInstance.SetProgressValue(windowHandle, (ulong)progressValue, (ulong)progressMax); } }
public void Dispose() { if (instance != null) { Marshal.ReleaseComObject(instance); instance = null; } }
public static void SetState(IntPtr windowHandle, TaskbarStates taskbarState) { if (taskbarSupported) { if (taskbarInstance == null) taskbarInstance = (ITaskbarList3)new TaskbarInstance(); taskbarInstance.SetProgressState(windowHandle, taskbarState); } }
static TaskbarHandler() { supported = Environment.OSVersion.Version >= new Version(6, 1); if (supported) { instance = (ITaskbarList3) new TaskbarInstance(); } }
private static void SetStateUnsafe(IntPtr handle, TaskbarState state) { // ReSharper disable once SuspiciousTypeConversion.Global if (_instance == null) { _instance = new TaskbarInstance() as ITaskbarList3; } _instance?.SetProgressState(handle, state); }
private static void SetValueUnsafe(IntPtr handle, ulong value, ulong max) { // ReSharper disable once SuspiciousTypeConversion.Global if (_instance == null) { _instance = new TaskbarInstance() as ITaskbarList3; } _instance?.SetProgressValue(handle, value, max); }
//mxd private static bool TaskBarSupported() { if (!checkperformed) { checkperformed = true; taskbarsupported = true; try { taskbarinstance = (ITaskbarList3) new TaskbarInstance(); } catch { taskbarsupported = false; } } return(taskbarsupported); }
public void Dispose() { if (this.TaskBar != null) { Marshal.ReleaseComObject(this.TaskBar); } this.TaskBar = null; if (this.FForm != null) { this.FForm.HandleCreated -= new EventHandler(this.Form_HandleCreated); } this.FForm = null; }
/// <summary> /// default constructor, initializes the GUI components /// </summary> public ProgressWindow(JobTypes type) { // // Required for Windows Form Designer support // InitializeComponent(); isUserClosing = true; if ((Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor >= 1) || Environment.OSVersion.Version.Major > 6) { taskbarProgress = (ITaskbarList3) new ProgressTaskbar(); } }
private static bool EnsureInitialized() { if(m_bInitialized) return (m_tbList != null); try { m_tbList = (ITaskbarList3)(new CTaskbarList()); m_tbList.HrInit(); } catch(Exception) { m_tbList = null; } m_bInitialized = true; return (m_tbList != null); }
private static bool EnsureInitialized() { if (m_bInitialized) { return(m_tbList != null); } try { m_tbList = (ITaskbarList3)(new CTaskbarList()); m_tbList.HrInit(); } catch (Exception) { m_tbList = null; } m_bInitialized = true; return(m_tbList != null); }
public static void Init() { try { lock (typeof(TaskbarUtils)) { if (_taskbarList == null) { _taskbarList = (ITaskbarList3) new CTaskbarList(); _taskbarList.HrInit(); } } } catch (InvalidCastException) { Win7TaskBarNotSupported = true; } }
private void InitTaskbarList() { if (Environment.OSVersion.Version.Major >= 6 && Environment.OSVersion.Version.Minor >= 1) { try { _taskbarList = (ITaskbarList3) new TaskbarList(); _taskbarList.HrInit(); _taskbarParent = this.Handle; _isWin7TaskBar = true; } catch { _taskbarList = null; _taskbarParent = IntPtr.Zero; _isWin7TaskBar = false; } } }
static TaskbarUtils() { // Window 7 identifies itself as 6.1 var os = System.Environment.OSVersion; var isSupported = os.Version.Major > 6 || (os.Version.Major == 6 && os.Version.Minor >= 1); if (isSupported) { try { TaskbarList = (ITaskbarList3) new CTaskbarList(); TaskbarList.HrInit(); // This method must be called before any other methods } catch { TaskbarList = null; } } }
public TaskbarItemInfo() { if (!DesignerProperties.GetIsInDesignMode(this)) { ITaskbarList taskbarList = null; try { taskbarList = CLSID.CoCreateInstance <ITaskbarList>("56FDF344-FD6D-11d0-958A-006097C9A090"); taskbarList.HrInit(); this._taskbarList = (taskbarList as ITaskbarList3); taskbarList = null; } finally { Utility.SafeRelease <ITaskbarList>(ref taskbarList); } this._overlaySize = new Size((double)NativeMethods.GetSystemMetrics(SM.CXSMICON), (double)NativeMethods.GetSystemMetrics(SM.CYSMICON)); } this.ThumbButtonInfos = new ThumbButtonInfoCollection(); }
public static bool InitializeWin7Taskbar() { if (TaskbarList == null) { try { TaskbarList = (ITaskbarList3) new CTaskbarList(); TaskbarList.HrInit(); } catch { if (TaskbarList != null) { try { Marshal.ReleaseComObject(TaskbarList); } catch { } finally { TaskbarList = null; } } } } return(_IsInitialized = (TaskbarList != null)); }
public TaskbarItemInfo() { if (!DesignerProperties.GetIsInDesignMode(this)) { ITaskbarList taskbarList = null; try { taskbarList = CLSID.CoCreateInstance <ITaskbarList>(CLSID.TaskbarList); taskbarList.HrInit(); _taskbarList = taskbarList as ITaskbarList3; taskbarList = null; } finally { Utility.SafeRelease(ref taskbarList); } _overlaySize = new Size(NativeMethods.GetSystemMetrics(SM.CXSMICON), NativeMethods.GetSystemMetrics(SM.CYSMICON)); } ThumbButtonInfos = new ThumbButtonInfoCollection(); }
public static void UninitializeWin7Taskbar() { //Отключаем вывод прогресса _IsInitialized = false; if (TaskbarList != null) { try { //Сбрасываем прогресс везде где он мог быть (т.е. во всех активных окнах) foreach (System.Windows.Window wnd in System.Windows.Application.Current.Windows) { TaskbarList.SetProgressState(new System.Windows.Interop.WindowInteropHelper(wnd).Handle, TBPF.NOPROGRESS); } } catch { } try { Marshal.ReleaseComObject(TaskbarList); } catch { } finally { TaskbarList = null; } } }
public TaskbarManager() { if (!IsTaskbarSupported) { return; } ITaskbarList _taskbarList = null; try { _taskbarList = (ITaskbarList)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(CLSID.TaskbarList))); _taskbarList.HrInit(); // This QI will only work on Win7. taskbarList = (ITaskbarList3)_taskbarList; _taskbarList = null; } finally { Utilities.SafeRelease(ref _taskbarList); } }
internal void Initialize(IntPtr windowHandle, ITaskbarList3 taskbarList) { this.windowHandle = windowHandle; this.taskbarList = taskbarList; }
public static void UninitializeWin7Taskbar() { //Отключаем вывод прогресса _IsInitialized = false; if (TaskbarList != null) { try { //Сбрасываем прогресс везде где он мог быть (т.е. во всех активных окнах) foreach (System.Windows.Window wnd in System.Windows.Application.Current.Windows) TaskbarList.SetProgressState(new System.Windows.Interop.WindowInteropHelper(wnd).Handle, TBPF.NOPROGRESS); } catch { } try { Marshal.ReleaseComObject(TaskbarList); } catch { } finally { TaskbarList = null; } } }
public static bool InitializeWin7Taskbar() { if (TaskbarList == null) { try { TaskbarList = (ITaskbarList3)new CTaskbarList(); TaskbarList.HrInit(); } catch { if (TaskbarList != null) { try { Marshal.ReleaseComObject(TaskbarList); } catch { } finally { TaskbarList = null; } } } } return (_IsInitialized = (TaskbarList != null)); }
//窗体加载 private void FormMain_Load(object sender, EventArgs e) { //禁用非Windows项(不考虑Windows版Mono) if (Tools.IsRunningOnMono) { tabMain.TabPages.Remove(tabFlvCombine); tabMain.TabPages.Remove(tabAcPlay); chkAutoCombine.Visible = false; } //设置窗口大小 this.Size = CoreManager.ConfigManager.Settings.WindowSize; //设置窗体标题和文字 if (!Tools.IsRunningOnMono) { this.Icon = Resources.Ac; } this.Text = Application.ProductName + " v" + new Version(Application.ProductVersion).Major + "." + new Version(Application.ProductVersion).Minor; //设置托盘文字 notifyIcon.Text = this.Text; //显示托盘图标 notifyIcon.Icon = this.Icon; if (Tools.IsRunningOnMono) { foreach (ToolStripItem item in notifyIcon.ContextMenuStrip.Items) { item.Font = FormBase.MonoFont; } } //设置刷新频率 timer.Interval = CoreManager.ConfigManager.Settings.RefreshInfoInterval; //显示网址示例 StringBuilder sb = new StringBuilder(); sb.AppendLine("AcDown当前支持下载的网站:(网址举例)"); foreach (var item in CoreManager.PluginManager.Plugins) { if (item.Feature == null) continue; if (item.Feature.ContainsKey("ExampleUrl")) { string[] tmp = (string[])item.Feature["ExampleUrl"]; sb.AppendLine(); foreach (var i in tmp) { sb.AppendLine(i); } sb.AppendLine(); } } txtExample.Text = sb.ToString(); //初始化AERO特效 if (DwmApi.IsWindowsVistaOrHigher()) { if (DwmApi.IsWindows7OrHigher()) { //初始化Win7任务栏管理器 taskbarList = (ITaskbarList3)new CTaskbarList(); taskbarList.HrInit(); } //设置提示文字 DwmApi.SetTextBoxTipText(txtSearch.TextBox.Handle, "即时搜索"); //设置listview效果 DwmApi.SetListViewVisualEffect(this.lsv); } else //如果是XP系统 { txtSearch.Text = "即时搜索"; } //选中下拉列表框(下载完成后) cboAfterComplete.SelectedIndex = 0; //加载留言板 LoadFeedbackPanel(); //检查更新 if (CoreManager.ConfigManager.Settings.CheckUpdate) CheckUpdate(); //启动自动保存线程 CoreManager.TaskManager.StartSaveBackgroundWorker(); //加载任务UI foreach (TaskInfo task in CoreManager.TaskManager.TaskInfos) { RefreshTask(new ParaRefresh(task)); } //设置是否监视剪贴板 watchClipboard = CoreManager.ConfigManager.Settings.WatchClipboard; //启动监视剪贴板线程 StartWatchClipboard(); //程序文件名中有acplay if (Path.GetFileNameWithoutExtension(Application.ExecutablePath) .IndexOf("acplay", StringComparison.CurrentCultureIgnoreCase) >= 0) { tabMain.SelectedTab = tabAcPlay; } }
private void InitializeTaskbarList() { ITaskbarList tempTaskbarList = null; try { tempTaskbarList = CLSID.CoCreateInstance<ITaskbarList>(CLSID.TaskbarList); tempTaskbarList.HrInit(); // This QI will only work on Win7. taskbarList = tempTaskbarList as ITaskbarList3; tempTaskbarList = null; } finally { Utility.SafeRelease(ref tempTaskbarList); } }
public TaskbarProgress(IntPtr hwnd) { _handle = hwnd; try { _taskbarList = (ITaskbarList3) new TaskbarInstance(); } catch { } }
private TaskbarProgress(Form form, ITaskbarList3 taskBar) { this.FForm = form; this.FForm.HandleCreated += new EventHandler(this.Form_HandleCreated); this.TaskBar = taskBar; }
/// <summary> /// Filters application's window message loop. /// </summary> /// <param name="m">Current message.</param> /// <returns>This implementation always returns false which allows the message pass.</returns> public bool PreFilterMessage(ref Message m) { // Register for the message here... if (this.messageIdentifier == Win32.WindowMessageNull) { this.messageIdentifier = Win32.RegisterWindowMessage(Win32.TaskbarButtonCreatedMessage); Win32.ChangeWindowMessageFilter(this.messageIdentifier, Win32.MessageFilterAdd); } // ...and receive the message here. if (m.Msg == this.messageIdentifier) { if (this.TaskbarList == null) { this.MainWindowHandle = m.HWnd; this.TaskbarList = (ITaskbarList3)Activator.CreateInstance(Type.GetTypeFromCLSID(Win32.ClassIdTaskbarList)); } // When explorer.exe gets closed and re-opened all Taskbar Extensions are lost, // so we should restore them. if (!this.currentOverlayIcon.IsInvalid || !string.IsNullOrEmpty(this.currentOverlayIconAccessibilityText) || this.currentProgressState != ProgressState.NoProgress || thumbnailBarButtons.Count > 0) { // HACK: Immediately setting Taskbar Extensions won't work. The reason is that // we get the "TaskbarButtonCreatedMessage" a little earlier and the Taskbar // is not ready yet. // 2000 milliseconds is just an arbitrarily selected number which *worked on my machine*. // Use BackgroundWorker to wait 2 seconds and tunnel the real work to UI thread. var worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; worker.DoWork += delegate(object sender, DoWorkEventArgs e) { Thread.Sleep(2000); ((BackgroundWorker)sender).ReportProgress(0); }; worker.ProgressChanged += this.ExplorerRestarted; worker.RunWorkerAsync(); } } else if (m.Msg == Win32.WindowMessageCommand && Win32.HiWord(m.WParam) == Win32.ThumbnailBarButtonClicked) { var buttonId = Win32.LoWord(m.WParam); IList <ThumbnailBarButton> buttons; if (thumbnailBarButtons.TryGetValue(m.HWnd, out buttons)) { foreach (var b in buttons) { if (b.Id == buttonId) { b.FireClickEvent(); break; } } } } return(false); }
internal ThumbnailToolbar(IntPtr hwnd) { this.hwnd = hwnd; taskbar = (ITaskbarList3)Activator.CreateInstance (Type.GetTypeFromCLSID (CLSID.TaskbarList)); taskbar.HrInit (); }
internal ThumbnailToolbar(IntPtr hwnd) { this.hwnd = hwnd; taskbar = (ITaskbarList3)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID.TaskbarList)); taskbar.HrInit(); }
private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (messageIdentifier == Win32.WindowMessageNull) { messageIdentifier = Win32.RegisterWindowMessage(Win32.TaskbarButtonCreatedMessage); Win32.ChangeWindowMessageFilter(messageIdentifier, Win32.MessageFilterAdd); } if (msg == messageIdentifier) { if (taskbarList == null) { taskbarList = (ITaskbarList3)Activator.CreateInstance(Type.GetTypeFromCLSID(Win32.ClassIdTaskbarList)); } Window window; if (windows.TryGetValue(hwnd, out window)) { var taskbarButton = window.GetValue(TaskbarExtensions.TaskbarButtonProperty) as TaskbarButton; if (taskbarButton != null) { taskbarButton.Initialize(hwnd, taskbarList); taskbarButton.AddThumbnailBarButtons(); // HACK: Immediately setting Taskbar Extensions won't work. The reason is that // we get the "TaskbarButtonCreatedMessage" a little earlier and the Taskbar // is not ready yet. // 2000 milliseconds is just an arbitrarily selected number which *worked on my machine*. // Use BackgroundWorker to wait 2 seconds and tunnel the real work to UI thread. var worker = new BackgroundWorker(); worker.WorkerReportsProgress = true; worker.DoWork += delegate(object sender, DoWorkEventArgs e) { Thread.Sleep(2000); ((BackgroundWorker)sender).ReportProgress(0, taskbarButton); }; worker.ProgressChanged += ExplorerRestarted; worker.RunWorkerAsync(); } } } else if (msg == Win32.WindowMessageCommand && Win32.HiWord(wParam) == Win32.ThumbnailBarButtonClicked) { var buttonId = Win32.LoWord(wParam); IList <ThumbnailBarButton> buttons; if (TaskbarButton.ThumbnailBarButtonsCache.TryGetValue(hwnd, out buttons)) { foreach (var b in buttons) { if (b.Id == buttonId) { b.FireClickEvent(); break; } } } } return(IntPtr.Zero); }
//窗体加载 private void FormMain_Load(object sender, EventArgs e) { //设置窗口大小 this.Size = Config.setting.WindowSize; //设置窗体标题和文字 this.Icon = Resources.Ac; this.Text = Application.ProductName + " v" + new Version(Application.ProductVersion).Major + "." + new Version(Application.ProductVersion).Minor; //设置托盘文字 notifyIcon.Text = this.Text; //显示托盘图标 notifyIcon.Icon = Resources.Ac; //设置刷新频率 timer.Interval = Config.setting.RefreshInfoInterval; //设置是否监视剪贴板 watchClipboard = Config.setting.WatchClipboardEnabled; //显示网址示例 StringBuilder sb = new StringBuilder(); sb.AppendLine("AcDown当前支持下载的网站:(网址举例)"); foreach (var item in pluginMgr.Plugins) { if (item.Feature.ContainsKey("ExampleUrl")) { string[] tmp = (string[])item.Feature["ExampleUrl"]; sb.AppendLine(); foreach (var i in tmp) { sb.AppendLine(i); } sb.AppendLine(); } } txtExample.Text = sb.ToString(); //初始化AERO特效 if (Config.IsWindowsVistaOrHigher()) { if (Config.IsWindows7OrHigher()) { //初始化Win7任务栏管理器 taskbarList = (ITaskbarList3)new CTaskbarList(); taskbarList.HrInit(); } //设置提示文字 SendMessage(txtSearch.TextBox.Handle, 0x1501, IntPtr.Zero, System.Text.Encoding.Unicode.GetBytes(@"即时搜索")); //设置listview效果 SetWindowTheme(this.lsv.Handle, "explorer", null); //Explorer style SendMessage(this.lsv.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT + LVS_EX_DOUBLEBUFFER); //Blue selection } else //如果是XP系统 { txtSearch.Text = "即时搜索"; } //选中下拉列表框 cboAfterComplete.SelectedIndex = 0; //检查更新 if (Config.setting.EnableCheckUpdate) CheckUpdate(); //启动自动保存线程 taskMgr.StartSaveBackgroundWorker(); //加载任务UI foreach (TaskInfo task in taskMgr.TaskInfos) { RefreshTask(new ParaRefresh(task)); } //程序文件名中有acplay if (Path.GetFileNameWithoutExtension(Application.ExecutablePath) .IndexOf("acplay", StringComparison.CurrentCultureIgnoreCase) >= 0) { tabMain.SelectedTab = tabAcPlay; } //如果命令行中指定播放acplay ShowFormToFront(); }
public Taskbar() { instance = (ITaskbarList3) new TaskbarInstance(); }
public TaskbarItemInfo() { if (!DesignerProperties.GetIsInDesignMode(this)) { ITaskbarList taskbarList = null; try { taskbarList = CLSID.CoCreateInstance<ITaskbarList>(CLSID.TaskbarList); taskbarList.HrInit(); // This QI will only work on Win7. _taskbarList = taskbarList as ITaskbarList3; taskbarList = null; } finally { Utility.SafeRelease(ref taskbarList); } _overlaySize = new Size( NativeMethods.GetSystemMetrics(SM.CXSMICON), NativeMethods.GetSystemMetrics(SM.CYSMICON)); } // Set ThumbButtons to an empty list so callers can just use the property. ThumbButtonInfos = new ThumbButtonInfoCollection(); }