Designing SideShow gadgets with SCF

Thu, November 30, 2006, 02:35 PM under Windows | Vista | SideShow
Please read the intro to SideShow and the SideShow gadget fundamentals posts as they provide essential background to this post.

Glance data
Your gadget may send to the SideShow device a complex UI and various navigation structures between pages of your UI. Regardless of whether it does that, it must first send what we call glance data. This is just plain text, and it is the text that appears next to your gadget icon when the user browses the gadgets on the device. Examples of glance data for the Windows Media Player, Picture Viewer, Windows Mail and our gadget, you can see in the following screenshot:

Simple Content Format (SCF)
Simple Content Format (SCF) is a simple XML format. It is used to describe pages and the elements on a page (except of course the very first glance data page which we established is plain text) including how everything maps to the buttons on the device. For an overview of SCF, click here.

When we look at the API later, we'll see that we send XML fragments to the device and each XML fragment represents a page.

A page is what is displayed on the SideShow device. For Windows Forms developers, think of this as the equivalent to a Form, except there is no designer and the way we describe what the page contains is via the SCF (which as I said is just XML, in this case an XML element that can contain other XML elements). All pages have a unique content id. Page types can be: content, menu, dialog.

For more, see SDK for body, content, menu and dialog.

Page Items
Elements on a page are the things that end users see on a page on the display (and the things that sometimes the hardware button actions apply to). For Windows Forms developers, think of this as the equivalent to WinForms Controls, except we don't drag and drop them on the page and the way we add them is via the SCF (they are just XML elements). Each element must have a unique content id. There can only be one element per (imaginary) row on the display, a bit like the guidelines for Smartphone development. These elements can be: menu item, button, image, text and blank lines.

For more, see SDK for item (including div), btn, img, txt (including clr and em), br.

SCF-compatible SideShow devices must have at least 5 physical buttons: UP, DOWN, ENTER, BACK and MENU.
- UP and DOWN have a fixed function of navigating up and down a menu page (or a context menu) and scrolling up and down a page that shows a vertical scrollbar.
- MENU shows a fixed built-in context menu [Back, Home] but you can also add your own menu items above the 2 built-in ones.
- BACK returns to the previous page. The BACK button can also be overridden if you desire to do something specific to your page.
- ENTER (aka SELECT aka OK) takes whatever action you have assigned to a menu item. The ENTER button can also be overridden if you desire to do something specific to your page. Also, the ENTER button is what navigates from the glance data page to your first real (SCF) page.

The other two buttons that may be present on an SCF device are LEFT and RIGHT. If they are present, you can also assign to them custom actions relevant to your page (but also provide those on the context menu of the page in case they are missing).

Just FYI, for non-SCF devices you can also have buttons for PLAY, PAUSE, STOP, REW, FF.

Note that in addition to the glance data and in addition to XML representing each page, we can also send images (with their own content id of course) that can be referenced from pages and elements.

Mapping SCF to screenshots
If you followed the links to the SDK that I provided previously, you can read all about what SCF element combinations are allowed, what attributes each element accepts for configuring its appearance/behaviour etc. Let's see how easy the SCF is by mapping the XML to the screens they result in.

1. In the screenshot below you can see a menu page with 6 menu items and a divider line after the 3rd menu item. The content id of this page is 1.

