Leaving our mark on the keyboards we create

by Michael S. Kaplan, published on 2007/11/14 10:16 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2007/11/14/6212351.aspx


Way back when MSKLC 1.3 was created, we wanted there to be an easy way that anyone (particularly someone from Product Support) would be able to look at a keyboard layout DLL and tell that it came from MSKLC.

We even imagined that if there was ever some need to service the files due to a security bug or whatever that some easy detection mechanism would be needed....

So we added a string to the version resource entitled Release Information with this info:

The email thread to get this name was one of the more annoying that I had ever been on, it seemed like everyone had an opinion!

And there was one person on the thread (not me) who suggested using a known, commonly used property and one other person (also not me) who felt like it had to be something completely custom that would not overlap what some user might want to do -- remember this argument for later irony since the former person lost and the latter person won!

Anyway, once Vista came along, our custom thing was no longer available:

Damn. What happened?

There were some changes here in Vista. Per Chris Guzak:

If it is an OLE DocFile then you can register the property handler for that file per these docs:

http://msdn2.microsoft.com/en-us/library/bb266532.aspx#systemsupplied_prophandlers

this page contains other info on how to configure the system to present properties for this file type.

If this is not a DocFile and this was depending on the secondary stream property handler that support has been removed in Vista.

Chris

And random, unknown strings in the version resource were also removed (the props Chris refers to above are the ones that adding custom props from the Shell in XP used to be).

Now people getting at them programatically would still find the information, but that was only half the scenario -- there had to be a known property to hook into....

So, for MSKLC 1.4 and Vista a known property get used, instead:

Of course this one works on XP too, and of course the old one is still there for people to use if they were depending on getting it from code or elsewhere:

   

You can still get to both of them by code even in Vista, but that handy use of the Shell file properties dialog is not to be ignored!

Now we have never had to do any kind of update to the keyboard layout DLLs so that requirement has (knock on wsood) stayed theoretical, but more than a few people have had to look in the Shell quickly to see that a keyboard layout DLL was created by MSKLC....

 

This post brought to you by ՛ (U+055b, a.k.a. ARMENIAN EMPHASIS MARK)


# Mihai on 14 Nov 2007 12:34 PM:

Custom properties in VersionInfo are not depending on the secondary streams.

Anyway, the new (Vista) design of the dialog strikes me as bad in other area.

Not only that it removes the version custom properties (supported "since forever"), but also truncates properties that are too long (XP was doing this for File description only, Vista does it for everything).

True, Vista shows me all the info at once, while in XP I had to click on each property.

But at least I was able to see them!

# Michael S. Kaplan on 14 Nov 2007 12:49 PM:

Well, that is a separate issue (not my balliwick, really), but I see your poiont. For the moment I was more focused on what we did in MSKLC. :-)

# Mihai on 15 Nov 2007 12:50 PM:

I think what you did is ok.

Custom fields in version info are there to be used :-)

Now, the Vista redesign might argue that they are not necessarily there to be displayed. And it might be right.

But thing is, it takes away functionality that existed since forever.


Please consider a donation to keep this archive running, maintained and free of advertising.
Donate €20 or more to receive an offline copy of the whole archive including all images.

go to newer or older post, or back to index or month or day