Searched for : taskbar
You know I blog here a lot about Windows 7 goodies including taskbar integration. One of the questions I get pretty often is how to use tasks to communicate with the running app, such as changing your status, sending a new email, that sort of thing. I mentioned in an aside on another post that this requires launching some other application that communicates with the first
instance. If you'd like to do that, it just got a little easier with the release of a "recipe" from Microsoft that packages up this concept and lets you use it with very little extra code. As it says on the Code Gallery page for the recipe: This Taskbar Single Instance Recipe allows developers to easily develop applications that use "Messenger Like" tasks that change the state of the currently running instance, allowing it to react to incoming state-change notifications and act accordingly.
This Recipe includes:
- Native (C++) and managed (.NET) Source code for the Single Instance library
- Well documented native (C++) and managed (.NET) samples
- Documentation
To compile and run the recipe and samples the following items are required:
- Microsoft Visual Studio 2010
- Windows 7 – Note that only the samples require Windows 7.
Yes, this recipe is actually two recipes - one native and one managed, and comes with whitepapers explaining how it's done. I mentioned this in my Tech Ed Europe talk on Advanced Windows 7 development and it's finally released for you to use! Enjoy! Kate
Whenever new stuff appears in the Microsoft universe, native C++ developers can get to it first. That's because they can easily call Windows APIs or COM interfaces or however it's implemented. Managed developers need to wait until the new stuff gets added to the .NET Framework or to a particular managed technology, like WPF. Take taskbar integration, for example: adding tasks and destinations, getting a progress bar or icon overlay on your taskbar icon, and so on. From the very beginning you could interact with the taskbar from native code by making Windows API calls. The Code Pack is a popular managed wrapper from Microsoft that enables those interactions from managed code such as Windows Forms applications. In the early days of Windows 7, WPF developers also used the Code Pack - but now those capabilities are in WPF itself. Does that mean that native developers get nothing new? On release day they gain the ability to call those APIs and that's that? Of course not. Native developers use frameworks and libraries to build their applications, and those frameworks and libraries in many cases are wrappers for Windows functionality. One of those is MFC and you should know that MFC has support for Windows 7 functionality. If that's news to you, then watch my screencast on Channel 9 in which I cover jumplists and overlays with lots of demos. It's just one or two lines of code for each of
these. Users expect their apps to behave like
this. MFC makes it simple.
Kate
Writing samples and demos is tough. You want them to do more than say "Hello World" or draw a red square, but you want them to be simple enough that people can see the "new stuff" you're demoing (WPF, or Windows 7 taskbar integration) or multi-touch) in amongst the real business logic. It would be neat if they did something actually useful, because then you might keep it around on your machine and use it, but most things that are useful are too big to be demos. Well here's a sample that lands in the sweet spot: Tasks.Show. You put in your tasks, things from your ToDo list, along with time estimates, and it keeps track of them and shows them to you. I like this view: It uses touch to let you flick tasks into categories, and has taskbar integration to let you open a specific category, add a task, and so on. All the source code is available so you can see how it's done - it is a demo, after all. You can get more details and screen shots on the Windows Team Blog. Check it out! Kate
A while back, I blogged about an empty jumplist for Windows Explorer and how I fixed it. I've come across another no-jumplist issue, this time in a blog post by Rick Strahl. This app never gets a jumplist, and can't be pinned to the taskbar or start menu either. Believe it or not, the reason is the executable name. I've seen all sorts of people running into issues with UAC elevation being triggered by certain executable names, but this is the first I've heard of the jumplist being taken away because of it. Rick looked into it, found the documentation, even found the Registry key and the list of "magic" words in your executable name (Documentation;Help;Install;More Info;Readme;Read me;Read First;Setup;Support;What's New;Remove) that cause the problem. Nice work! Your options, if you find yourself here, are to rename your exe, or (if, like Rick, you have a lot of stuff depending on that name thanks to COM etc) to change the Registry key so that whatever string you're using isn't the problem.
Kate
At the moment these are announced in the USA only. A full day of client development training for Windows 7, including IE9 and SL OOB. They say: We will look at application compatibility and transitioning your applications to
Windows 7, integrating with the Windows taskbar, developing for IE9, utilizing
the cool functionality in the Sensors and Location Platform so that your
application better responds to its current environment, leveraging the
multitouch capabilities (especially in kiosk scenarios), and creating
Silverlight 4 out of browser applications. This event is a unique opportunity,
partnering classroom learning with hands-on-labs and leveraging experts to
advise you so we can help you “win” with Windows 7.
You bring your own laptop with VS 2010, the Code Pack, the Windows 7 Training Kit, IE9, and Silverlight 4 installed (there are links on the bootcamp page) and do the labs as you go. The training is all free and you'll get hands on experience right while you're there. (It doesn't say so, but my guess is this is all managed code and that the labs are in both C# and VB.) And if there isn't one near you, you can help arrange one! It's all packaged as an event-in-a-box so all you need is a trainer who'll agree to deliver it and a room to hold it in. But check the dates and locations first -- there are over a dozen sessions scheduled already, so perhaps there's one near you. Kate
Windows 7 developers have tons of cool stuff at their (our) fingertips. There's taskbar integration, the new sensors and location platform, access to devices, and more. Silverlight developers, on the other hand, have so far not been able to get to all of that. Well, now you can! The Native Extensions for Microsoft Silverlight leverages the ability of Silverlight to do COM integration, and puts COM Automation around a collection of Windows 7 functionality so that Silverlight developers can use it. How cool is that? Because it's on the Code Gallery, you know it's from Microsoft. The first release, Dec 2nd, covers: - Windows Sensor API - Integrate sensors: Accelerometers, Light sensors, compasses, gyroscopes etc.
- Microsoft Speech API - Text to Speech (Speech Synthesis) and Speech to Text (Speech Recognition)
- Windows Portable Devices API - Enumerate and access content from connected portable devices (cameras, phones, music players, scanners etc.)
- Windows 7 Taskbar Integration - Jump lists, overlay icons, overlay progress display, Thumbnail toolbars etc.
- Webcam Local Encoding and Window Capture - Encode webcam capture into mp4 (H.264/AAC-LC) media - Capture user interface interaction as video
- Window Message Interception - Intercept and act on Window messages sent to the Silverlight OOB host window
This certainly gives Silverlight developers some interesting options! There are some samples that come with the library to show you what you can do, too. You might also be interested in Maor David's blog entry about the library.
Windows 7 introduced a lot of new ways for an application to give information to users. There's a thumbnail which is usually a miniaturized version of the whole application, and possible overlays of icons onto your taskbar icon (like how Outlook shows you have new messages, or Twitter shows there are new tweets) and progress bars under your taskbar icon. There are also cool ways for the user to give direction to or about the application. For example, you can right-click the taskbar to bring up a jumplist and launch another copy of the application, or another application. Right from the beginning, some applications pushed that architecture a bit to use the jumplist to communicate with the application itself. (This requires launching some other application that communicates with the first instance.) For example, Outlook has this jumplist: But this isn't the only way to send a command to an application from the taskbar, and it's not always the right one. Tasks are the right choice if you're willing to take on the extra work to code them up, and furthermore if they make sense even when the app isn't running yet. So in this example, Outlook, if I want to send a new message then I want to send a new message, even if that means needing to launch Outlook to do so. But what about Messenger? Here's how it used to look: Does that make sense when Messenger isn't even running? To me, it doesn't. Here's how Messenger handles that now. There's a much smaller jumplist: How do you set your status? With thumbnail toolbar buttons: Sweet! Much easier to code, easy for the users to understand, and they don't clutter up the place when the app is not running. Nice decision. And keep this in mind for your own Windows 7 applications. Kate
I like to say "If you have a Windows application, it should be a Windows 7 application." By that I mean that you should take advantage of some of the features Windows 7 offers to your apps, and you should give the user the experiences they are coming to expect on Windows 7. You should have a sensible and usable jumplist. If you have a progress bar, you should add ONE WHOLE LINE OF CODE to your app so that progress bar is also overlayed on the taskbar. You should toss your intrusive message boxes and toasts and system tray balloons and use taskbar icon overlays on Windows 7, because that's how users expect to be notified about non emergencies. You should take advantage of restart and recovery, and of being notified about events like going on battery or AC power, or coming online or offline, instead of expensively polling for them. I've written a lot of blog posts and given a lot of presentations on how to do some of those things. Now, someone is offering you a reward for putting those capabilities into your Windows applications. You can be featured on CNET Downloads if you just submit an application that uses at least one of the 13 features they identify. If your app is ready to go, submit it today! If not, why not? Kate
Right after Tech Ed I will embark on a mini-tour of three Canadian cities, while Richard Campbell does two others, to be called the "Building Awesome Apps for Windows 7 Community Tour". The details are on the Canadian Developers blog. First, the dates, times, and register links:
Date | City | Time | | Thursday, Nov 18 | Montréal | 9 AM to 11:30 AM | Register | Thursday, Nov 18 | Montréal | 6 PM to 8:30 PM | Register | Wednesday, Nov 24 | Mississauga | 9 AM to 11:30 AM | Register | Wednesday, Nov 24 | Mississauga | 6 PM to 8:30 PM | Register | Thursday, Dec 2 | Ottawa | 9 AM to 11:30 AM | Register | Thursday, Dec 2 | Ottawa | 6 PM to 8:30 PM | Register | Thursday, Dec 2 | Calgary | 6 PM to 8:30 PM | Register | Friday, Dec 3 | Calgary | 9 AM to 11:30 AM | Register | Tuesday, Dec 7 | Vancouver | 9 AM to 11:30 AM | Register | Tuesday, Dec 7 | Vancouver | 6 PM to 8:30 PM | Register |
Next, descriptions - what are we going to do? We're going to make you better Windows 7 developers, that's what. We'll do some Code Pack coverage (sure, jumplists, taskbar stuff, but beyond that - some of the material from my Advanced Windows 7 Development at Tech Ed Europe will get its Canadian debut) and then dive into touch development. There are abstracts in John's blog post. If you can't get to one of those cities on the appropriate day, never fear - there will be a webcast, too. Please spread the word about the webcast throughout North America, everyone's welcome! I'm looking forward to this tremendously!
Kate
It took a while for the session catalog to update online, but it's official now: DEV311 - Modern Programming with C++0x in Microsoft Visual C++ 2010Session Type: Breakout Session
Track: Developer Tools, Languages
& Frameworks
Speaker(s): Kate Gregory Why wait for the C++ committee to finish the
specification when you can enjoy much of the power of C++0x today! C++0x, the
next C++ standard, is almost upon us and it contains the most important updates
to the language since the mid-90s. It even accepts the existence of multiple
threads for the first time in the history of the language. Needless to say,
these new features bring more expressiveness and power to the native C++
developer. Visual Studio 2010 has added support for some of these key features
in order to enable these modern programming techniques. This session clarifies
what features are in Visual C++ 2010 and what is yet to come. It illustrates how
new constructs such as lambda expressions enable better use of existing
libraries and how your code can be simpler, safer and faster all at the same
time. If you are itching to show off how C++ is one of the coolest languages on
the planet, this talk is for you!WCL322 - The Windows API Code Pack: Add Windows 7 Features to Your
ApplicationSession Type: Breakout Session
Track: Windows Client Speaker(s):Kate Gregory
Accessing new Windows 7 features is a challenge from
managed (.NET) code. The level of interoperability required is out of reach for
many developers. The Windows API Code Pack for the Microsoft .NET Framework is a
sample library you can use in your own projects today that provides access to
new user interface features (taskbar jumplists, libraries, sensor platform and
more) as well as "behind the scenes" features that make your applications more
aware and responsive (restart and recovery, power management and more.) Discover
a shortcut to Windows 7 development for Microsoft Visual Basic and Visual C#
programmers and get started today.
I've done talks with these titles and abstracts before, but I'm not repeating those this time. I'm rejigging the demos pretty substantially and generally rewriting the talks. Register now, and I hope to see you there! Kate
Visual Studio 2010 has pretty cool Windows 7 integration. It gets jumplists right, for example:
But it could do more, and this little add-in adds some fun extras. Here's a taskbar progress bar overlay during a build: (If your build results in errors or warnings, you'll also get a taskbar icon overlay when it's done letting you know about them.) And here we have handy thumbnail buttons - for build, debug, and start without debugging:
Give it a whirl! You can download it from the gallery, or use Tools, Extension Manager, Online Gallery right in Visual Studio and search for Taskbar.
Kate
I've had a chance to watch a number of the videos from the Windows Summit - an online event to help you with Windows development of all kinds. You can learn more about it and register at the main summit site, or check the lists of sessions for developers. The only trick is that once you've registered, you need to go to a different site to actually watch the sessions. Once you know that (and there is a link on the main site) you're all set. I've been getting "Windows 7 for Developers" training since before the first public beta, so I had seen a lot of this before. But several sessions were noticeable improvements from the way that material had been covered in the past, and none of them were poorly done, so I recommend this as a way to learn the concepts that are important to anyone writing for Windows 7, and to learn the advantages that Windows 7 can offer to you as a developer and to your users. I saw three different approaches to code in the sessions I watched: - Full on demos with Visual Studio involved
- Code on the PowerPoint slides, and links to resources that include code demos
- Mention the name of the API but don't show how to use it
I also saw a mix of native and managed code, with some sessions going all the way to the native side of the spectrum and some all the way to the managed side. Most of the sessions mentioned the Code Pack, of course, and call out a link to it in their resources. Even if you know all about the taskbar, maybe you could learn about power management, or background services, using sensors, or writing location aware applications? It's really worth taking a look around.
Kate
There are two services I use not just every day, but many many times a day. One is email and the other is Twitter. Facebook and StackOverflow also get their share of attention, but one thing that sets Twitter apart from Facebook and StackOverflow is the proliferation of clients you can use to access it. You can go to the web page, and do it all in a browser, or you can get any of the many clients available to give you a richer experience. The same is true for email - I can use Outlook or I can use OWA and do it all in a browser. Recently I found myself facing a full week away from home and the office and with no way to get a VPN although I had great internet access. I could listen to CBC radio and watch Canadian TV but I could not bring my email in Outlook. The first day was ok, but not great. I found myself wanting to email people, and I had to open Outlook to poke around and get their email addresses, then paste them into the OWA new message. It was so different from the usual fast-as-thought process of typing the first letter or two of their names and pressing tab. I also had to delete my own spam, because I don't like server-based spam filters and have been really happy with my client-side spam settings in Outlook. The little preview windows weren't as informative as I wanted, my old appointments weren't showing up, there was no to-do bar, and deleting messages or waiting for the new window when I replied to messages just took too darn long. By day 3 I was about insane. Finally my favourite sysadmin (who I was smart enough to marry almost 30 years ago) got Outlook-over-http working for me and I could go back to normal. I was utterly astonished at the effect on my mood that not having my client application had on me, and the effect of getting it back. It was very distinct and unmissable. The browser solution just wasn't good enough for me - and OWA is an amazing feat of engineering, with a way richer UI (delete key works, F keys work, etc) than most browser-based solutions. It got me thinking, once my cheerful mood had let me catch up on some outstanding work, about client apps in general. Why do I only use Twitter in a browser? I've tried a whole number of clients but I always end up back in the browser. I think it's because clients have to be well-designed to work well. If they hog resources, jump in your face too much with focus stealing or balloon tips, or insist on being sized a certain way then they don't get a chance to show you their good side. Twitter is pretty young and I don't think we've really had time to winnow the good client features the way we have with email. With that in mind, and believing a good client really will be a better experience, I've decided to try MetroTwit. I've heard really good things about it and I honestly believe that client apps make more sense for these sorts of information feeds. So far, I like it. I get toast for new tweets, a new tweet counter as a taskbar overlay icon, and such a delicate consumption of my CPU and disk activity that I can't tell if it's running or not. You might also be interested to hear why the developers chose WPF, and what that led to for the team: over just a couple of months, what we’ve achieved with MetroTwit was simply not possible without
WPF considering the few precious midnight hours we put into it on most days.
According to the rest of the team (the real developers), apparently I owe much
to data-binding which I’ve been told is nothing short of a miracle.
If you have a choice of using a browser or using a client app, which do you choose? Is it always the same or does it vary with the business purpose you use it for? While we don't represent our users exactly, we can still learn from our own personal choices and our emotional reactions to software. Kate
I'm recording some videos again (I'll announce when the project is live) and I'm doing it, as I really like to these days, in a bootable VHD. I've got the environment set up just the way I like it, without messing with my day-to-day setup, and as an extra bonus I avoid the distractions that Outlook, Instant Messenger, Skype, and the Favorites menu in my browser have to offer. When I went to record the first video I realized I had forgotten to install Camtasia in the VHD so I quickly downloaded a trial from www.techsmith.com. I got to work recording my video, editing it, and so on. Then I rendered the video. This can take a few minutes, but I don't complain because I know it's doing a lot of work. But I got a great surprise ... this latest version uses the taskbar progress bar overlay, so that I can put the rendering into the background and work on something else full screen while it renders. I can still see at a glance how it's doing, but I don't have to keep the little progress window on top. It's a really nice touch. Then as serendipity would have it I spotted this video on Channel 9 that calls out this and other Windows 7 features in TechSmith products. It's only 9 minutes long, so go and watch it. And if you haven't added Windows 7 features to your client apps yet, why not? It really makes a difference.
Kate
I was just looking up the session codes for my Tech Ed talks next month (my flight to New Orleans leaves a month today, at about this time actually) and spotted something unexpected:
DEV316 | Modern Programming with
C++0x in Microsoft Visual C++ 2010 Session Type: Breakout Session
Track: Developer Tools, Languages
& Frameworks Speaker(s): Kate Gregory Level: 300 - Advanced Why wait
for the C++ committee to finish the specification when you can enjoy much of the
power of C++0x today! C++0x, the next C++ standard, is almost upon us and it
contains the most important updates to the language since the mid-90s. It even
accepts the existence of multiple threads for the first time in the history of
the language. Needless to say, these new features bring more expressiveness and
power to the native C++ developer. Visual Studio 2010 has added support for some
of these key features in order to enable these modern programming techniques.
This session clarifies what features are in Visual C++ 2010 and what is yet to
come. It illustrates how new constructs such as lambda expressions enable better
use of existing libraries and how your code can be simpler, safer, and faster
all at the same time. If you are itching to show off how C++ is one of the
coolest languages on the planet, this talk is for you!
WCL316 | The Windows API Code Pack:
Add Windows 7 Features to Your Application Session Type: Breakout Session
Track: Windows Client Speaker(s): Kate Gregory Level: 300 - Advanced Accessing new Windows 7 features is a challenge from
managed (.NET) code. The level of interoperability required is out of reach for
many developers. The Windows API Code Pack for the Microsoft .NET Framework is a
sample library you can use in your own projects today that provides access to
new user interface features (taskbar jumplists, libraries, sensor platform, and
more) as well as "behind the scenes" features that make your applications more
aware and responsive (restart and recovery, power management, and more.)
Discover a shortcut to Windows 7 development for Microsoft Visual Basic and
Visual C# programmers and get started today.
The first digit carries meaning, but the last two don't. So I don't really know how they both got to be 316. Since I often have trouble remembering my session codes, this should halve the effort for me .
Kate
PS: I checked whether the Brian rule still applies. You can too, by just dropping down the "Speaker" box on the session catalog page. I'm happy to report there are 9 Brians and I reached 9 obviously female names (ignoring Alex, Chris etc) while I was still in the C's. Good news, in my opinion!
Would you like to learn more about developing for Windows 7 in C# or VB? My Pluralsight On-Demand! tutorial has just gone live. 9 of the 11 modules are there now and the last two will be shortly. As the abstract says: This tutorial is aimed at Windows developers (Windows
Forms or WPF) who want to add Windows 7 capabilities to their application. The
emphasis is on providing a helpful and efficient user experience by hooking into
what Windows 7 has to offer. You do not need to know how to interop to native
code or how the Windows 7 features work internally.
The table of contents looks like this: - Light Up on Windows 7
- Windows 7 Jumplists
- Taskbar Overlays on Windows 7
- Taskbar Thumbnails on Windows 7
- Network Awareness on Windows 7
- Power Awareness on Windows 7
- Windows 7 Libraries
- Windows 7 UAC and Manifests
- Partitioning Administrative Tasks for Windows 7
- Known Folders for Windows 7 (under development)
- Scheduled Tasks on Windows 7 (under development)
The course has been a lot of fun to put together. I used the Code Pack to keep the amount of code you write to a minimum. Some of the demos use samples that come with the Code Pack; others use my own code, and you can spot those by the Demos download link. The content is all subscribers-only, but you can get a Guest Pass to check it out. Also, RDs and MVPs get a free subscription, so if you qualify, this would be a great time to use that. Let me know if there are more topics you'd like to see me cover (after I get this one finished, of course!) Kate
MFC had some Windows 7 support starting with the release in between Visual Studio 2008 and Visual Studio 2010. There was a ribbon, for example, though there was no designer. In Visual Studio 2010 there is a ribbon designer, very nice, and tons of UI fun as well. In this post I'd like to focus on some MFC support for taskbar interactions. Any idea what these two lines of code do?
HICON i = LoadIcon(NULL,IDI_WARNING); SetTaskbarOverlayIcon(i,L"Warning");
Here's the visual evidence:
Yep, you load an icon and then you set it as an overlay icon on your taskbar. Nice and simple. How about this:
m_jumplist.InitializeList(); m_jumplist.AddTask(L"http://images.bing.com",L"",L"Bing",L"",0); m_jumplist.CommitList();
You need to know that m_jumplist is a member variable of type CJumpList - a new type in MFC. Here's what that code causes:
This is remarkably little code to be all up to date and modern, isn't it? If you want more info on C++ and Visual Studio 2010, here's a nice article by Sumit Kumar and a Channel 9 talk with Pat Brenner. Enjoy!
Kate
When I show off Windows 7 features and talk about how you can add them to your apps, I usually show a "sad trombone" moment featuring Visual Studio 2008, like this: (I really like jumplists in the start menu, so I thought I would show that in my screenshot instead of the classic right-click-on-the-taskbar jumplist. They're the same.) But this jumplist isn't useful. It isn't all the .sln files I've opened before, or the projects, or anything really except some random bits of XML, icons, schemas, and code files that I dragged in to Visual Studio over the past few months while I had some real solution open.
Now this isn't poor Visual Studio's fault. It was released before Windows 7, before anyone knew that the MRU list kept by the OS itself would be important. As I've explained in presentations before, there's a reason this happens. You see, when you double-click a .docx file, Windows looks up who handles those, launches Word to open the file, and accumulates that file name on the MRU list for Word. Cool. Ditto for .txt and Notepad, etc. But Visual Studio is different, and it's different so that you can have Visual Studio 2005 and 2008 side by side on your machine, and use .sln for the solution file names in both products. You double-click a .sln file and what actually runs is a little launcher that looks inside the .sln file to see if it's a 2005 or 2008 solution and then runs the right Visual Studio and passes the solution to it. Cool. But as a result Windows isn't accumulating what you opened with Visual Studio 2008, it's accumulating what you opened with the little launcher. The jumplist for Visual Studio 2008 therefore contains only things you opened directly with it, and that's not a very useful list.
OK, so I know why. And it's nice to know, btw, that Visual Studio 2010 gets it right. And in my presentations, I usually leave it at that, encouraging you to add the one whole line of code to your app (if you're using Code Pack) so you "don't be that guy".
But wait! What if you want a good jumplist for Visual Studio 2008? Especially if you don't have Visual Studio 2005 installed any more, so you don't care about the whole pick-what-version-to-launch feature? Well, you could try this suggestion from Josh Einstein. I like that he doesn't explain it much and says "If you need more instructions then the hack probably isn’t for you." His instructions, terse as they are, are for 64 bit Windows 7. A commenter supplies the 32 bit version.
I actually haven't tried this yet. Don't want to set my computer on fire or anything . But if you feel like living on the edge, give it a whirl!
Kate
I am so looking forward to seeing New Orleans for the first time. I am pretty sure this is my tenth Tech Ed North America. I have two sessions, one for native C++ developers and one for managed developers who want to use Windows 7 features. No surprise if you read my blog regularly, I suppose.
The C++ talk is called Modern Programming with C++0x in Microsoft Visual C++ 2010 and the abstract reads: Why wait for the C++ committee to finish the specification when you can enjoy
much of the power of C++0x today! C++0x, the next C++ standard, is almost upon
us and it contains the most important updates to the language since the mid-90s.
It even accepts the existence of multiple threads for the first time in the
history of the language. Needless to say, these new features bring more
expressiveness and power to the native C++ developer. Visual Studio 2010 has
added support for some of these key features in order to enable these modern
programming techniques. This session clarifies what features are in Visual C++
2010 and what is yet to come. It illustrates how new constructs such as lambda
expressions enable better use of existing libraries and how your code can be
simpler, safer, and faster all at the same time. If you are itching to show off
how C++ is one of the coolest languages on the planet, this talk is for you!
The Windows 7 one is The Windows API Code Pack: Add Windows 7 Features to Your Application and the abstract is: Accessing new Windows 7 features is a challenge from managed (.NET) code. The
level of interoperability required is out of reach for many developers. The
Windows API Code Pack for the Microsoft .NET Framework is a sample library you
can use in your own projects today that provides access to new user interface
features (taskbar jumplists, libraries, sensor platform, and more) as well as
"behind the scenes" features that make your applications more aware and
responsive (restart and recovery, power management, and more.) Discover a
shortcut to Windows 7 development for Microsoft Visual Basic and Visual C#
programmers and get started today.
Registration is open, so plan to be there! Kate
I've been accumulating a ton of links relevant to Windows 7 development, so let's use some of them up: Mmmm, I feel much more caught up now. Kate
One of the things I did during my break from blogging was to start creating content for Pluralsight. Is there anyone who hasn't heard of Pluralsight? An amazing group of people who want to help everyone learn how to develop on Microsoft platforms. They offer in-classroom training and also a rapidly growing online collection of videos and tutorials called Pluralsight On-Demand! that lets you learn what you want on the spot. Rather than just "here's a one hour video on topic X" it's all set up with searches and indexes to take you straight to the piece you want when you're in a searchy mood. It's really nicely done. Pluralsight is a very MVP-positive group (and RD-positive too, though we're rarer) and has more than a few MVPs on the technical and management team. During the MVP Summit they announced that all MVPs and RDs get a free standard subscription to the entire Pluralsight On-Demand! training
library. That's a heck of a deal and if you're eligible, you should sign up now. I have one how-to reference video published at the moment, on taskbar overlays (icons and progress bars) in Windows 7 with Code Pack. There will be more Kate
The second-last day is drawing to a close and I am getting tired. At Tech Ed Europe I actually attend sessions as well as preparing for my own and attending the various dinners and get-togethers. Throw in some attempt to do actual work rather than pressing pause on all my other projects for a full seven days, and there isn't much time for sleep.
Yesterday was my Code Pack session, featuring the mysterious disappearing slides. Some of you may have noticed a little consternation on my part when I came back from the first demo. Here's what happened. I prepared my slides for this talk following the schedule the organizers asked for, and actually uploaded them in October to be prepared for the attendees. Then one night, just as I was falling asleep, I decided I wanted to add slides that highlighted the actual code in each demo that was specific to the taskbar or the overlay or whatever. The next day, I did just that and I uploaded the deck again. When I got to my room for the tech check, I ran through the deck on the room machine and - hey! my new slides are not in that deck! So I went back to the speaker room (which is about a mile away) and gave them to the nice "powerpoint team" that sits there waiting for all the speakers who ignore the schedule and work on their slides while on the plane. I heard them on the radio pushing the slides to the room.
An hour before my talk, I got to the room, waited while someone else did a tech check, then got set up. I paged through the "new" deck - and the code slides weren't there! Everyone remembered getting new ones from me yesterday. But they weren't there. I pulled a USB stick out and copied the deck from my laptop to the room machine.
And yet, when I did the talk moments later - they still weren't there! Did I double-click the old deck instead of the new? Did I maybe dream the entire thing? Who knows. But here they are now, attached to this post. Interleave these into the deck you got from CommNet, one after each demo. One more day of Tech Ed... one more day of sessions and meeting people. Kate
codeslides.pptx (372.92 KB)
My three favourite Windows 7 features are the taskbar, default printers network-by-network, and boot to VHD. That's cheating really because "the taskbar" covers a lot of ground - jumplists, previews, previews with buttons in them (pausing media player, closing anything), notifications, and progress bar overlays. As you can see by all those links, I've already blogged most of those features - and most of my Windows 7 category is taskbar-relevant. But I haven't yet blogged about boot to VHD and I really need to. The rise of VPC over the last few years has made such a huge difference for me and my tribe. Whether it's a safe place to put a pre-beta (typically the uninstall instructions for CTPs and private builds are "format your C: drive") or a carefully configured TFS or Sharepoint setup, a virtual PC is a great place to play or to demo a technology. The only downsides are performance, and sometimes access to hardware peripherals or networking. Boot to VHD fixes those two downsides, and it's better than having a separate laptop or a slide in/out hard drive (a solution I used years ago on the only laptop I've ever met with that capability.) Not only does it weigh a whole lot less than a separate hard drive , you can access the "host" hard drive while you're booted over to the guest. That means I can work on a demo or presentation and leave the powerpoint or the demo script on my "real" drive and edit them from the guest. The only downside is that it is boot to VHD. Not "put the host machine to sleep and then bring up the guest machine." So you have to be prepared to close all the apps you have open, which for me can take some doing. But that's the only problem. How to do it? I followed the nice clear instructions by Adrian Kingsley-Hughes. Print them out, because you're not going to have access to your machine while you're doing this. Scott Hanselman has a similar set of instructions, but they're not identical and I didn't follow them myself, so if you want to, just remember like he says "This is advanced and may hurt you, your computer, or your cat" so don't complain to either of us if something bad happens. He has nice pictures and some links to useful references too. If you really want to wander into "Danger Will Robinson" territory, take a look at Jon Galloway's post which covers the whole "wait, what about activating my copy of Windows?" story. I'm just ignoring that myself since most of these virtual machines are going to live for a month or so. If you're running Windows 7 Ultimate, and you ever install beta or pre beta software, or otherwise ever use a virtual machine, learn how to do this. You won't be sorry. Kate
I mentioned a long time ago that I have tweaked Windows 7 to my own preferences - the taskbar is 2 or 3 rows high, but I don't combine and I never hide labels. And until recently, I always used small icons. But while preparing both my Tech Ed Europe talk and my launch party demo, it annoyed me that I didn't get the icon overlays. These are incredibly helpful - better than icons in the system tray, balloon tips, focus stealing popups, toast, or other notification techniques. I mentioned to someone that I got them maybe once when I first installed, but never again since. Then just as I said that, I had a thought. A quick search confirmed it - you don't get overlays if you have small icons. And overlays are so useful, I've switched to large icons so I can have them. Not just while demoing, but for my regular life. In the top row I don't have any new mail and I'm available on Messenger. In the middle row, new mail has come in so the Outlook 2010 icon has an overlay. In the bottom row, I'm away on Messenger. It's a very compact way to present notifications. So from now on, large icons for me! Kate
It's true, I signed up for a Windows 7 launch party. So did Chris Dufour. But I didn't have people over to sit on the couch and eat cake while I showed them the cool stuff in Windows 7. We just tossed an hour or so of demo at the start of a user group meeting. I had a one-page demo script which I've put as an attachment on this post. I think different default printers for different networks and a "recent/frequent" jumplist on the Windows Explorer in the taskbar were the most popular features. We also had swag! Here's a picture of mine: Chris had a similar pile, and some books and such as we usually do, so each attendee (and we had a lot more than usual) left with something - mostly with one of those tote bags. I should have held one back to use on my next grocery trip. Aren't they surreal? After my demo (everything in the mini script, though probably not in that order, followed by boot to VHD) Chris took over and led us through CSLA for "real" part of the meeting.
Nice to see the group back in action, and hope to see plenty of folks there next month! Kate
demo.docx (16.42 KB)
There's still time to plan a trip to Boston for the BizSpark incubation week, October 5th to 9th.
As Sanjay blogs, you don't need to be in BizSpark to come - it's an event to help startups learn about Windows 7, how it can make your product better, and how to be a successful entrepreneur. You need to be at least interested in building an app that will include touch, sensor and location, the new taskbar or the new ribbon. That covers a lot of ground! It's a free five day event, though you have to get yourself to Boston and find a place to stay. Up to three people from your firm can attend. Nomination details are on Sanjay's blog, but if you have a BizSpark sponsor you should ask your sponsor to send your nomination to Sanjay. My firm is a BizSpark network partner. Generally speaking, we sponsor our clients - folks we're mentoring - and not people who are contacting us only to get into BizSpark. If you think completely legal free developer software (Visual Studio Team System, SQL, Windows etc) is just the ticket to get your startup started up, you should definitely look into BizSpark. It's a tremendous opportunity. Kate
I am pleased to learn that at least one of the sessions I submitted for Tech Ed Europe in Berlin has been accepted: The Windows API Code Pack: How Managed Code Developers Can Easily Access
Exciting New Vista and Windows 7 Features
Accessing new Windows 7 or Vista features
is a challenge from managed (.NET) code. The level of interoperability required
is out of reach for many developers. The Windows API Code Pack for the Microsoft
.NET Framework is a sample library you can use in your own projects today that
provides access to new user interface features (taskbar jumplists, libraries,
sensor platform and more) as well as "behind the scenes" features that make
your applications more aware and responsive (restart and recovery, power
management, and more.) Discover a shortcut to Windows 7 and Vista development
for Microsoft Visual Basic and Visual C# programmers and how you can get
involved. Now comes the logistics fluffle of getting everything booked, telling "my" teams I'm going, and possibly picking up some other talks or panels or whatnot while I'm there. I'm looking forward to it already! I love Tech Ed Europe - it's such a well run show and the other speakers are a delight to spend time with and learn from. The energy is always good and on top of that the destination is fabulous. I adored Barcelona, so now it is time for Berlin to show me what she's got. What a week we've picked to be there! You can still register at a discount. See you there! Kate
I admit it, I read my referrer logs. I want to see what kinds of searches bring people here, or who is linking to me. I think a lot of the single word searches (women, or shirt, or december) are blog spammers looking for posts to spam on. And some are clearly my name, names of my friends or folks I blog about, conferences I'm speaking at. The majority is things I know about, things for which I want to be your expert source: /clr:pure, windows 7 taskbar, uac manifest file, marshal_as and so on. Yay.
But this one was just plain odd: c++ standard limerick. Really? So I repeated the search, and found this:
When writing a specialization, be careful about its location; or to make it compile will be such a trial as to kindle its self-immolation.
OK, it's not spaced like that in the standard. But who'da thunk it?
Kate
Finally, XP2Win7 is released! I've been watching this one for a long time. It's designed to show off both Windows 7 features and development good practices. The same binaries behave differently on XP and on 7 - on 7 it lights up and shows 7 features like the taskbar or libraries support, as well as Vista features that never got the attention they deserve like Restart and Recovery.
The application itself is a photo viewer and that makes it a natural fit for hooking into libraries, search and organize, and the preview system. It has an intuitive jump list on the taskbar:
It also uses the new Sensor support, Aero glass effects, trigger-started services for backing up images when a USB key is inserted, MMC and Powershell integration, the new Event Tracing for Windows (ETW) and so much more. This will be your roadmap to Windows 7 development. Of course all the code is available, as well as a simple MSI if you'd just like to play with the application a bit and understand what Windows 7 has to offer.
Get your copy and start learning and exploring!
Kate
I sure do love using the Windows 7 taskbar. (I might have blogged a few times about it already.) I have completely internalized the habit of right-clicking on a running app (or a pinned icon for a non-running one) to open a recent document - whether that app is Word, Notepad, PowerPoint, or whatever. I right-click any Messenger conversation to change my status, and I close instances right from the taskbar preview window. I wish Outlook would give me 5 or 6 jumplist items, like New Message and New Appointment, and I really wish Visual Studio would give me some options too. I am looking forward to new releases that will harness this intuitive way of getting users closer to the files they want to open or the things they want to do.
If you want to put taskbar support into your application, and you're not really a video kind of person, perhaps an MSDN Magazine article will do the trick? Yochay and Sasha should be familiar to my readers - you know these guys know their stuff. The article covers both native and managed development, and concludes with this summary:
In this article, we have explored some features of the Windows 7 taskbar, such as application IDs, thumbnail toolbars, overlay icons, progress bars and jump lists. The Windows 7 taskbar provides a clean, sleek launch surface that strongly benefits users. Integrating into this surface will be a primary goal for any application developer for Windows 7.
Using the native Win32 APIs or the managed Windows API Code Pack provides you with a differentiating opportunity to light up your applications on Windows 7. Bear in mind that the taskbar is the first thing users see after logging on to Windows, and you'll want your application to be pinned to their taskbar.
I completely agree. Give it a read.
Kate
Whenever a new OS or major application is released, there's a gap between when people want to start interacting with the functionality and when the .NET Framework supports that interaction. That's only natural - the framework release cycles aren't synced to the OS release cycles. This happened before with Vista, and is happening now with Windows 7. For Vista developers, the Vista Bridge provides easy access from managed code to the fun stuff like Restart and Recovery, Task Dialog, Power Awareness and so on. Stay tuned for announcements about a similar library for Windows 7. In the meantime some slightly more granular wrappers are available for you to use now, covering Taskbar, Libraries, Sensors, and Multi-Touch. Alon's blog has the details and the links.
Kate
A lot of applications like to know what version of the operating system they are running on. Sometimes (especially older applications) it's so they can flat-out refuse to run if you're still on, say Windows 98. This is now frowned on, by the way, and if you want a Windows 7 logo you must not refuse to run based on a version check. Other times (and this is bad too) it's as part of some arcane roll-your-own strategy. For example someone I know planned to work out the default hard code paths for user documents (C:\Documents and Settings\ ... vs C:\users\... ) based on OS versions. This is insane! There's already a function you can call that will get you that path, and it works even if the user has changed it from the default.
But there are still legitimate reasons for version checking. If you're using Vista or Windows7 light-up features like the Task Dialog, Restart and Recovery, or Taskbar Jump Lists, you'd better make sure you're on an OS that supports those features. It's pretty easy from managed code: just call System.Environment.OSVersion.Version.Major and System.Environment.OSVersion.Version.Minor. From native code, GetVersionEx() does the same job. Then you have to do some comparing. That's where things can get weird.
For example, a huge incompatibility bucket for Vista was applications whose code checked that the version was exactly 5.1. If not, it would pop up a message box saying it only ran on XP SP2 or better. I've seen these apps in the wild and I just can't keep from laughing. The error message itself says "or better", and that was presumably the intent, but the code is checking for equality. The magic of >= fixes this "incompatibility" bug in the code, and often these applications don't need any other fixes to make them work on newer OS versions. (That's why the logo people frown on refusing to run. How can you know you won't work on a later OS that doesn't exist yet?)
Even if you grasp the magic of >=, comparing major and minor versions can bite you. Larry Osterman shows us this code:
// Example in C#.
internal bool SupportsTaskProgress() {
if (System.Environment.OSVersion.Version.Major >= 6) {
if (System.Environment.OSVersion.Version.Minor >= 1) {
return true;
}
}
return false;
}
He rightly points out it will return false if the version is 7.0, or 8.0, or any other .0 that's larger than 6. (Yes, Windows 7 returns 6.1 for the version #, that's a long story and well covered elsewhere.)
Version checking is hard. If you can, use a library that does it for you. Vista Bridge, for example, not only wraps up cool new OS features for easy access from managed code, it also does some checking to see if the feature is there for you or not. Don't reinvent wheels. Also, check for the feature rather than the OS if you can. Larry discusses this in his post for Taskbar features. Any feature you plan to use, you should know how to check for. I hope to post some more links and examples on this soon.
Kate
Yochay has been very busy talking to Channel 9 and preparing Windows 7 material for developers. Here's a blog post from early January that lists some taskbar related videos you will want to watch. Screenshots of the taskbar really don't convince you of how much easier it is to use.
Still I can't keep from trying. Let me show you how I close things now. Imagine I have (among other things) a Notepad instance open on my machine. The "old way" to close it, if it doesn't have focus, is to right-click the icon on the taskbar and then choose close. You can still do that in Windows 7:
That's a right click, let go, move the mouse, left click. We know how to do that, and it's a ton less mouse moving than left click, wait while window paints, go on all the way up to the top right, click the red X. But I like this even better:
If I just move the mouse (no clicking) over the icon of one of the Notepad instances, they all show their thumbnails. One of them (the one I moused over) has a little red x showing in the thumbnail. Without clicking, if I move the mouse onto the thumbnail and pause a moment, I get the "peek" where that window appears (in case I can't tell from these tiny little thumbnails) and everything else goes transparent. If I click the little red x in the thumbnail, the instance closes. It's less clicks, it's noticeably faster and smoother.
These are the sorts of things that are making me so glad I put Windows 7 on the prime laptop. I would not go back!
Kate
There's been a reasonable amount of blog talk about the removal of the "quick launch" area from the Windows 7 taskbar. What isn't coming across in the blogs I read is how there is an across-the-board attempt to make the taskbar more useful. Sure, making it easy to flip focus to a background window to see how it's doing is a good idea. But saving you from having to flip focus is a better idea, right? Take a look at this:
It's a piece of my taskbar, and the icon with the green on it is an Internet Explorer download dialog. That's a green overlay progress bar going across it. Here's another a few minutes later:
This is really, genuinely useful. And if you're thinking that getting your own applications to take advantage of this will require you to learn a bunch of API calls and the like - think again! If you have a progress bar control on screen, the overlaying in the taskbar will be done for you automatically on Windows 7. How's that for fun?
Kate
Well, I did it. I put the Windows 7 beta on the laptop I use day in and day out. This machine had Vista on it, and the upgrade was utterly painless. All my software was still there and still working fine when the install was complete. The only glitch was that my built-in touchpad has become invisible in some way. This means I can't configure it to be less sensitive, which in turn means I was "clicking" a lot when I didn't mean to. I disabled it completely (using the 1980s-style UI of the edit-your-settings-on-boot experience) and other than having to carry a mouse with me when I take the laptop somewhere, there's been no other impact.
First impressions: I use jump lists a lot. Enough for a separate blog post. I like everything I noticed, except the default large-icons, no-text, group-everything setting on the taskbar. I fixed that:
(I've cropped it so it doesn't stretch the page)
I've said it before and I've said it again ... you can't really learn a product if you kick up a VPC once in a while but live your life in a different product. Windows 7 is stable enough to live in, and living in it will show what it's really like soon enough. I'm liking what I'm living.
Kate
Also on Code Gallery, in addition to the Vista Bridge, you can find an interesting bit of guidance for those developing Windows 7 applications. This is 43 pages of "what is special about Windows 7" written for developers. Curious about touch and multi touch? Ink? The new taskbar, ribbon, jump lists? Libraries? How to handle previews and thumbnails for your file type? Wondering what Windows Web Services are and how they differ from WCF? (quick answer - WCF is managed, Windows Web Services is native C++ - expect more on that from me when life calms down a little.) It's all in here, with plenty of screenshots. From here you will know where you want to drill more deeply, and you will know the names of features, which is usually key to figuring out how to use them.
http://code.msdn.microsoft.com/Win7DeveloperGuide is a good starting point, and you can join discussions and so on. The Downloads tab will get you the document in Word or XPS format.
Kate
Well, I already knew I was an outlier. And I knew that my number of open windows was part of that eccentricity. But just how much? According to the Engineering Windows 7 blog entry on the taskbar, pretty much everyone peaks at less than 15 open windows, and most people at less than 10:
Here's my taskbar at a typical moment:
It's routinely three high. I've never gone to four high, but I have had more open than that. 40 doesn't seem unusual to me (that's 42 there) and I can find my way around in them easily enough. I am a big-time Alt-tabber of course.
Curious how the taskbar, launch pane, start menu, and so on will be different in Windows 7? Want to understand why some features are the way they are (hint: customers are all different, except in the ways they are the same)? Read the blog!
Kate
Recently I had some major issues with a VPC somebody prepared for me. It came from a DVD and I just could not get it to run on Vista, though it ran great on XP. I was fairly sure that it would run OK if I could just launch VPC elevated and then open the .vmc file, but when I launched VPC (elevated or not) the only evidence of its existence was a taskbar entry (there was no window to be seen) and even that disappeared if I right-clicked on it.
I solved the first problem by granting Users access to the .vmc and .vhd files (I went with Full Control since I had them on a non-shared drive) and then the VPC ran perfectly. That was a better fix than elevating VPC every time anyway. But along the way I discovered how to fix the disappearing console. This post by Steve at EssJae.com shows what you need to do: find the options.xml file in C:\Users\%current_user%\AppData\Roaming\Microsoft\Virtual PC and open it -- make sure the console is not up and you're not running a VPC. Scroll down and find the <console> section and you will see some very large numbers for left_position and top_position. Change them to something normal, like 10 or 100, and save the file and you'll be back in business.
Kate
From Ahmed in South Africa:
Bring up the calendar by clicking on the time in the taskbar. Now click on the month (for example December 2006). You will get a year view. Click on the year and you get a ten year view. Click on this and you get a century view.
This is fun!
You can drill back down any time -- just click on a cell and work your way back to the month of interest.
Kate
I have loved this trick since I saw it and I've just decided it's time to share it. Say you have some application or folder open, but it's minimized or has stuff on top of it, and you want to drag a file to it. Here's how I was taught to do that: grab the thing you're dragging, and drag it down to the taskbar, then wait patiently without letting go. If you let go, Windows will nag you:
So you wait, eventually the window opens up, and then you drag back up from the taskbar before dropping. If you're trying to drag another file into a product like FrontPage and a file is already open, you want to drag all the way to the top menu bar, otherwise the new file will just be inserted into the open document -- hardly ever what what you want.
Next time, try this instead. Get your drag started, and after moving the icon just a few pixels, and without letting go of the mouse button, use your other hand to ALT-TAB. Pop around to the target app and let go of the ALT-TAB, then let go of the mouse button to drop your icon onto the target. This is faster and less frustrating and now I do it all the time. I just checked, and you could do this even in NT 4, if not before. I just never knew, until I saw Scott Hanselman do it in a presentation. Very neat trick.
Kate
© Copyright 2024 Kate Gregory
Theme design by Bryan Bell
newtelligence dasBlog 2.3.9074.18820 | Page rendered at Thursday, 21 November 2024 05:58:07 (Eastern Standard Time, UTC-05:00)
|
On this page....
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|
27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Pluralsight Free Trial
Search
Navigation
Categories
Blogroll
Sign In
|