Notice how the XML elements map to the screen elements?
- Most menu items have their imgid set to a content id that represents an image that we have also sent to the device (along with the XML) - the 1st and 3rd menu items do not have this attribute and hence there is no icon next to the text for them.
- Looking at the XML you can tell that the 5th menu item is the default one that would be preselected when this page was loaded.
- The last menu item is disabled (its appearance doesn't show that, but if you hit ENTER after selecting it, nothing happens!).
- The 3rd menu item has an attribute that the others don't: menuid. This means that if we press the MENU button after selecting this menu item, the context menu will include menu items that we specified on another page with a content id of 6. If we press the MENU button on any other menu item, just the default built-in context menu will appear.
- Pressing the UP and DOWN buttons navigates up and down the menu structure.
- Pressing the ENTER button will navigate to the page that has a content id equal to the target of the menu item (see the XML in the screenshot).
- Finally, notice how there is a btn element in the XML. This does not show on the content page, but if we hit the RIGHT button it will navigate to whatever has a content id of 6 e.g. another page.

2. In the screenshot below you can see a content page with 3 text elements and an image element after the 2nd text element. The content id of this page is 2 (so this will appear when on the previous menu page we select the 1st menu item and we hit ENTER).

Notice in the XML how the text attributes align and rgb control the alignment and colour of the text. Notice how the image element references an image with id 21 that we must have also sent down to the device.

3. In the screenshot below you can see another content page with just one text element. The content id of this page is 3.

- This shows wrapping in action for the text element (wrap="1"). If that was not set then the text would have been chopped off. In the XML we also see a button element.
- This is not shown on the screen but if we hit the ENTER button then we would navigate away from this page and on to the page with a content id of 4. If this button element was not in the XML, then hitting the ENTER button would not do anything.
- Observe how the content element also specified the bg attribute pointing to content id 31. Clearly content id 31 must be another image that we sent to the device and it is now set as a background to this page.
- Also notice the menuid attribute of this content page: 6. So we must have defined a menu page with a content id of 6 that will be merged with the default context menu when we press the MENU button.

4. In the screenshot below you can see the final content page of this gadget, with two text elements separated by two blank lines. The content id of this page is 4.

This page demonstrates that text elements can have two other nested elements that allow the same line of text to have mixed colouring and emphasis.

5. In the screenshot below you can see our first (and only) dialog page with two text elements and 3 buttons. The content id of this page is 5.

What we see here is that for dialog pages, the buttons can appear on the screen (except if the button element is assigned to the BACK button). Also, the dialog element has an attribute for an image that it will insert before any other element (something like a banner).

6. In the screenshot below you see a menu page with a single menu item. The content id of this page is 6.

Do you recall above, that content page with id of 3 had specified as its menuid the content id 6? If you press the MENU button on that page, it is the screenshot above that will appear. Our menu item is merged with the default context menu. Note that if you hit the RIGHT button on the first menu page we described, then a full screen menu page will appear with just the single menu item we define here.

Tool support
I encourage you to study the built-in gadgets with the knowledge you gained above and mentally map the elements you see on the screen to the SCF elements. Note that the two games in the simulator are not gadgets (hence they don’t appear in the control panel), instead they are built-in NETMF applications.

There is no tool for designing the UI of the content that your gadget will send down to the device. This is a great opportunity for some smart individual to create one! How hard would it be to have a GUI designer tool that spits out valid SCF? ;-)

Regardless of how the SCF gets created, each page (i.e. each complete body element) has to be sent down to the device. Once sent, you can update it from your gadget periodically or when your data on the PC has changed. As an example, the Media Player gadget sends every 1 second a page with the same content id to the device. The only thing that changes on that page is the progress duration of the song. So how do we send SCF to a SideShow-compatible display?

Native API
There is a native COM API for those still living in that world :-)

If you do want to mess with the ISideShowSession, ISideShowContentManager, ISideShowContent and their friends then here is my top tip: There are 4 different sample SideShow gadgets in the SDK. They all use the COM API so you can explore them. In fact, the Picture Viewer gadget I linked to earlier is pretty much the same as the one in the SDK.

Managed API
That will be shown next time - honest!

SideShow gadget fundamentals

Wed, November 29, 2006, 08:14 AM under Windows | Vista | SideShow
In a previous post I described the new Windows Vista feature: SideShow. Please read that as I will assume that you have done so since it helps if you perceive the terminology and concepts in the same way that I do :-)

Gadget and SideShow device interaction
Remember that gadgets are just applications running on your laptop/PC that send data to a SideShow-compatible device. The gadget does not run on your actual auxiliary display. If you ever read "browse different gadgets on your SideShow display" you can interpret that as "browse the contents that the various gadgets from your laptop send to your SideShow display".

