Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. Session Code: CLI308.

Slides:



Advertisements
Similar presentations
Windows 7 Training. Windows ® 7 Compatibility Session 0 Isolation Isolation of Windows 7 Services.
Advertisements

Scott myKB.com, Inc. Session Code: DEV301r.
MIX 09 4/15/ :14 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Session 1.
Feature: Assign an Item to Multiple Sites © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names.
Robert LevyDoug Kramer Program ManagerDevelopment Lead DTL337.
© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or.
Feature: Suggested Item Enhancements – Sales Script and Additional Information © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows.
Feature: Customer Combiner and Modifier © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are.
Samantha Durante Program Manager Microsoft Corporation WUX305.
 Rob Jarrett Software Design Engineer Microsoft Corporation PC23.
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or.

Jeff Neafsey Mobility Architect Microsoft Corporation WMB402.
Siddharth Bhatia Senior Program Manager Microsoft Session Code: DTL301.
Aaron Margosis Principal Consultant Microsoft Session Code: CLI405.
Eric Carter Development Manager Microsoft Corporation OFC324.
Application ID Shortcut Jump List Windows Application ID can “fall back” to a larger scope if needed Default computation.
demo Demo.
Paul Foster Developer Evangelist Microsoft Windows 7 – Top Features for your Applications SESSION CODE: W00T!
Ty Anderson, Damon Armstrong Cogent Company Session Code: OFC325.
Developing with the Windows API Code Pack for.NET Framework.
Windows 7 – A developer’s Guide to Building Killer Windows 7 Applications Bijoy Singhal │ Developer Evangelist, Microsoft India.
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks.
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or.
Arend-Jan Speksnijder Solutions Architect Microsoft Dynamics Lighthouse team Dynamics AX2009 Technical Overview and Demo (DYN301)
Sara Ford Program Manager Microsoft Corporation DPR301.
Warren Stevens-Baytopp Director YoungBlood Consultants Session Code BIN303.

OFC308 Hilton Giesenow Development Manager - 3fifteen Host –
Luke Hoban Senior Program Manager Microsoft Session Code: DTL319.
Mark Michaelis Chief Computer Nerd IDesign/Itron/IntelliTechture DTL313.
Scott Morrison Program Manager Microsoft Corporation Session Code: WUX308.
Errol Schoenfish Director Product Management Microsoft Session Code: DYN304.
Ian Griffiths Principle Interact Software Ltd. Brian A. Randell Senior Consultant MCW Technologies DEV302.
Yochay Kiriaty Senior Technical Evangelist Microsoft® Corporation
Windows 7 Training.
Tech·Ed North America /6/2018 2:20 AM
Microsoft Ajax Taking Ajax to the Next Level
9/11/2018 5:53 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
MDOP: Advanced Group Policy Management 4.0
Tech·Ed North America /14/2018 7:13 PM
Marian Luparu Program Manager Microsoft Session Code: DEV308
Microsoft Visual Studio IDE Futures
Sysinternals Tutorials
Deploying Windows Embedded with Style
Jason Zander Unplugged
Brian Keller Sr. Technical Evangelist Microsoft Session Code: DEV310
12/5/2018 3:24 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Tech·Ed North America /7/2018 9:06 AM
Tech·Ed North America /7/2018 2:51 PM
Ben Robb MVP, SharePoint Server cScape Ltd Session Code: OFS207
12/27/ :01 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Authoring for Microsoft Silverlight 4 with Microsoft Expression Blend
Tech Ed North America /1/2019 2:58 AM Required Slide
File type associations and AutoPlay
Tech·Ed North America /17/2019 1:47 AM
1/17/2019 9:05 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Brian Keller Sr. Technical Evangelist Microsoft Session Code: DEV310
Peter Provost Sr. Program Manager Microsoft Session Code: DEV312
The Windows API Code Pack: Add Windows 7 Features to Your Application
Building Silverlight Apps with RIA Services
Feature: Document Attachment - Flow from Master Records
Tech·Ed North America /25/ :53 PM
Hack-proofing your Clients using Windows 7 Security!
Lap Around the Windows Azure Platform
Code First Development in Microsoft ADO.NET Entity Framework 4.1
The Windows API Code Pack
Tech·Ed North America /7/2019 2:30 PM
Presentation transcript:

Tomislav Bronzin Microsoft Regional Director & MVP CITUS Ltd. Session Code: CLI308

About Tomislav Bronzin About Tomislav Bronzin Microsoft Regional Director & MVP Software Architect – CITUS Ltd. Consultant and trainer on.NET architecture and development, METRO Trainer for Windows 7 and Unified Communication INETA Europe Vice President One of the leaders of Microsoft Community in Europe Recent projects: Competence Manager, Forest Management, Smarthome, Speaker: TechEd Europe, DevDays, DevReach, WinDays, Sinergija, NT Konferenca, Vizija Contact at

