# Sunday, November 06, 2005

Triple Whammy

I was delighted to hear the results of the Pocket PC Magazine Best Software Awards. This year the SDF has won in both Pocket PC and Smartphone categories. It's great to be involved in such a successful group project. Also I had a personal win with PocketOutlook In The Hand (now part of the WindowsMobile In The Hand suite) winning in the Smartphone .NET Developer Libraries category, along with 4 other entries reaching the Finalist stage.

Kudos to the Pocket Pc Magazine team and judges for organising the awards, it has been good to see the number of developer entries increase since the developer categories were introduced in 2003, and it will be interesting to see how this trend continues next year with Visual Studio 2005 and .NETCF v2.0 in full swing.

#    |
# Tuesday, November 01, 2005

Bug in OpenNETCF.VisualBasic GetSetting

A fairly obvious bug managed to go unnoticed in the GetSetting method for about 18 months. The problem is fairly straight-forward - the method will never return a value if one is found (if not present it returns the default value you supply).

I've fixed it for the next version, but what are you options for working around the issue with current code:-

  • Use the RegistryKey directly instead - OpenNETCF.Win32.RegistryKey directly matches the .NET v2.0 version so any code you write against this is very portable.
  • Use the attached updated OpenNETCF.VisualBasic.dll. However in order for this method to work you will have to manually copy the dll to your program folder, and make sure your reference points to this version of the dll - 1.4.51101 OpenNETCF.VisualBasic.zip (3.61 KB)
  • Grab the updated code from the Vault and build the code into your own dll/executable and call that instead of the OpenNETCF.VisualBasic version.

It would be interesting to get some feedback on whether people are actually using this VB specific functionality, and if so how useful you find it, and what else you would like to see in future versions...

#    |
# Thursday, October 27, 2005

Visual Studio did what?

You are going to hear this a few hundred times over the next 24 hours, so I may as well add another me too post. Visual Studio 2005 final release is available for download for MSDN subscribers. It's only a matter of days now before it's officially on the shelves.

http://blogs.msdn.com/somasegar/archive/2005/10/27/485665.aspx

First tasks after installing will be to make sure everything which worked on the various builds (My demo laptop is still running July CTP because I got my demo working on that build and was too frightened to break it!) installs and works with the release version. And I think it's going to be a slow download as MSDN downloads are strangely busy this evening :-) So what are the chances it will have finished downloading by the morning?

#    |
# Monday, October 24, 2005

DDD Day 2 Wrapup

I really enjoyed DDD Day 2 on Saturday. I hope my session was useful and can help raise some interest in the possibilities (and challenges) provided by using Bluetooth for peer-to-peer networking. My slides are available to download here:-

BluetoothDDD2.ppt (107.5 KB)

Since I'm new to public speaking I'd really appreciate your feedback on the session so that I can improve my technique. There is an online feedback form on the DDD Day 2 website which I encourage all attendees to spend a few moments on.

It was difficult to choose which sessions to pick as there were a few clashes on my must-see list. Also some of the sessions had a limited capacity and required registration, which filled up very quickly. But those other sessions I did catch were very interesting, the Avalon and AJAX sessions were quite inspiring. Many of the other speakers and attendees are posting their thoughts on the event, there are also some photos.

#    |
# Tuesday, October 18, 2005

Installing .NETCF 2.0 Runtimes

Marcus has posted some instructions on installing .NETCF v2.0 runtimes to a Windows Mobile 5.0 device. Of course you may wish to deploy to Pocket PC 2003 devices too, again it's a RAM install, and you can follow the same basic steps. There are a few points to note:-

  • You can still build an Autorun in .NETCF v1.0 code as all Pocket PC 2003 devices will have at least the RTM release of v1.0 in ROM. Autorun on devices with multiple card slots can be flaky this was improved in v5.0
  • The CAB file for Pocket PC 2003 is much larger (5.1mb) since Pocket PC 2003 doesn't support compressed CAB files. By default you'll find it here:-

C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\wce400\armv4\NETCFv2.ppc.armv4.cab

  • The Autorun code will require modification because it relies on managed ConfigurationManager - you can either P/Invoke DMProcessConfigXML or use an available wrapper (if your device is a Phone Edition device) or OpenNETCF Registry wrapper - works for all PPC2003 devices.
  • You'll need to modify how the Autorun determines the path of the SD card on which the files are contained. One solution is to check for potential storage cards with this code:-

http://www.opennetcf.org/forums/topic.asp?TOPIC_ID=432

  • Place some token file on your SD card and check for it's existence on each returned path, then when you have your SD card folder you can programmatically install the cab file(s). Again I shouldn't need to give you any hints as to where to find a Process class for .NETCF v1.0
#    |
# Monday, October 17, 2005

Use IMessageFilter From a VB .NETCF Project

I posted this to the newsgroup earlier, but figured it was a useful thing to post for future reference. If you want to implement a custom IMessageFilter using OpenNETCF.Windows.Forms.ApplicationEx you have to be aware that VB.NET autogenerates a main proceedure for you if your project startup object is a form. Therefore it will use the Application.Run method and your filter will never be used. Instead you can implement a Sub Main as your startup object and use ApplicationEx:-

Public Shared Sub Main()

ApplicationEx.Run(New MyFormType())

End Sub

 

Then set your Startup object in project properties to your new Sub Main rather than the name of your form class.

#    |
# Monday, October 10, 2005

Developer Developer Developer Day Session