At a high level think of the gadget communications being one of the following (I cover these later):
- Gadget sends a message with content to the device.
- Device may optionally send event back to the gadget (e.g. at a click of a hardware button).
- Gadget may optionally send a notification to the device.

SideShow target
Before you write a SideShow gadget it helps if you have a target to test it on. If you have a real device great, otherwise your best friend is the SideShow simulator, which comes with the Windows SDK. Different SideShow devices will have different capabilities. At the most basic think about a 2-line monochrome text display with no hardware buttons. For this device you can only update it with text. At the other end of the spectrum, devices may understand the iCalendar format so you can send calendar data to it (e.g. the simulator and any full NETMF implementation) and it will interpret it in a rich manner. You can even plug custom content formats for your own SideShow-compatible device. Having said that, most devices will understand the Simple Content Format (SCF) , a device-independent XML format which is core to SideShow (I cover this later). There are APIs for querying at runtime the capabilities of the SideShow target(s) that the user has connected. In everything I write/do, I am going to assume that the target supports the SCF (e.g. the simulator does).

Gadget installation
Usually installation is left as the last thing you learn in any application development, but in this case it is important to understand this first as you will have to install the gadget even on your own dev machine before you do anything (and by "anything" I mean run it, debug it etc).

Gadget installation is simply a collection of registry entries in the right place (think of these as 'gadget metadata'). For example, for the built-in gadgets you can browse their registry entries by navigating to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SideShow\Gadgets. Under there you will find keys that are basically GUIDs. Every gadget has its own application GUID that the developer must generate (I buy mine from uuidgen or guidgen). Under each GUID, there are various values that describe the gadget. The following screenshot shows the registry entries for one of the Outlook 2007 gadgets:

This one shows the Picture Viewer gadget (available from the online gallery):

I also have registry screenshots of the 2 built-in gadgets if you are away from your Vista box right now: Windows Media Player and Windows Mail.

When you deploy your gadget to other computers, you'll have a setup program of some sort to do this for you but for now let's add the registry entries for our gadget manually. Of course, we will install it for the current user only, here: HKEY_CURRENT_USER\Software\Microsoft\SideShow\Gadgets (i.e. same path as above but instead of HKLM we go to HKCU).

First create a key under the Gadgets key with your own guid for your gadget (TIP: at the end of all this, if you want to remove the gadget simply delete this key!).

Under that key, we need to specify the following:
1. Endpoints that we support. I will only support the SCF endpoint: {A9A5353F-2D4B-47ce-93EE-759F3A7DDA4F}
2. FriendlyName. Mine will be "The Moth"
3. OnlineOnly (i.e. content is not cached on device, and computer must be on). Mine will be only online: 1
4. Icon. Nothing for me, so it will get the default.
This is what your registry should look like after doing the above:

If you were doing all of the above in an installation program, you should also run at the command line the following to invoke the Gadget Manager for a better user experience:
Schtasks.exe /run /tn Microsoft\Windows\SideShow\GadgetManager

Try it manually! You’ll see the following screenshot:

If you click on that notification (which is what your users would have seen) it will take you straight to the SideShow control panel. To be honest, you can go straight to control panel after you made the registry modifications and refresh. Your control panel should now look something like the following screenshot:

(my additional device column is irrelevant for now, I’ll talk about that later).

Hopefully you are running your simulator. Check the box next to the gadget under your simulator and notice how the gadget is available to use. See following screenshot of what it should look like on the simulator:

What is left?
So now all we need is a windows process for our gadget. That is easily found: Either create a brand new GUI exe or a console EXE or a blind exe or use an existing exe.

Once we have an EXE, then all we need is to write some code in there that calls the relevant APIs to send content down to the device. Before we do that though let’s think what that content should depict. In other words, what should the UI of our application look like?

NOTE: Where it now says "(No information availalbe)", we should have our first text content. When the user clicks on OK, we should show a full page of more content etc.

This blog post is getting long already so in my next SideShow blog entry we'll design in SCF a few pages with elements, and also see how to send that down to the device using the SideShow API.