Agenda How the taskbar evaluated? Design considerations for the new Taskbar Managed wrappers around native APIs: Windows API Code Pack.NET 4 use WPF Best practices and UI guidelines A word about compatibility

Some Metrics The evolution was justified, but… More than 90% of sessions have fewer than 15 windows More than 70% of sessions have fewer than 10 Non-default taskbar options are used by 0-10% of users

Design Goals For New Taskbar Single launch surface for frequent programs and destinations Easily controllable Clean, noise-free, and simple New opportunities for extensibility

Taskbar Buttons Consolidation Quick launch Notification area icon Desktop shortcut Running application windows RunningRunning Not running Multiple windows and hover ActiveActive

Taskbar Buttons Design considerations Only users can pin applications to the taskbar The icon’s hot-track color is the icon’s dominant color Test icons with high DPI Test with various themes and glass colors

The New Taskbar …and beyond

Windows API Code Pack for Microsoft.NET Framework Managed class library to ease.NET Framework access to Windows 7: Taskbar Jump Lists, Icon Overlay, Progress Bar, Tabbed Thumbnails, and Thumbnail Toolbars, Libraries, Known Folders, Sensor platform, etc and some Windows 7 & Vista features UAC, power management, restart and recovery, network awareness, Aero Glass and more Download it (with samples) from:

Windows API Code Pack for Microsoft.NET Framework Enables access to Windows 7 Taskbar APIs from managed code Contains the TaskbarManager class that wraps parts of the Windows Shell API Static functions to manage Jump Lists, set Application ID, custom switching, thumbnail buttons, and more Requirements: Windows 7 RTM + SDK for Win 7 RTM.NET Framework 3.5 SP1

How Are Windows Grouped? Enter: Application ID It’s a string, not a GUID Limited to 128 characters Naming convention – Company.Product.SubProduct.Version All your application components have it: Process, shortcut, window, taskbar button, document type

Application ID Heuristics of determining the Application ID Application ID ShortcutShortcut Jump List WindowsWindows Application ID can “fall back” to a larger scope if needed Default computation ProcessProcess Document Type Registrations

Setting the Application ID Process-wide – affects all windows in the current process: Window ID – affects only ONE window: TaskbarManager.Instance.ApplicationId = "MS.Taskbar.Concepts.1"; TaskbarManager winTaskbar = TaskbarManager.Instance; winTaskbar.SetApplicationIdForSpecificWindow(winHandle, appID); TaskbarManager winTaskbar = TaskbarManager.Instance; winTaskbar.SetApplicationIdForSpecificWindow(winHandle, appID);

(un)Grouping Windows

Jump List It’s a mini Start menu

Jump Lists A detailed look Destinations (“nouns”) Tasks (“verbs”) Known categories Custom categories User tasks Taskbar tasks Pinned category

Jump Lists Design considerations Surface key destinations and tasks Recent and frequent are free Pinned is also free (if users use it) Respect items the user removes! Addictive: You don’t look for documents anywhere else! You also expect the common tasks to be there

Customizing the Jump List Step 1: Get the free stuff to work Associate your program with the file extension Use common file dialogs Use explicit recent document API RegisterFileAssociations( progId, registerInHKCU, appId, openWith, extensions ); CommonOpenFileDialog =...; dialog.ShowDialog(); JumpList jumpList = JumpList.CreateJumpList(); jumpList.AddToRecent(fileName);

Customizing the Jump List Step 2: Adding tasks What would your user like to do? Launch your application with special arguments? Launch other applications? Tasks are IShellLink objects Rich shortcut semantics including arguments, working directory, icon, and so on.

