c#实现任务栏添加控制按钮

简介: 原文:c#实现任务栏添加控制按钮Windows7Taskbar的使用 你需要引入3个文件VistaBridgeLibrary.dll、Windows7.DesktopIntegration.dll、Windows7.
原文: c#实现任务栏添加控制按钮

Windows7Taskbar的使用

你需要引入3个文件VistaBridgeLibrary.dll、Windows7.DesktopIntegration.dll、Windows7.DesktopIntegration.Registration.exe

下载地址:http://yunpan.cn/QauRaNK4H3BYW (提取码:fe58)

里面封装好的类:Windows7Taskbar、ThumbButtonManager、ThumbButton、JumpListManager、RegistrationHelper等等

Windows7Taskbar用于注册及初始化,ThumbButtonManager管理ThumbButton,包括创建添加按钮,JumpListManager历史记录,RegistrationHelper关联文件类型

实现步骤:

1.引用

using Windows7.DesktopIntegration;
using Windows7.DesktopIntegration.WindowsForms;

2.初始化(窗体Load时)

Windows7Taskbar.AllowTaskbarWindowMessagesThroughUIPI();
Windows7Taskbar.SetCurrentProcessAppId(
"TaskbarManaged");//里面的参数自定义

3.创建按钮

ThumbButtonManager buttonManager=this.CreateThumbButtonManager();
ThumbButton taskbarBtnPause = buttonManager.CreateThumbButton(101, Properties.Resources.playtask, "播放");
taskbarBtnPause.Clicked += (sender, e) =>
{
  btnPlay_PictureClick(sender, e);
  if (IsPlay == true)//这里判断是否在播放,更新图标
  {
    taskbarBtnPause.Icon = Properties.Resources.playtask;
  }
  else
  {
    taskbarBtnPause.Icon = Properties.Resources.pausetask;
  }
};
buttonManager.AddThumbButtons(taskbarBtnPause);

4.捕获信息

protected override void WndProc(ref Message m)
{   
if (buttonManager != null)   buttonManager.DispatchMessage(ref m);   base.WndProc(ref m);
}

效果图:

需要注意的是:

最多7个button, 没有方法添加或删除一个按钮,在你初始化以后, 只能让它不可用或隐藏.可以调用ThumbBarAddButtons和ThumbBarUpdateButtons方法来控制工具栏.

在窗体的Load时间里添加ThumbButton不会起作用,这就是为什么我不在窗体Load时添加ThumbButton的原因,并且每个ThumbButton都有一个ID,这个ID是你自己分配的,不能重复

遇到的问题:

我给taskbarBtnPause.Clicked添加了一个处理事件,也就是改变图标,结果是当触发该事件时ThumbButton的属性Icon修改了,但是界面没有更新

 

本文地址:http://www.cnblogs.com/liuxiaobo93/p/3914424.html 暮雨冰蓝

 

目录
相关文章
|
C# Windows
C#实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
对于无标题栏窗体,也就是FormBorderStyle等于System.Windows.Forms.FormBorderStyle.None的窗体,点击任务栏图标的时候,是不能象标准窗体那样最小化或还原的。
1235 0
|
C#
全网首发:C#中Form设置$this.Icon,任务栏图标错误的解决办法(bitmap转icon)
全网首发:C#中Form设置$this.Icon,任务栏图标错误的解决办法(bitmap转icon)
310 0
|
C#
C# WPF获取任务栏时间区域的Rectangle
原文:C# WPF获取任务栏时间区域的Rectangle [StructLayout(LayoutKind.Sequential)] public struct WindowRect { public int left; ...
687 0
|
C#
C# WPF获取任务栏时间区域的Rectangle
[StructLayout(LayoutKind.Sequential)] public struct WindowRect { public int left; public int top; ...
830 0
|
Web App开发 C#
C#WinForm程序不不在任务栏显示的处理方法
窗体不在任务栏上显示程序的窗体,c# Form提供了一个 属性值可以很好的解决这个问题 这个属性就是 ShowInTaskbar 在微软的官方声明格式为:  public bool ShowInTaskbar {  get; set; } 及可以通过这个属性来获取或设置一个值 这个属性值的默认值是true 就是要在任务栏上显示窗体,如果我们想不显示就直接在load事件中加上如下
1743 0
如何让C#新建的FORM不在任务栏中显示
    由于之前是用VFP开发的,所以受其影响较深,VFP中有表单集(formset)的概念,即一个表单文件内部可含有多个form,但C#中未发现该功能,并且在程序中每new一个form然后show(),任务栏就会多一个运行框,这样很不雅观,于是我一直找C#中如何实现formset,后来才知道超笨,在C#中每一个Form都有一个叫ShowInTaskbar的属性,只要设为false就不会在任务栏显示了。
924 0
|
API C# Windows
C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow)
原文 C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow) 今天,有网友询问,如何显示和隐藏任务栏? 我这里,发布一下使用Windows API 显示和隐藏 Windows 的任务栏的方法,windows 的任务栏,其实是一个窗口(...
1695 0
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
33 3