UK events: Vista, DDD, FOTB

Wed, November 29, 2006, 12:28 AM under Events
* This Saturday in Reading I'll be supporting DDD4 (so come talk to me at the ATE area). At lunch time there are some activities that you cannot afford to miss out on. Check it out!

* Next Monday 4th and Tuesday 5th, I'll be hanging in the Flash On The Beach (FOTB) conference, here in Brighton (wonder how many of the Brighton bloggers will be there). In case you are wondering what a softie is doing at such an event, just wait and see... exciting stuff coming your way ;-)

* Next Wednesday 6th I am re-running in London my Vista for developers session- native APIs callable from C#. Register here.

Windows SDK

Tue, November 28, 2006, 11:49 PM under Windows | Vista
I say this at every given opportunity (on the blog, in my talks etc) but it is so important I thought I'd dedicate a permalink to it.

If you are a developer and have installed Vista, the first thing you should download is the Windows SDK. It is in there that you can find goodies such as Vista Bridge or the SideShow simulator. There is also plethora of native samples for the 7000 new native APIs in Windows Vista. In addition, you'll find tons of managed samples for .NET v2.0 and .NET Framework v3.0. This makes sense since the Windows SDK is the unification of what was known as the platform SDK and the dotnet SDK. Download it now!

the required ActiveSync proxy ports are not registered

Tue, November 28, 2006, 09:42 AM under MobileAndEmbedded
In the presentation to students that I mentioned here, I thought it was essential to show the smart device project deploy to the actual device (rather than the emulator that I use almost exclusively nowadays) since for newbies to the dev experience, I think it adds a lot of value to see that "this stuff is real".

When prepping for the event I realised that deploying to the device (and not the emulator) was broken on Vista! The error shown in the Error List was:
the required ActiveSync proxy ports are not registered
...this came from the Device Connectivity Component

I had heard the rumour that there are issues with VS2005 development on Vista but other than the one I talked about here, I had never faced *any* issues so this was a first for me! Luckily someone from the VSD team was able to give me a virtual slap and remind me that I should dogfood the workarounds we give to the public: Run VS2005 elevated – doh! I have never had to do that to date... Luckily I received this advice before my presentation earlier today :-)

Blogging this in case anyone else faces this issue (surprisingly no search results for the error above). If you are running WMDC on Vista RTM with VS2005 (without SP1) and you get the error above, run VS elevated (right click and select “Run as administrator”) and the issue goes away... phew!

For other device development issues on Vista see the relevant VSD blog entry.

UAC: Get your links here!

Mon, November 27, 2006, 06:05 AM under Windows | Vista | UAC
Unsurprisingly, after my UAC talk this morning (that I mentioned here), there was a lot of interest and I promised to publish helpful UAC links (in addition to previous mentions on this blog here, here and here). True to my promise, find them below!

1. Understanding the feature before jumping to questions is important. Don't take anything I say as gospel (always a dangerous tactic!) and instead read the official word:

- Short what is it by security MVP on technet.

- UAC for developers (written during Beta 1 but still valid)... and an updated one here.

- UAC for IT Professionals (surprisingly even though I am a developer, I found it quite interesting).

- UAC 91 page document for developers is available for download (a must read).

- The COM Elevation Moniker (all you want to know and more)

2. Now that you understand the feature, start testing your applications as standard user on Windows XP. If it works there, from a UAC point of view, it will work on Vista.

- Standard User Analyzer tool... requires the Application Verifier.

- Get the Application Compatibility Toolkit (ACT) 5.0

3. A lot of the compatibility issues are relevant to installations.

- UAC in MSI blog.

- MSI Patching Technology (tip: explore the other links from the tree on the left).

4. Related topics that I received questions on and promised I'd provide links to
- IE7 Protected Mode on Vista.
- Service changes in Vista.

5. Still got questions? Get them answered using the resources below:
- Even though it is now closed, there is good content on the UAC blog.

- Still active and open to questions is the Vista Security blog.

