zoukankan      html  css  js  c++  java
  • 如何创建一个自定义和定制Windows窗体事件“跳转列表吗

    Jumplist Jumplist 介绍 Windows 7推出了一系列新功能背后,其中一个最突出的特征之一是“跳转列表,所以我们要探索“跳转列表功能,我将向您展示如何处理自定义解雇事件自定义任务“跳转列表。 跳转列表 简单,跳转列表可以调用的上下文菜单在Windows 7任务栏项目,他们可以包含不同(类别)的物品,可以执行不同的任务(MSN messenger或Internet Explorer的跳转列表,您可以检查,以使事情更清晰)。每个应用程序都有自己的“跳转列表默认情况下,因此,即使您的应用程序是不做任何事,你会得到默认“跳转列表包含这三个任务(应用程序名称(在我们的例子中JumplistDemo),销这个程序到任务栏并关闭窗口)。 任何“跳转列表包括的类别,每个类别都有自己的Jumptasks。有两种类型的Jumptasks WindowsAPICodePack支持到现在;JumplistLink(比如笔记本屏幕截图链接)和JumplistSeperator(如油漆和计算器之间的分隔符)。Jumptask代表用户执行一个动作像开放的一个新实例的应用程序或启动另一个程序。这些Jumptasks分组类别称为JumplistCustomCategories(如动作类别的屏幕截图)。 如何为应用程序构建一个定制的“跳转列表 为了能够处理“跳转列表类在Windows窗体,你必须包括这些dll (Microsoft.WindowsAPICodePack.dll和Microsoft.WindowsAPICodePack.Shell.dll)在您的项目。你可以让他们从附加的项目,或者您可以下载的开源库WindowsAPICodePack包括源代码,可以用于访问Windows 7和Windows Vista的特性。 让我们探索如何构建“跳转列表: 隐藏,复制Code

    //declaration of our list, windowHandle is the handle of the window 
    //you want the JumpList to be attached to
    JumpList list = JumpList.CreateJumpListForIndividualWindow
    		(TaskbarManager.Instance.ApplicationId, windowHandle);
    
    //defining a new Custom Category called Actions
    JumpListCustomCategory userActionsCategory = new JumpListCustomCategory("Actions");
    
    //defining the JumpListLink "Clear History"
    JumpListLink userActionLink = new JumpListLink
    	(Assembly.GetEntryAssembly().Location, "Clear History");
    userActionLink.Arguments = "-1";
    
    //add this link to the Actions Category
    userActionsCategory.AddJumpListItems(userActionLink);
    
    //finally add the category to the JumpList
    list.AddCustomCategories(userActionsCategory);

    上面的代码将创建一个新的“跳转列表和一个自定义类别称为行动和它有一个JumpListLink称为清晰的历史。这个链接将被用来发送消息从“跳转到应用程序。我们将看到如何做到这一点后,我们完成了“跳转列表实现: 隐藏,复制Code

    //get the notepad.exe path
    string notepadPath = Path.Combine(Environment.SystemDirectory, "notepad.exe");
    
    //attach it to the JumpListLink
    JumpListLink jlNotepad = new JumpListLink(notepadPath, "Notepad");
    
    //set its icon path
    jlNotepad.IconReference = new IconReference(notepadPath, 0);
    
    //add it to the list
    list.AddUserTasks(jlNotepad);

    我们将做同样的步骤计算器和油漆的链接。只要我们不为这些链接指定一个自定义类别,他们将分组下的任务类别,所以完成构建列表后,我们必须调用Refresh()方法以应用这些设置。你会找到一个全面实施“跳转列表MyJumplist班上的附加项目源代码。 隐藏,复制Code

    list.Refresh();

    你现在可以运行您的应用程序和检查新修改后的“跳转列表。 对自定义事件 附加的项目是一个非常简单的Windows应用程序,它有一个形式,有一些按钮,其中一个是清晰的历史按钮,清空列表框和最近的行动变化标签历史“明确”。这是很容易做的清楚历史表单上的按钮,但从明确历史JumplistLink做同样的事情吗?实际上,我们将无法处理“跳转列表中的任何链接的点击事件,但我们希望得到通知JumplistLink时点击;后一个非常广泛的搜索在这个问题(如何使“跳转列表调用一些方法写在您的应用程序和响应定制事件)我发现最好的方法是“跳转列表之间发送消息和应用程序来处理这些自定义事件(由于这篇文章:Windows 7:跳转列表),所以我们要注册一个消息,点击后将发送清晰的历史联系,该消息将被我们的应用程序通过重写方法。 我包含在解决方案的助手类WindowsMessageHelper从Windows 7:跳转列表。这类调用一些api发送和注册信息,所以我们要做三个步骤为了这个“跳转列表之间发送消息和应用程序。 第一次注册消息通过静态方法RegisterWindowMessage WindowsMessageHelper类: 隐藏,复制Code

    //RegisterWindowMessage registers a window message and returns the message number
    public static int ClearHistoryArg = 
    	WindowsMessageHelper.RegisterWindowMessage("Jumplist.demo.ClearHistoryArg");

    第二,覆盖指向方法和应用您的更改: 隐藏,复制Code

    protected override void WndProc(ref Message m)
    {
    	//if the coming message has the same number as our registered message
    	if (m.Msg == WindowsMessageHelper.ClearHistoryArg)
    	{
    		//clear history
    		ClearHistory();
    
    		//update recent action
    		UpdateRecentAction(RecentActions.ClearHistory);
    	}
    	else
    	{
    		base.WndProc(ref m);
    	}
    }

    第三,实现的方法将向应用程序发送消息: 隐藏,复制Code

    public static void HandleCmdLineArgs()
    {
    	if (Environment.GetCommandLineArgs().Length > 1)
    	{
    		switch (Environment.GetCommandLineArgs()[1])
    		{
    			case "-1":
                            WindowsMessageHelper.SendMessage
    			("Jumplist.demo", WindowsMessageHelper.ClearHistoryArg);
                            break;
    		}
    	}
    }

    在前面的方法中,我们检查额外的命令行参数作为数组的第一个元素是执行程序的名称,这就是为什么我们正在检查长度超过1,记住切换实例的值1条款代表的参数值设置为明确历史JumplistLink在创建“跳转列表时,如果你想添加更多的自定义链接您可以设置他们的论点,在此方法中,不管你想要什么,抓住他们与他们的价值。 参考文献 Windows 7:跳转列表WindowsAPICodePack指向 最后一句 我附上一个项目that充分说明了上面提到的步骤,我希望它对您有用。 历史 这篇文章是我在2010年8月23日写的(Ahmed Said)。 本文转载于:http://www.diyabc.com/frontweb/news5315.html

  • 相关阅读:
    window.onload与$(document).ready()的区别
    性能优化篇
    Redis配置文件参考
    Redis基础介绍&安装部署
    lazyfree 和memory usage源码分析
    Greenplum启动失败Error occurred: non-zero rc: 1的修复
    MongoDB启动文件配置参数详解
    MongoDB添加仲裁节点报错replica set IDs do not match办法
    Greenplum扩容
    MPP架构海量数据分析仓库——Greenplum介绍
  • 原文地址:https://www.cnblogs.com/Dincat/p/13462715.html
Copyright © 2011-2022 走看看