Customizing the Jump List Step 2: Adding tasks JumpList jumpList; jumpList.AddUserTasks(new JumpListLink(System.IO.Path.Combine(systemFolder, "notepad.exe"), "Open Notepad"); jumpList.AddUserTasks(new JumpListSeparator()); jumpList.Refresh(); JumpList jumpList; jumpList.AddUserTasks(new JumpListLink(System.IO.Path.Combine(systemFolder, "notepad.exe"), "Open Notepad"); jumpList.AddUserTasks(new JumpListSeparator()); jumpList.Refresh();

Tasks and destinations …in a Jump List

Customizing the Jump List Step 3: Do you have categories? Does it make sense to categorize documents? Is frequent, recent, pinned not enough? For example, Inbox, Outbox, Sales, Marketing … Categories contain IShellItem or IShellLink objects These are documents: You need a file association

Customizing the Jump List Step 3: Adding categories category1 = new JumpListCustomCategory("Custom Category 1"); //JumpList.AddCustomCategories(category1); category1.AddJumpListItems(new JumpListItem(path)); jumpList.Refresh(); category1 = new JumpListCustomCategory("Custom Category 1"); //JumpList.AddCustomCategories(category1); category1.AddJumpListItems(new JumpListItem(path)); jumpList.Refresh();

Addin Custom Categories …in a Jump List

Thumbnail Toolbars Remote control from the taskbar

Thumbnail Toolbars Design considerations You get up to seven buttons Can’t add or delete; can hide and disable Tasks are not thumbnail buttons! TasksThumbnail Buttons Entry pointMenu or toolbar Application-wideWindow-specific Can act dynamicallyMust be static

Creating Thumbnail Toolbars private ThumbnailToolbarButton buttonFirst; buttonFirst = new ThumbnailToolbarButton (TaskbarConcepts.Resources.first, "First Image"); buttonFirst.Enabled = false; buttonFirst.Click += buttonFirst_Click; private void buttonFirst_Click(object sender, EventArgs e) { ShowList(0); } private ThumbnailToolbarButton buttonFirst; buttonFirst = new ThumbnailToolbarButton (TaskbarConcepts.Resources.first, "First Image"); buttonFirst.Enabled = false; buttonFirst.Click += buttonFirst_Click; private void buttonFirst_Click(object sender, EventArgs e) { ShowList(0); }

Get More From Taskbar Buttons Overlay and progress icons Consolidate: Uncluttered notification area Provide progress and additional information through the taskbar button It’s free if you use standard progress dialogs

Taskbar Overlay and Progress Design considerations Notification area is now user controlled: Leave yourself out if possible! Use taskbar buttons for custom progress or status information

Taskbar Overlay and Progress The APIs TaskbarManager winTaskbar = TaskbarManager.Instance; // Icon winTaskbar.SetOverlayIcon(icon, "icon1"); // Set normal progressbar winTaskbar.SetProgressValue((int)progressSlider.Value, 100); winTaskbar.SetProgressState(TaskbarProgressBarState.Normal);... // Remove progressbar winTaskbar.SetProgressState( TaskbarProgressBarState.NoProgress ); TaskbarManager winTaskbar = TaskbarManager.Instance; // Icon winTaskbar.SetOverlayIcon(icon, "icon1"); // Set normal progressbar winTaskbar.SetProgressValue((int)progressSlider.Value, 100); winTaskbar.SetProgressState(TaskbarProgressBarState.Normal);... // Remove progressbar winTaskbar.SetProgressState( TaskbarProgressBarState.NoProgress );

Overlay & Progress Icons …in Taskbar Button

Live Thumbnails Live thumbnails: A livepreview Windows Vista ® : One thumbnail per window Windows 7: Grouped thumbnails

Peek Preview (Aero Peek) Live peek without a click

Live Thumbnails and Peek Design considerations Desktop Window Manager (DWM) only talks to top-level windows Child windows need a custom representation The thumbnail might be “too much” or “not enough” What if you could … Test your thumbnails to make sure they are useful If they aren’t, customize them!

Thumbnail Clip (Zoom) Zoom into the important parts!

Customizing Live Thumbnails TabbedThumbnail preview = new TabbedThumbnail(Application.Current.MainWindow, image, offset); TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(prev iew); TaskbarManager.Instance.TabbedThumbnail.SetActiveTab(preview); TabbedThumbnail preview = new TabbedThumbnail(Application.Current.MainWindow, image, offset); TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(prev iew); TaskbarManager.Instance.TabbedThumbnail.SetActiveTab(preview); Customizing Peek Preview TabbedThumbnail preview = TaskbarManager.Instance.TabbedThumbnail. GetThumbnailPreview(image); if (preview != null) preview.InvalidatePreview(); TabbedThumbnail preview = TaskbarManager.Instance.TabbedThumbnail. GetThumbnailPreview(image); if (preview != null) preview.InvalidatePreview();

Summary Quick launch is deprecated Notification area should be kept clean Proper file associations are crucial for most- recently used or most-frequently used and custom categories Users will expect destinations and tasks Should child windows have thumbnails? Bad/Good examples: Bad: Microsoft VS 2008, Office Outlook® 2007 Good: Office Outlook 2010

Sessions On-Demand & Community Resources for IT Professionals Resources for Developers Microsoft Certification & Training Resources Resources Required Slide Speakers, TechEd 2009 is not producing a DVD. Please announce that attendees can access session recordings at TechEd Online. Required Slide Speakers, TechEd 2009 is not producing a DVD. Please announce that attendees can access session recordings at TechEd Online.

Related Content DEV309 The Windows API Code Pack: How Managed Code Developers Can Easily Access Exciting New Windows Vista and Windows 7 Features CLI09-IS For Developers: Common Application Compatibility Issues between Windows XP, Windows Vista, and Windows 7 WCL08-HOL Windows 7: Mitigating Application Issues Using Shims WCL05-HOL Windows 7: Application Compatibility Toolkit 5.5 Required Slide Speakers, please list the Breakout Sessions, TLC Interactive Theaters and Labs that are related to your session. Required Slide Speakers, please list the Breakout Sessions, TLC Interactive Theaters and Labs that are related to your session.

Complete an evaluation on CommNet and enter to win an Xbox 360 Elite!

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. Required Slide