- When all else fails, first check the msdn forums where you can post any question you like:
* MSDN forum, security for applications.
* MSDN forum, app compat on Vista.

6. For your non-technical, non-developer friend:
For a non-technical plain English version of the UAC story (as plain English as the topic can get) this isn't bad and it also is not an official Microsoft explanation but it makes good reading!

I provided other generic Vista links a while back, and Karl just dropped me a line telling me about their community site that looks interesting: AeroXperience.

Vista: SideShow

Mon, November 20, 2006, 09:14 AM under Windows | Vista | SideShow
I've very briefly mentioned SideShow recently here. My first intro was at MEDC and you can watch that session (APP322) for free (note that Viji is no longer with the team).

"Side what?"
SideShow is a new Windows Vista platform. It enables a variety of auxiliary display devices to be connected to Vista so they can display information from applications running on Vista. In some cases from the display you may control applications running on Windows.

For the information to be exchanged between the display and Windows, developers must write a SideShow gadget (note that this actually runs on the OS, not the display!). The gadget can gather the data from anywhere it wishes and then using the SideShow APIs can send it to the display (more on this later).

"What display(s)?"
So what display are we talking about here? The example that has become synonymous with SideShow (to the extent where most people miss the point and think it is the only SideShow implementation!) is the in-lid attached laptop display. This implements SideShow fully, is connected to Windows via USB (even though it is embedded in the display) and the driver for it ships with Vista. For those that are curious, it is actually running the .NET MicroFramework.

Other display examples would be a phone, a remote control with built-in screen, a keyboard with built-in screen, wearable display devices, music players, digital picture frames, insert your own hardware/display here etc. Photos of examples of these you can see in various articles by searching the web. Remember, these can be connected to Vista with any protocol they want (e.g. bluetooth, IR, proprietary etc).

So, previously, to connect a display to Windows you would have to choose a transport, implement the display-side of things, implement some custom protocol for exchanging data between OS and display, and then finally, implement a custom Windows-side application/driver for gathering and sending the data. SideShow, standardises all of this. In particular, as developers, you just need to learn the SideShow API and call it from your gadget and then whatever other hardware becomes available that supports the SideShow infrastructure will automatically work with your gadget!

It’s a bit like those dual display phones. You don't have to flip the phone open to see what you want; you can just glance at the smaller outer display and get the information you quickly need. Your imagination is the only limit to writing great on-line gadgets. SideShow devices can also work when your computer is off (using cached data)! You can even schedule Windows to wake up periodically so the cached data gets refreshed if that is applicable in your scenario. You could control a powerpoint presentation from your mobile phone (and that can be any phone not just Windows Mobile, as long as there is a SideShow driver for it). You could have small displays on the PC towers in a server room, glance at data on the box there rather than having to remote connect. For other ideas, again just search.

Personally, I can see a lot of killer ideas manifesting themselves on the SideShow platform once more devices become widely available. Be one of the first to get there by extending what your application can do, with a companion SideShow gadget.

"Not quite sure I get it, tell me more"
- A short blurb for SideShow from a consumer perspective can be seen here.
- If you have the time, watch this channel9 video (featuring Dan Polivy) that explains all of the above much better.
- Subscribe to the SideShow blog for more info as it becomes available.

"OK, I am hooked. How do I write gadgets?"
First, you can browse the gadgets and SideShow devices you already have on your Vista machine. Simply go to the "Control Panel", select "Hardware and Sound" and then "Windows SideShow": it should look something like this. Then install the simulator which will make your panel looks something like this.

You can very easily write gadgets (essentially just an exe on your Vista machine). Remember, they are separated from the communication protocol and from the actual target display so you only have to do two things:
1. "Design" your screens (they will be represented in XML)
2. From your gadget, call the API that sends the XML to the device

All you need to know is in the SideShow SDK. Soon I'll show you how to build a simple gadget in C#. Stay tuned :-)

UK events: Vista Security

Mon, November 20, 2006, 12:08 AM under Events
Next Monday 27th, come hear me and my colleague Martin (security guru) talk about some of the new Vista security features (inc. UAC in depth and CardSpace). This free msdn event is in London and you must register here.