The agenda for DDD Day II has now been published and for some crazy reason folks voted for my Bluetooth with .NET session :-) I'll be covering both the Bluetooth and Object Exchange components of the 32feet.NET suite, I wont touch on the IrDA part, but the code would be almost exactly the same. We'll walk through discovery, client and server connections and sending/receiving objects, hopefully with some audience participation.

It's a great priviledge to be selected along with such a great selection of excellent speakers so I have a lot to live up to! I now have to attempt to make my demonstration application absolutely bullet proof since it inexplicably failed when I gave a short session at the MVP Summit. But it wasn't my code at fault honestly, it worked fine during lunch afterwards (I had several witnesses), obviously a result of the the sinister EM radiation around the Redmond campus... :-)

 

#    |
# Saturday, October 08, 2005

Use Microsoft Bluetooth Stack on Toshiba M200

I was asked how to replace the default Toshiba stack installed on the M200 with the Windows stack (to allow for .NET programmability). Luckily it's easy to do and Toshiba include the necessary bits on the hard disk.

First you need to uninstall the Toshiba stack - Go to Add/Remove programs and select "Bluetooth Stack for Windows by Toshiba"

Next run the C:\TOSHIBA\MS_Bluetooth\BtMon2Inst.exe installer to install the BT monitor.

Finally reboot the machine, the system will detect the radio and install the necessary drivers.

#    |
# Saturday, September 24, 2005
# Wednesday, September 21, 2005

New Personal Area Networking Libraries

The Bluetooth.NET library has now reached it's v1.5 milestone and is now part of the 32feet.NET suite. It joins an updated version of my IrDA library for the desktop which now adds some features (borrowed from the Bluetooth developments) so provides a superset of IrDA functionality on either full or compact frameworks. On top of both these libraries sits Object Exchange, this new library makes it easy to programmatically send and receive files and objects over the Object Exchange (OBEX) protocol. This is designed to provide a similar experience to functionality available for .NET for conducting HTTP requests - ObexWebRequest and ObexListener.

The concept of 32feet.NET is to look at personal area networking for the .NET developer whether your platform of choice is .NETCF on Windows CE or full framework on XP, Tablet PC, XP Embedded or Vista (32 Feet is the range of a standard Bluetooth device, that's 10 metres if you prefer metric). The website has been setup with discussion forums for the current libraries and associated technologies, you'll also find all the class library documentation, and of course the download itself which contains assemblies, source, help documentation and samples.

#    |
# Thursday, September 15, 2005

SDF v1.4 Dlls

A request came up on the newsgroups for just the dlls for the SDF. This could be useful if you are using the VS2005 Beta. Of course if you don't know why you need these or what to do with them, then you can safely ignore this message and grab the package from http://www.opennetcf.org/download.asp?product=SmartDeviceFramework14

OpenNETCF.1.4.zip (479.38 KB)
#    |
# Sunday, September 11, 2005

New MSN APIs to debut Tuesday

[Via MP2KMag.com]

At PDC on Tuesday (13th) Microsoft will unveil a new collection of APIs for it's MSN services to be available from http://msdn.microsoft.com/msn, these will include:-

  • MSN Search Web Services
  • MSN Messenger Activity API (already available here)
  • MSN Virtual Earth API

The last item is interesting. Firstly it sounds like this will be a "proper" documented API, rather than the jscript hacks currently available. Secondly it is being offered free for both commercial and non-commercial use. It is interesting therefore to see how it stacks up against it's big brother Mappoint Web Service for simple commercial applications.

Speaking of which, the new version of Mappoint Web Service (4.0) will also be released at PDC. New features include support for polygons, some new map styles, and further extensions to the mapping coverage.

[Update] MWS 4.0 SDK is available:-

http://www.microsoft.com/downloads/details.aspx?FamilyID=cb5148a9-f09e-4ec8-992f-16478c0b5d9a&DisplayLang=en

#    |
# Friday, September 09, 2005

Developer Day reaches phase 2

The session submissions are all in and it's now your chance to vote for those you want to attend. So pick your top 20 here:-

http://www.developerday.co.uk/ddd/votesessions.asp

Also Sarah has setup a Wiki page to organise a Geek Dinner in Reading after the event, if you are interested in attending check out Sarah's blog post, and sign up on the Wiki.

#    |
# Tuesday, September 06, 2005

Useful new MessageWindow feature

Earlier in the Beta for Visual Studio 2005 I submitted a product suggestion to support a very common scenario with the MessageWindow control, and I was delighted to find that in the July CTP it has been implemented.

The MessageWindow class is provided as a mechanism to receive incoming windows messages and has become a key part of the .NETCF developers interoperability toolbox. .NETCF v2.0 extends the options we have available with new functionality such as support for passing callback functions into native code and COM interop. However there are still times when we will need the humble MessageWindow. One of the first tasks with using the MessageWindow is how to tell the sender where to send the messages. In some cases this involves passing the handle (HWND) of the MessageWindow in via a P/Invoke call, the other common way to identify a MessageWindow is by setting the text and using FindWindow.

This neatly brings me back to the new feature in question. In v1.0 you had to override the WndProc and add your own handler for WM_GETTEXT (and optionally WM_SETTEXT) in order for your MessageWindow to have a caption. .NETCF v2.0 adds the Text property making life that little bit easier. Just set the Text property to something uniquely identifiable for your application, then you can use FindWindow from your native code to get the handle (HWND) of the MessageWindow and start sending messages to it.

#    |