If you cannot make it this time, we are repeating the content in Reading (TVP) on 11th December. For that one, register here.

And if by any chance you are a student at Hertfordshire, make sure you come on the 28th to my "Introduction to Developing Windows Mobile Applications". Register here.

Brighton Geek Dinner

Sun, November 19, 2006, 04:19 AM under Events
Just realised (via Simon) that the next Sussex Geek Dinner is this Tuesday at 20:00 in Brighton (a stone’s throw from Hove, where I live!). Sign up here.

I’ll definitely be there doing what I do best (the clue is in the picture on my homepage) ;-)

Changes in Vista RTM

Thu, November 16, 2006, 02:55 PM under Windows | Vista
I’ve only been running the latest RTM version of Windows Version 6.0 (Build 6000) for 4 days and I’ve been trying hard to find new stuff that wasn’t there in RC1 so I could blog about it... Unfortunately, I am not having much luck... all my demos work fine and I can find no new features (unless you count increased speed and stability as features). Of course, I was expecting that, but I was hopeful there would be something new...

So when you install Vista (it is available right now on the msdn subscriptions page) expect almost no new features. I say "almost" because there are a few new desktop backgrounds to choose from, a whole bunch of new icons used for various built-in apps (e.g. mail, sidebar) and a complete new set of sounds (I like them, very subtle... very zen-like) :-)

Also, FYI, I went for an upgrade from RC1 and it worked fine (same is not true for RC2, which is why I did not install that on my main machine ;-)). The only thing the upgrade lost was my Quick Launch icons/apps and some other setting (which embarrassingly I don’t remember now!).

BTW, I also removed Office 2007 B2TR and installed the RTM (you cannot just upgrade that). Absolutely no issues there except I also had to remove some other apps that made the installer think office b2tr was still installed.

.NET Micro Framework Product Sheet

Wed, November 15, 2006, 01:21 PM under MobileAndEmbedded
Ignore if you are not into embedded stuff. If you are, you heard it here first :-).

In the past I've talked about NETMF, and now you can download the product sheet here.

Vista-only features for the managed developer

Mon, November 13, 2006, 08:10 AM under Windows | Vista
UPDATED on 23 June 2007 with some Plus links and new items 13-15.

Following my Vista session at Tech Ed, I was asked to create a blog entry that indexes all my other blog entries that provide supporting material for the topics I covered. I thought I'd also include topics from my UK version of the talk, which is longer. Enjoy!

1. Glass
Follow this link, to find at the end of the first paragraph a bunch of links to my other blog entries.

2. Task Dialog, CommandLink, CommonFileDialog, cue banner plus Vista TreeView and ProgressBar
Follow this link, for my screencast and 5 links to my blog entries plus this and that.

3. Power aware
Follow this link, for my demo code and a few supporting links.

4. Windows Error Reporting & winqual
Follow this link, for my screencast and for 5 links back to my blog entries.

5. Restart & Recovery APIs
Follow this link, for my screencast and for 3 links back to my blog entries.

6. Restart Manager
Follow this link, for my screencast and a link back to my blog entry.

7. Sidebar Gadgets
Follow this link, for my screencast and 3 links back to my blog entries.

8. User Account Control
Follow this link, for a link to another blog and 2 links to my other blog entries (one of which contains a link to a screencast), plus my UAC category.

Follow this link, for some tips on using the RSS platform including 2 links to my other blog entries. NOTE: RSS API is also available on Windows XP if you have installed IE7.

10. Search
Follow this link, for my demo code and links to other relevant useful info.

11. Non-dev
In addition to the Visual Studio demos above, I also demo the new shell enhancements by going through some of the new aesthetic and usability improvements. Finally, I touch upon the new aero guidelines and also the SKUs.

12. Slides
You can download my powerpoints from the UK msdn page [part 1 & part 2], as presented in October 2006. Plus my slides from the UK Vista launch.

If the links above are not enough, here is a collection of Vista developer links I captured back in May (so I can't promise anything about their relevance now that Vista RTMd).

13. SideShow
Watch the video and follow the links form here, and read bottom-up my SideShow category.

14. Preview Handlers
Watch the video and follow links form here, and also see this.

15. Etc
A couple smaller things that are Vista-only accessible from managed code are WinSAT and Control Panel Items.

NDA info: Tech Ed leader board

Thu, November 9, 2006, 04:06 PM under Random
Finally, gave my last talk this morning so I can't wait for the speaker party tonight. I may update this post with some Tech Ed links when I catch up with blogs...

We have a speaker-leader board in the speakers lounge, and some people are taking it very seriously. It shows the top 10 speakers at any given time (it updates after every round of sessions), based on attendee feedback.

On Tuesday I was impressed when Mike Hall bragged that he was in the top 10 list but then realised that there were only 9 sessions delivered at that point (since his session was in the first timeslot on the first day)... I tried to find where exactly his session ranked today and I ended up breaking my PgDn key ;-)

I am here in Barcelona until Sunday so normal business will resume next week.

Tech Ed: Virtual Side

Mon, November 6, 2006, 10:02 AM under Random
As you may have guessed from my previous 4 posts, I am in Barcelona at Tech Ed Europe this week. If you are not here, stay tuned on The Virtual Side... and while you are there, check out my short video interview talking about nothing specific and everything at the same time :-)

Tech Ed session 4

Fri, November 3, 2006, 01:00 AM under Events
In exactly one week, I invite you to attend one of my 4 sessions at Tech Ed Europe in Barcelona.

Fri, Nov 10, 09:00 - 10:15, Room 117

DEV338 Windows Vista for Managed Developers: Beyond .NET 3.0

Windows Vista brings with it a fantastic platform for managed development, namely .NET Framework v3.0 (formerly WinFX). However, there are many new native APIs (obviously not part of .NET 3.0) in Windows Vista. In this talk you will discover how you (a C# or Visual Basic developer using Visual Studio 2005) can take advantage of this new functionality. This demo-driven session, will teach you how to make your application feel like a real extension to the Windows Vista platform (and not like a ported application that just runs on it).

Features covered include extending glass into your own applications, the new TaskDialog, Windows Error Reporting enhancements, Restart API, Recovery APIs, building power-aware apps and the very popular Sidebar gadgets!

(See session DEV325 for additional coverage of Windows Vista native APIs, also from a managed code perspective.)

Tech Ed session 3

Thu, November 2, 2006, 05:45 AM under Events
In exactly one week, I invite you to attend one of my 4 sessions at Tech Ed Europe in Barcelona.

Thu, Nov 9, 13:30 - 14:45, Room 133

DEVWD21 Selecting the best Windows Mobile Technology for your Solution

Come to this highly interactive session to get your questions answered and hear about where Windows Mobile is going. A panel formed from the pool of talented speakers will, for this session only, be available to you all at once. This session is focused on the Windows Mobile developer so ask about tools, technologies, and even device futures to help you plan your development strategy to maximize Windows Mobile in your business.

Tech Ed session 2

Wed, November 1, 2006, 05:43 AM under Events
In exactly one week, I invite you to attend one of my 4 sessions at Tech Ed Europe in Barcelona.

Wed, Nov 8, 13:30 - 14:45, Room 125

DEV226 Realizing the Potential of the Windows Mobile 5.0 Managed Application Programming Interfaces (APIs)

Successful mobile applications are designed for mobile users. We will take a comprehensive look at the managed APIs in Windows Mobile for richly interacting with core device features such as Outlook Mobile and learn how to create smart applications with the State and Notification broker. Come see how developer tasks previously requiring lengthy C++ are now achieved with two lines of managed code! Through Visual Studio 2005, we will demonstrate using the camera to capture pictures and video, the interception and processing of SMS messages, placing phone calls, dealing with system level events, programmatically sending e-mail and SMS messages to name just a few!

(If you are a desktop developer, this is a great follow up session to DEV329.)